Как создавать программы на си

Содержание

В предыдущей части нашего занятия мы познакомились вкратце с языком C, а также установили набор инструментов для сборки проектов MinGW.

Теперь давайте попробуем создать какой-нибудь исходный код на C и получить из него функционирующую программу.

Для этого создадим каталог (папку, директорий) где-нибудь, например, с именем MYPROG01 и создадим в данном каталоге файл с именем, например, main.c, так как файлы с исходным кодом принято создавать с расширением .c. Файл мы создадим вот такого содержания

printf ( «Hello, World. rn» ) ;

Читайте также:
В каких программах составляется смета

Это и будет наша первая программа, которая выведет в консоль текст Hello, World. , а также возвратит каретку и переведёт строку благодаря специальным символам ‘r’ и ‘n’.

Что же находится в нашем исходном коде.

Для начала мы подключаем файл stdio.h, в котором находятся прототипы (пока можете не вдаваться в значение этого слова, позже мы с прототипами будем работать сами постоянно) функций стандартной библиотеки C, связанной с вводом-выводом.

Как создать проект на языке си в Microsoft Visual Studio?

Далее идёт функция (в C все подпрограммы обёртываются в функции, об этом мы также поговорим позже) main(), которая является точкой входа в нашу программу и любая программа в C всегда начинает выполняться именно с этой функции. У функции есть имя main, служащее для того, чтобы функцию можно было вызвать откуда-либо, также есть параметры входящие, которые заключены в круглые скобки (в нашем случае функция никаких параметров не принимает), а также один возвращаемый параметр какого-либо типа (в нашем случае int — целочисленный знаковый тип, о типах мы тоже будем говорить позже). Также у любой функции, а наша функция тому не исключение есть тело — это часть функции, заключенная в фигурные скобки. В теле идут друг за другом команды, которые говорят «программе», что она должна делать в данный момент.

printf ( «Hello, World. rn» ) ;

вызывает функцию стандартной библиотеки ввода-вывода printf, которая отправляет в средство стандартного вывода строку. В строке также могут быть использованы символы форматирования, с которыми мы познакомимся позже. Также здесь у нас использованы специальные символы возврата каретки и перевода строки, о которых я писал выше.

возвращает аргумент при выходе из функции. Возвращаем 0, что также является целым числом.

Задача MinGW — преобразовать файл с исходным кодом в исполняемый типа exe.

Откроем консоль (командную строку), находясь в нашем каталоге и, оказывается для нашей операции вполне достаточно одной команды gcc, в параметрах которой мы указываем файл с исходным кодом

В случае успеха у нас появится файл с именем a.exe в текущем каталоге

Проверим работу программы введя в консоли команду с именем исполняемого файла, расширение .exe можно не вводить. Мы получим следующий результат

Создание сборщика мусора | С

Отлично! Наша программа работает.

Также мы можем назначить любое имя для выходного файла в параметре с помощью ключа -o (расширение можно также не вводить). Удалим a.exe и введём команду

У нас появится файл с нужным нам именем

Работоспособность его будет такая же, так как это тот же файл, только с другим именем

Как вообще происходит процесс создания исполняемого файла из файла (файлов) с исходным кодом?

Первый этап — это трансляция, которая превращает исходный код в объектный, и создаётся файл (или несколько файлов) с расширением -o.

Второй этап — это компоновка или линковка. На данном этапе объектный файл (или несколько) компонуется (компонуются) в один исполняемый файл.

Причём первый этап мы можем разбить на несколько этапов, так как трансляция тоже происходит не единовременно. Сначала происходит препроцессинг, где в одно целое собирается весь исходный код, в том числе код из подключенных файлов с помощью директивы #include. Далее идёт создание ассемблерного файла (или нескольких), а уже затем из ассемблерного файла (или нескольких) формируется объектный файл (или несколько).

Давайте попробуем теперь наш исполняемый файл создать в несколько этапов, благо нам это сделать MinGW вполне позволяет.

Удалим файл myprog.exe, чтобы у нас в директории остался лишь файл main.c.

Затем введём вот такую команду, которая нам сформирует файл main.i со всем кодом, в т.ч. подключенным, в результате препроцессинга

Читайте также:
Содержимое памяти программ на основе пзу масочного типа можно изменить

Судя по размеру полученного файла, мы понимаем, сколько кода нам в него добавил препроцессор

