
- •«Алгоритмические языки и программирование»
- •Часть 1
- •Часть 1. «Язык программирования с» (опорний конспект лекций).
- •Содержание
- •6. Понятие о препроцессоре языка Си 25
- •7. Операторы языка Си и приемы программирования 26
- •1.Правила записи программы на языке Си
- •2.Идентификаторы языка Си
- •3.Понятие о типах данных.
- •3.1.Основные типы данных языка Си
- •3.2.Правила записи констант различных типов
- •3.3.Беззнаковый тип для целых данных
- •3.4.Символьные строки
- •4.Понятие функции
- •4.1.Стандартная функция printf
- •4.2.Стандартная функция scanf
- •5.Операции и выражения
- •5.1.Простейшие арифметические операции
- •5.2.Операция присваивания
- •5.3.Оператор присваивания
- •5.4.Использование в выражениях операндов разных типов
- •5.5.Операции преобразования типов
- •5.6.Стандартные математические функции
- •5.7.Простейшие функции, определяемые программистом
- •5.8.Дополнительные арифметические операции
- •5.9.Дополнительные операции присваивания
- •5.10.Операции отношения
- •5.11.Логические операции
- •5.12.Операция определения размера данных
- •5.13.Приоритеты операций
- •6.Понятие о препроцессоре языка Си
- •7.Операторы языка Си и приемы программирования
- •7.1.Оператор цикла while
- •7.2.Условный оператор и условная операция
- •7.3.Некоторые приемы программирования
- •7.4.Оператор прерывания цикла
- •7.5.Оператор продолжения цикла
- •7.6.Пример организации простейшего меню
- •7.7.Множественный выбор. Оператор переключения
- •7.8.Оператор цикла do-while.
- •7.9.Перечисления
- •7.10.Пример организации светового меню
- •8.Массивы. Адресная арифметика языка Си
- •8.1.Описание массива
- •8.2.Ввод-вывод массива
- •8.3.Инициализация массива
- •8.4.Программа вычисления длины строки символов
- •8.5.Двумерные массивы (массивы массивов)
- •8.6.Адресная арифметика языка Си
- •8.7.Указатели и одномерные массивы
- •8.8.Указатели и двумерные массивы
- •8.9.Указатели и функции
- •8.10.Оператор typedef
- •9.Дополнительные сведения о функциях
- •9.1.Области видимости и глобальные данные
- •9.2.Время жизни переменных и классы памяти языка Си
- •9.3.Передача аргументов в функцию
- •9.4.Возврат значений из функций
- •10.Работа с динамической памятью
- •10.1.Стандартные функции управления динамической памятью
- •10.2.Пример использования динамической памяти
- •10.3.Особенности работы с двумерными массивами
- •10.3.1.Пересчет индексов вручную
- •10.3.2.Массивы с постоянной длиной строки
- •10.3.3.Общий случай двумерного массива
- •10.4.Особенности работы с массивами большого размера
- •11.Модульное программирование в системе Turbo c
- •11.1.Обеспечение корректной стыковки модулей
- •11.2.Создание библиотек функций
- •12.Некоторые библиотечные функции языка Си
- •12.1.Функции консольного ввода/вывода (уникальны для tc)
- •12.2.Функции обработки строк.
- •12.3.Функции распознавания вида символа
- •12.4.Функции преобразования данных
2.Идентификаторы языка Си
Идентификаторы или имена служат для обозначения различных объектов программ: переменных (ячеек памяти), адресов, функций, файлов и т.д., иначе говоря - данных и действий над данными.
Имена должны начинаться с букв латинского алфавита или знака подчеркивания, далее допускается использовать и арабские цифры:
При этом прописные и строчные буквы считаются разными.
Длина имени в ANSI стандарте языка Си не ограничена. В Турбо Си имя не может быть длиннее 32 символов. Например: a, a1, _a, a_b.
Выбор имен должен производиться так, чтобы имя как можно точнее соответствовало смыслу объекта или действия, которое оно обозначает. Например: speed_of_body, SpeedOfBody, BodySpeed.
Экономия на длине имени – плохой стиль программирования.
3.Понятие о типах данных.
Тип данных определяет структуру объекта данных, множество его разрешенных значений и множество операций, которые можно над ним выполнять. Объекты различных типов требуют различного количества памяти для их хранения и различных команд процессора для выполнения действий над ними.
3.1.Основные типы данных языка Си
Язык Си относится к языку с жестко определенными типами данных: каждое имя всегда обозначает объект некоторого типа, причем этот тип нельзя изменить до конца выполнения программы.
Назначение типа имени осуществляется с помощью описания типа.
[const ] имя_типа имя [= константа]
{, имя [= константа] } ;
Если в описании присутствует ключевое слово const, то описываемое данное объявляется как немодифицируемое, то есть его значение не может быть изменено в процессе выполнения программы.
Если в описании имеется знак "=" и константа соответствующего типа, то вместе с объявлением переменной происходит ее инициализация, то есть присваивание начального значения.
В языке Си предопределены несколько имен типов:
int - целый длиной 2 байта, диапазон значений -32768 ... +32767;
short - целый короткий, для IBM PC аналогичен int;
long - целый длиной 4 байта, диапазон значений
char - символьный длиной 1 байт, его можно рассматривать как целое -128...+127 (иногда 0...255);
float - тип данных с плавающей точкой, длиной 4 байта, вещественное число с диапазоном значений от до и 6-ю значащими цифрами;
double - тип данных с плавающей точкой, длиной 8 байт, вещественное число с диапазоном значений от до и 14-ю значащими цифрами;
Примеры описаний:
int a, b=4, c; /* описывает целые переменные a,b,c */
/* и инициализирует переменную b */
float speed, line; /* описывает вещественные переменные */
/* speed, line */
const double pi=3.14159; /* описывается имя pi, которое */
/* используется как константа */
/* типа double */
Вещественный тип данных следует использовать в тех случаях, когда данное в принципе может иметь дробную часть. Например, его надо использовать для описания почти всех физические величин: длины, массы, времени и т.д. Иногда величина, вообще говоря, целая, но большая настолько, что типа данных long не хватает. В этом случае тоже используется вещественный тип данных. Однако необходимо учитывать, что все арифметические действия с вещественными типами выполняются приближенно.
Целый тип данных часто используется для организации флагов, счетчиков, индексов и т.д.