Статьи

Введение в C

Вступление

C — это язык структурированного программирования общего назначения. Его инструкции состоят из терминов, которые напоминают алгебраические выражения, дополненные определенными английскими ключевыми словами, такими как if, else, for, do и while. В этом отношении он напоминает языки структурированного программирования высокого уровня, такие как Pascal и Fortran. C также содержит дополнительные функции, которые позволяют использовать его на более низком уровне, тем самым устраняя разрыв между машинным языком и языком высокого уровня. Эта гибкость позволяет использовать C для системного программирования, а также для разработки приложений. Поэтому C называется языком среднего уровня.

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

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

История C:

C был разработан в 1970-х годах Деннисом Ритчи в Bell Telephone Laboratories , Inc. (теперь часть AT & T). Это продукт двух более ранних языков, называемых BCPL и B, которые также были разработаны в Bell Laboratories.

Комбинированный язык программирования (CPL) был разработан в Кембриджском университете в 1963 году с целью разработки общего языка программирования, который можно использовать для решения различных типов задач на различных аппаратных платформах. Однако он оказался слишком сложным, трудным для изучения и трудным для реализации. Впоследствии в 1967 году Мартином Ричардсом было разработано подмножество CPL, Basic CPL (BCPL) , включающее только основные функции. Однако он не был признан достаточно мощным. Примерно в то же время Кен Томпсон из Bell Labs разработал еще одну подгруппу CPL, язык B. Однако и этого оказалось недостаточно. Затем, в 1972 году, Деннис Ритчи из Bell Labs разработал язык C, включающий лучшие функции BCPL и B.

C в основном ограничивался использованием в Bell Labs до 1978 года, когда Брайан Керниган и Ричи опубликовали окончательное описание языка. Описание Кернингхана и Ричи C обычно называют «K & R C» .

После публикации «K & R C» специалисты по компьютерам, впечатленные многими желаемыми возможностями C, начали продвигать использование C. К середине 1980-х популярность C стала широко распространенной — многие компиляторы и интерпретаторы c были написаны для компьютеров были разработаны все размеры и многие коммерческие прикладные программы. Более того, многие коммерческие программные продукты, которые изначально были написаны на других языках, были переписаны на C, чтобы воспользоваться его эффективностью и мобильностью.

Ранние коммерческие реализации C немного отличались от первоначального описания Кернингхана и Ричи, что приводило к незначительной несовместимости между различными реализациями. В результате Американский национальный институт стандартов (комитет ANSI X3J11) разработал стандартизированное определение C. Практически все коммерческие компиляторы и интерпретаторы придерживаются стандарта ANSI. Многие предоставляют дополнительные функции самостоятельно.

C и системное программирование:

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

  • C — это машинно-независимый и легко переносимый язык.
  • Это легко учиться; в нем всего 28 ключевых слов.
  • Он имеет полный набор операторов для легкого решения деловых и научных задач.
  • Пользователи могут создавать свои собственные функции и добавлять в библиотеку C для выполнения различных задач.
  • Язык C позволяет манипулировать битами, байтами и адресами.
  • Имеет большую библиотеку функций.
  • C работает с теми же типами данных, что и компьютер, поэтому генерируемые коды работают быстро и эффективно.

Структура программы C:

Каждая программа на С состоит из одного или нескольких модулей, называемых функциями. Одна из функций должна называться основной . Программа всегда начинается с выполнения основной функции, которая может получить доступ к другим функциям. Основная функция обычно, но не обязательно расположена в начале программы. Группа операторов в main () выполняется последовательно. При обнаружении закрывающей скобки main () выполнение программы останавливается и управление возвращается операционной системе.

Любые другие определения функций должны быть определены отдельно, перед или после main (). Каждая функция должна содержать:

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

2. Тип возврата, записанный перед именем функции. Он обозначает тип данных, которые функция вернет в программу.

3. Список объявлений аргументов , если аргументы включены в заголовок.

4. Составной оператор , который включает в себя остаток функции.

Аргументы (также называемые параметрами) являются символами, которые представляют информацию, передаваемую между функцией и другими частями программы.

Каждое составное утверждение заключено в пару фигурных скобок {}. Скобки могут содержать одно или несколько элементарных выражений (называемых выражениями выражений ) и других составных выражений. Таким образом, составные операторы могут быть вложены друг в друга. Каждое выражение должно заканчиваться точкой с запятой (;).

Комментарии (замечания) могут появляться в любом месте программы, если они заключены в разделители / * и * /. Комментарии используются для документирования и полезны для определения основных функций программы или для объяснения логики различных функций программы.

Компоненты языка C:

Существует пять основных компонентов языка C:

1. Набор символов: C использует прописные буквы от A до Z, строчные буквы от a до z, цифры от 0 до 9 и некоторые специальные символы в качестве строительных блоков для формирования базовых элементов программы (например, констант, переменных, выражений, операторов и т. Д.). ).

2. Типы данных: язык C разработан для обработки пяти основных типов данных, а именно: символьные, целые, с плавающей точкой, double и void; и вторичные типы данных, такие как массив, указатель, структура, объединение и перечисление.

3. Константы: константа является объектом с фиксированным значением, который не меняет своего значения в течение выполнения программы.

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

5. Ключевые слова: ключевые слова — это зарезервированные слова, которым в языке Си назначены определенные значения. Ключевые слова не могут быть использованы в качестве имен переменных.

Компоненты языка Си будут обсуждаться более подробно в следующих статьях. Этот раздел дает только краткое введение в компоненты C.

Пример 1: Следующая программа считывает радиус радиуса, вычисляет площадь и затем печатает результат.

  / * программа для расчета площади круга * /

 #include <stdio.h> / * Доступ к файлам библиотеки * /

 #include <conio.h> / * Доступ к файлам библиотеки * /

 void main () / * Заголовок функции * /

     {

        радиус поплавка, площадь;  / * Объявления переменных * /

        / * Оператор вывода (подсказка) * /

        printf («Введите радиус:»);

       / * Ввод заявления * /

       scanf ("% f", & radius);

       /*Оператор присваивания*/

       площадь = 3.14159 * радиус * радиус;

       / * Вывод заявления * /

       printf («Площадь круга:% f», площадь);

        getch ();

      } 

Выход программы: —

Введите радиус: 3

Площадь круга: 28. 27431

Следующие пункты должны быть рассмотрены, чтобы понять вышеупомянутую программу:

1. Программа набирается в нижнем регистре. C чувствителен к регистру, т. Е. Прописные и строчные буквы не эквивалентны в C. Обычно команды C вводятся строчными. Комментарии и сообщения (например, напечатанные с использованием printf() )

2. Первая строка — это комментарий, который определяет цель программы.

3. Инструкция #include <stdio.h> содержит ссылку на специальный файл с именем stdio. ч. Этот файл содержит определение определенных функций, необходимых для чтения и печати данных, таких как printf () и scanf (). Это заголовочный файл и, следовательно, расширение. час

4. Аналогичным образом #include <conio.h> связывает файл conio. h, который является другим заголовочным файлом, который содержит определения функций, используемых для чтения и печати данных на консоли. Функция getch() определена в conio. час # обозначает директиву препроцессора. Подробнее об этом в следующей статье.

5. Инструкция void main () является заголовком для функции main (). Ключевое слово void обозначает тип возврата main и указывает, что функция не возвращает никакого значения программе после завершения выполнения программы. Пустые parantheses () после main указывают на то, что эта функция не содержит аргументов. Выполнение программы всегда начинается с main ().

6. Остальные пять строк программы имеют отступ и заключены в пару фигурных скобок {}. Эти пять строк составляют составной оператор внутри функции main ().

7. Указание радиуса поплавка, площади; является объявлением переменной. Он устанавливает символические имена «радиус» и «площадь» в качестве переменных с плавающей запятой. Эти переменные могут принимать значения типа «float» i. Числа, содержащие десятичную точку или показатель степени.

8. Следующие четыре инструкции являются выражениями выражений. Инструкция printf («Введите радиус:»); генерирует запрос на информацию, а именно, значение радиуса. Этот оператор генерирует подсказку, где пользователь вводит значение.

9. Значение радиуса считывается (или сохраняется в) в переменном радиусе с помощью функции scanf (). Команда scanf («% f» и радиус); используется для чтения данных. «% F» — это символ преобразования, который используется для принятия значения с плавающей запятой.

10. Следующая инструкция, область = 3.14159 * радиус * радиус; называется оператором присваивания. Эта инструкция вычисляет площадь, используя значение радиуса, введенное пользователем, и присваивает значение переменной области.

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

12. Утверждение getch (); используется для приостановки экрана, чтобы вы могли прочитать вывод. Если getch () не используется, экран просто мигнет и исчезнет. Эта функция ожидает, когда пользователь введет какой-либо символ (так как он принимает символ в качестве ввода), после того как программа завершит выполнение. Любая клавиша, присутствующая на клавиатуре, нажатой пользователем, принимается функцией getch как ввод, и ее значение ASCII возвращается в main ().

Пример 2: Ниже приведен вариант вышеуказанной программы:

  / * программа для расчета площади круга с использованием определенной пользователем функции * /

 #include <stdio.h>

 #include <conio.h>

 #define PI 3.14159

 процесс с плавающей точкой (радиус с плавающей точкой); / * прототип функции * /

 пустая функция()

     {

       площадь плавания, радиус;

       printf ("n Введите радиус:");

       scanf ("% f", & radius);

       площадь = процесс (радиус);

       printf («Площадь =% f», площадь);

       Геч ();

      }

 процесс с плавающей точкой (float r)

      {

      плавать;  / * объявление локальной переменной * /

      a = PI * r * r;
      Возвращение (а);

      } 

Эта версия использует отдельную функцию, определенную программистом, называемую process , для вычисления площади. В этой функции r является аргументом (также называемым параметром), который принимает значение радиуса, предоставленное для обработки из main , а a является вычисленным результатом, возвращаемым main. Ссылка на функцию появляется в main () в пределах области оператора = процесс (радиус);

В этом операторе значение области, возвращаемой из процесса функции, сохраняется в переменной области.

Основной функции предшествует прототип функции, который указывает, что существует определенная пользователем функция с именем process, которая определена после main, и что она принимает аргумент с плавающей запятой и возвращает значение с плавающей запятой. Если бы определяемый пользователем процесс-процесс был определен до main (), то прототип функции, как правило, не требовался.

Больше объяснений об этом, когда я напишу о функциях в следующей статье.

Эта программа также содержит символическую константу, PI, которая представляет числовое значение 3. 14159. Это форма сокращения, которая существует для удобства программистов. Когда программа фактически скомпилирована, символическая константа будет автоматически заменена ее числовым значением. Вывод этой программы такой же, как и в предыдущей программе.

Эта статья была кратким введением, она дает представление о программировании на Си. В следующей статье мы расскажем об основных понятиях C, которые включают набор символов C, идентификаторы и ключевые слова, типы данных в деталях, константы, переменные, объявления переменных, выражения, операторы и символические константы.