Покажу лишь часть кода в этом файле, остальной посмотрите у себя

# 210 «c:mingwincludestdio.h» 3
typedef struct _iobuf
char * _ptr ;
char * _base ;
int _charbuf ;
int _bufsiz ;
char * _tmpfname ;

Далее мы из этого файла можем получить ассемблерный (main.s) с помощью следующей команды

Откроем данный файл и посмотрим его содержимое

Assembly (x86)
. file «main.c»
. def _ _ _ main ; .scl 2; .type 32; .endef
. section . rdata , «dr»
. ascii «Hello, World. 15»
. globl _ main
. def _ main ; .scl 2; .type 32; .endef
. cfi _ startproc
. cfi _ def _ cfa _ offset 8
. cfi _ offset 5 , — 8
movl %esp , %ebp
. cfi _ def _ cfa _ register 5
andl $ — 16 , %esp
subl $16 , %esp
call _ _ _ main
movl $ LC 0 , ( %esp )
call _ puts
movl $0 , %eax
. cfi _ restore 5
. cfi _ def _ cfa 4 , 4
. cfi _ endproc
. ident «GCC: (MinGW.org GCC-8.2.0-3) 8.2.0»
. def _ puts ; .scl 2; .type 32; .endef

Пока нам здесь мало что понятно, но до ассемблера мы когда-нибудь, надеюсь, тоже доберёмся.

Теперь непосредственно компиляция. Для создания объектного файла main.o дадим следующую команду

Имя выходного файла мы не указываем, так как по умолчанию формируется файл с тем же именем, что и исходный, если нужно какое-то другое имя на выходе, то можно использовать ключ -o.

Язык Си. Часть 1. Си = Синтаксис + Стандартная библиотека.

Программирование на си

В прикладном аспекте мы рассматриваем основы языка Си с точки зрения создания полноценных Windows приложений.

На Си для Windows можно достаточно удобно писать:

  • консольные программы
  • программы с оконным интерфейсом
  • без интерфейса вообще
  • драйверы

Наиболее целесообразно создавать для Windows приложения с оконным интерфейсом, так как это позволяет в полном объёме осуществлять передачу и приём данных между приложением и операционной системой. Это реализовано через оконную процедуру и цикл обработки сообщений (об этом подробнее обязательно поговорим позже).

При написании кода при создании Windows приложений можно использовать стандартные функции чистого Си (Стандартная библиотека ANSI Си), а также Win32 API в любом сочетании или отдельно друг от друга.

Классика и современность.

В классическом виде основы языка си — это стандартный набор возможностей и команд языка (операторы if, switch,while, for, break, do while, данные, указатели, функции, переменные, структуры и т.п.) плюс к этому — стандартная библиотека Си — (Стандартная библиотека ANSI Си или т.н. libc). С помощью функций стандартной библиотеки можно достаточно эффективно создавать программы, производящие различные вычисления на уровне математики и простейшего анализа, включая обработку строк. При использовании функций стандартной библиотеки Ввод и вывод данных можно реализовать только с использованием консоли либо текстового файла.

С появлением Windows консоль заменили окна. В операционной системе появились свои встроенные функции, сгруппированные в библиотеки *.DLL (Dynamic Link Library). Возможности увеличились до невероятных размеров. В полном объёме функции, хранящиеся в системных длл-ках не известны наверное, даже Microsoft (шутка). Вместе с тем, для совместимости программ, стандартная библиотека Си до сих пор уютно живёт в Windows 10, однако лучше всё же использовать родные функции Windows (Win32 Api).

Из вышесказанного можно сделать вывод о том, что язык Си в системе программирования Windows в настоящее время наиболее актуален с точки зрения использования прежде всего синтаксиса. Функции стандартной библиотеки можно заменить библиотеками Windows.

Для полноты раскрытия вопроса, необходимо отметить, что в Unix подобных системах (Linux) ситуация несколько иная. Стандартный, классический Си с его родными библиотеками более востребован.

Более подробно о возможностях стандартной библиотеки ANSI Си прочитаете в Википедии.

Основы языка Си - консольное приложение

Основы языка Си - Windows интерфейс

Основы языка Си - написание драйверов

Выводы.

Основы языка Си в классическом понимании представляют собой синтаксис и набор стандартных функций (ANSI Си). В программировании для Windows используется синтаксис языка Си и функции самой Windows (Win32 API). Вышеизложенное не исключает применение в одной программе и функций стандартной библиотеки Си и библиотек Win32 API (считается плохим тоном смешивать оба варианта в одном проекте).

Читайте также:
Бунеев бунеева какая программа

В следующей статье мы рассмотрим создание простейшего консольного приложения на языке Си с использованием возможностей Pelles C. При этом мы будем применять как стандартные функции библиотеки Си, так и Win32 API.

Updated: 28.04.2021
Categories: Язык программирования Си Tags: обучение программированию, язык си

Обзор и описание языка программирования Си

Обзор и описание языка программирования Си

Си — язык программирования общего назначения, который очень известен своей эффективностью, экономичностью ресурсов и переносимостью на других программные платформы. Все эти преимущества обеспечивают качество разработки программного обеспечения, их быстроту и сравнительно небольшой размер. Программы написанные на Си по скорости работы можно даже сравнить с программами написанными на языке ассемблера.

Несмотря на то, что Си не включает в себя встроенные компоненты по работе с вводом-выводом, распределению памяти, управлению процессами, его системное окружение позволяет подключать объектные модули с такими функциями. Этого вполне достаточно, чтобы разрабатывать программное обеспечение абсолютно любого уровня, как небольшие программы, так и комплекс сложных программных систем.

Языковые особенности Си позволяют делать программы независимыми операционной системы или платформы.

Наиболее важными особенностями языка программирования Си являются:

  • обеспечение полного набора операторов структурного программирования
  • большой набор операций, в том числе операции прямой трансляции в машинный код
  • поддержка указателей на переменные и функции

Указатели в Си позволяют создавать указатели и ссылаться на объекты таким же путем, как это делает компьютер. Арифметика указателей осуществляет доступ и манипуляции с адресами памяти. Си имеет препроцессор для обработки текстовых файлов перед компиляцией. Препроцессор может быть использован для любых текстовых файлов.

Таким образом, Си это гибкий язык программирования, позволяющий писать качественные программные продукты с высокой скоростью работы.

Синтаксис

В программах написанных на Си используются множество символов и множество представимых символов. Множество символов — это буквы, цифры, знаки пунктуации. Комбинирование этих символов создают конструкции языка. Множество представимых символов — это подмножество множества символов, состоящее из всех букв, цифр, символов которые можно представить как графически отдельные символы.

Программный код на Си может содержать только символы которые определены для множества символов. Лишь только комментарии, символьные константы и строковые литералы могут содержать любой символ. Другие, неверно используемые символы означают ошибку для компилятора Си, о чем он будет выводить сообщать.

Буквы и цифры

Множество символов Си включает в себя малые и большие буквы английского алфавита и 10 арабских цифр:

  • большие английские буквы: A B C D E F G H I J K L M N O P Q R T U V W X Y Z
  • малые английские буквы: a b c d e f g h i j k l m n o p q r t u v w x y z
  • десятичные арабские цифры: 0 1 2 3 4 5 6 7 8 9

Цифры и буквы используются для наименования ключевых слов, констант, идентификаторов.

Символы пробела

Язык Си включает пробельные символы — пробелы, перевод строки, табуляцию, новую страницу, возврат каретки, вертикальную табуляцию, новую строку. Пробельные символы разделяют символы программного кода друг от друга.

Специальные символы и знаки пунктуации

Специальные символы и знаки пунктуации в Си используются для выполнения совершенно различных задач. Они могут использоваться в строковых литералах, комментариях, константах.

ESC-последовательности

ESC-последовательности — специальные символьные комбинации, представляющие собой пробельные символы и неграфические символы в строках. Они используются для таких действий, как возврат каретки и табуляции и т.п.

Операции

Операции в Си как и в любом другом языке программирования представляют комбинации символов для работы с разными величинами.

  • Логическое НЕ: !
  • Побитовое дополнение: ~
  • Сложение: +
  • Вычитание, отрицание: —
  • Умножение: *
  • Деление: /
  • Остаток: %
  • Сдвиг влево:
  • Сдвиг вправо: >>
  • Меньше:
  • Меньше или равно:
  • Больше: >
  • Больше или равно: >=
  • Равно: ==
  • Не равно: !=
  • Побитовое И: >=
  • Сдвиг влево с присваиванием: <
  • Побитовое И с присваиванием: https://unetway.com/blog/obzor-i-opisanie-azyka-programmirovania-si» target=»_blank»]unetway.com[/mask_link]
Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru