
2к3с Языки программирования / Конспект лекций
.pdfКОНСПЕКТ ЛЕКЦИЙ ПО ДИСЦИПЛИНЕ «ЯЗЫКИ ПРОГРАММИРОВАНИЯ»
ТЕМА 1. Основы языка программирования СИ.
Цели: изучить основы языка программирования СИ; сформировать представление о записи основных алгоритмических конструкций с помощью псевдокодов, а также переменных и типах данных.
Задачи:
рассмотреть основные правила написания программ на языке СИ;
ознакомиться с объявлением основной функции в программе;
освоить запись программ с использованием псевдокодов;
изучить понятие переменной и константы в программе;
ознакомиться с требованиями и рекомендациями по выбору идентификаторов;
ознакомиться с основными ключевыми словами языка СИ;
изучить основные типы данных и диапазон хранимых значений;
рассмотреть модификаторы типов данных;
рассмотреть арифметические операторы.
После изучения темы Вы должны знать:
основные правила написания программ на языке СИ;
объявление основной функции в программе;
запись программ с использованием псевдокодов;
понятие переменной и константы в программе;
требования и рекомендации по выбору идентификаторов;
основные ключевые слова языка СИ;
основные типы данных и диапазон хранимых значений;
модификаторы типов данных;
арифметические операторы.
Язык СИ был создан Денисом Ритчи из Bell Laboratories в начале 70-х
годов XX века. СИ является языком среднего уровня, потому что он комбинирует в себе элементы высокоуровневых языков и функциональность ассемблеров (языков низкого уровня).
СИ содержит 32 ключевых слова. Эти ключевые слова, в совокупности с формальным синтаксисом, и образуют язык С.
Основные правила написания программ на СИ:
все ключевые слова пишутся в нижнем регистре;
язык СИ чувствителен к регистру символов, то есть, do while отличается от DO WHILE;
ключевые слова не могут использоваться ни для какой другой цели, то
есть они не могут быть использованы как имя переменной или функции.
Объявление функции. В СИ программы делятся на отдельные фрагменты, называемые функциями. Как минимум программа состоит из одной функции main (tmain), которой операционная система передает управление в момент запуска программы. После имени программы всегда стоят круглые скобки, в которых могут быть записаны параметры.
Разделители. После определения функции идет открывающая фигурная скобка. Ее наличие в теле программы сигнализирует о начале тела функции.
Закрывающая круглая скобка служит для указания завершения тела функции.
Также открывающая фигурная скобка и закрывающая фигурная скобка служат для ограничения блоков кода.
Завершение команд. Команды в СИ завершаются точкой с запятой.
Комментарии. Комментарии используются для того, чтобы пояснить действие специфической команды, функции или программы в целом
(компилятором они игнорируются).
Псевдокоды. Псевдокод представляет собой набор стандартных слов,
напоминающий программу, однако в отличие от обычного кода, псевдокод не может быть скомпилирован и выполнен.
Псевдокод начинается со слова BEGIN или START, и заканчивается END и STOP. Для вывода на экран используется команда DISPLAY или WRITE.
Получение команды от пользователя – INPUT и READ.
Вариант условной конструкции записывается как «IF…..END IF» либо как конструкция «IF…. ELSE… END IF».
Для составления сложных условий используются операторы AND и OR.
Вложенным называется оператор, в котором IF содержится в другом операторе IF.
Циклический алгоритм в псевдокодах - «WHILE…. DO…. END DO».
Переменные. Переменные – это поименованная область памяти, значение которой можно получить или изменить.
Константы. Константы – это переменные, значения которых задаются один раз во время объявления константы.
Идентификатор. Имена переменных, функций и других программных объектов называются идентификаторам. Идентификаторы могут состоять из одного или нескольких символов, а также может состоять из цифр, букв и знака подчеркивания, но в качестве первого символа не могут выступать цифры.
Требования и рекомендации к выбору идентификаторов:
имена переменных должны начинаться с буквы латинского алфавита;
после первого символа может идти последовательность из других символов, цифр и знака подчеркивания;
имена переменных должны отражать их назначение;
идентификатор не должен совпадать с ключевым словом языка СИ или именем функции уже объявленной в библиотеке СИ.
Ключевые слова. Ключевые слова – это специальные слова,
зарезервированные для внутреннего использования (auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while).
Типы данных. В СИ существует 5 основных типов данных. Все другие
типы можно получить на их основе. Основными типами языка СИ являются:
int – целочисленный тип (диапазон хранимых значений -32768… 32767),
занимает в памяти 2 байта;
float – числа с плавающей точкой с точностью до 6-го знака, занимает в памяти 4 байта;
double – числа с плавающей точкой двойной точности, занимает в памяти 8 байт;
сhar – символьные значения;
void – отсутствие данных любого типа.
Модификаторы типов. Четыре типа данных (char, int, float и double)
являются основными и используются для представления данных в памяти компьютера. Однако, в отдельных ситуациях, эти типы данных можно изменить. Для этой цели используются модификаторы типов. Они применимы ко всем типам данных, за исключением void.
В СИ существует 4 модификатора типов. Это signed, unsigned, long и short.
Все эти модификаторы применимы к символьным и целочисленным переменным. Модификатор long также может быть применен к типу double.
Типы данных и их размер приведены в таблице 1.
Таблица 1. Типы данных и их размер.
Тип |
Размер в битах (байтах) |
Диапазон значений |
char |
8(1) |
-128….127 |
unsigned char |
8(1) |
0….255 |
signed char |
8(1) |
-128….127 |
int |
16(2) |
-32768….32767 |
unsigned int |
16(2) |
0…..65535 |
signed int |
16(2) |
-32768….32767 |
short int |
16(2) |
-32768….32767 |
unsigned short int |
16(2) |
0…..65535 |
signed short int |
16(2) |
-32768….32767 |
long int |
32(4) |
-2 147 483 647…2 147 483 647 |
signed long int |
32(4) |
-2 147 483 647…2 147 483 647 |
unsigned long int |
32(4) |
0… 4 294 967 295 |
float |
32(4) |
3,4*10-38….3,4*1038 |
double |
64(8) |
1,7*10-308….1,7*10308 |
long float |
64(8) |
1,7*10-308….1,7*10308 |
long double |
80(10) |
3,4*10-4932….3,4*104932 |
Арифметические операторы. Арифметические операторы используются для выполнения вычислений над числовыми данными. Операторы бывают двух типов: унарные и бинарные, которые представлены в таблице 2.
Таблица 2. Арифметические операторы и их действие
Унарный оператор |
Действие |
Бинарный оператор |
Действие |
- |
унарный минус |
+ |
сложение |
++ |
инкремент |
- |
вычитание |
-- |
декремент |
* |
умножение |
|
|
% |
остаток от деления |
|
|
/ |
деление |
Выводы
В данной теме рассмотрены следующие вопросы: основные правила написания программ на языке СИ; объявление основной функции в программе;
запись программ с использованием псевдокодов; понятия переменной и константы; требования и рекомендации к выбору идентификаторов; ключевые слова языка СИ; основные типы данных и диапазоны хранимых значений;
модификаторы типов данных, а также арифметические операторы.
Вопросы для самопроверки
1.К языкам какого уровня относится язык программирования СИ?
2.Сколько и какие ключевые слова содержит язык СИ?
3.Перечислите основные правила написания программ на языке СИ.
4.Какие слова содержит псевдокод для записи основных алгоритмических конструкций?
5.Охарактеризуйте понятие переменной и константы в программе.
6.Что такое идентификаторы?
7.Какие существуют требования и рекомендации к выбору идентификаторов?
8.Что такое ключевые слова?
9.Перечислите и охарактеризуйте основные типы данных языка СИ.
10.Назовите и охарактеризуйте модификаторы типа данных.
11. Назовите и охарактеризуйте арифметические операторы языка СИ.
ТЕМА 2. ОПЕРАТОРЫ И ВЫРАЖЕНИЯ.
Цели: изучить различные операторы выражений, взаимный приоритет
операторов и преобразование выражений.
Задачи:
ознакомиться с понятием выражения;
изучить операторы (присваивания, сравнения, логические, битовые);
освоить преобразование типов данных в выражении;
рассмотреть приоритет арифметических операторов, приоритет операторов сравнения; приоритет логических операторов.
После изучения темы Вы должны знать:
операторы: присваивания, сравнения, логические, битовые;
преобразование типов данных;
приоритет арифметических операторов, приоритет операторов
сравнения; приоритет логических операторов;
сокращенные операторы присваивания.
Выражения. Выражения представляют собой комбинацию операторов и операндов. Так как во время выполнения программы все переменные имеют конкретные значения, то значение любого выражения всегда можно точно вычислить.
Оператор присваивания. Оператор присваивания служит для помещения в переменную результата вычисления выражения. В общем виде оператор присваивания (=) записывается следующим образом:
имя_переменной = выражение;
Арифметические выражения. Математические выражения могут быть записаны в СИ с использованием арифметических операторов. Любое выражение может включать в себя несколько подвыражений.
Операторы сравнения. Операторы сравнения используются для того,
чтобы сравнить значения двух переменных или констант. В таблице 3
приведены операторы сравнения и проверяемые условия.
Таблица 3. Операторы сравнения и проверяемые условия
Оператор |
Проверяемое условие |
> |
Больше |
>= |
Больше или равно |
< |
Меньше |
<= |
Меньше или равно |
= = |
Эквивалентно |
!= |
Не эквивалентно |
Логические операторы. Логические операторы – это операторы,
позволяющие создавать сложные выражения из операторов сравнения.
Результатом вычисления логического выражения является значение логического типа (0 или 1). В таблице 4 приведены логические операторы и их
действие.
Таблица 4. Логические операторы и их действие
Оператор |
|
Действие |
&& |
|
AND (И) |
|| |
|
OR (ИЛИ) |
! |
|
NOT (НЕ) |
Логические операторы |
и операторы сравнения выполняются после |
арифметических операторов.
Битовые операторы. Битовые операторы работают в двоичной системе
счисления. В таблице 5 приведены битовые операторы и их действие.
|
Таблица 5. Битовые операторы и их действие |
|
|
|
|
Оператор |
|
Действие |
Битовое И |
|
Каждый бит результата будет содержать 1, |
(x & y) |
|
если в соответствующих битах операндов |
|
|
тоже стоят 1 |
Битовое ИЛИ |
|
Каждый бит результата будет содержать 1, |
(x | y) |
|
если хотя бы в одном из соответствующих |
|
|
битов операндов стоит 1 |
Битовое НЕ |
|
Инвертирует значение каждого бита |
(~x) |
|
операнда |
Битовое ИСКЛЮЧАЮЩЕЕ ИЛИ |
|
Каждый бит результата будет содержать 1, |
(x ^ y) |
|
если только в одном из соответствующих |
|
|
битов операндов стоит 1 |
Битовые операторы конвертируют операнды в двоичные числа длиной 32
бита, выполняют необходимые преобразования, а затем переводят обратно.
Преобразование типов. Выражения, содержащее в себе переменные и значения различных типов, называют смешанными. Такие выражения приходится видоизменять, осуществляя преобразование типов. При преобразовании типы изменяются от меньшего к большему. Ниже приведен порядок следования типов по возрастанию их старшинства:
char < int < long < float < double
Автоматически выполняются следующие преобразования типов:
char преобразуется в int, float – в double;
если старшим типом является double, то все остальные типы преобразуются в double, таким же будет и тип результата;
если старшим типом является long, то все остальные типы преобразуются в long, таким же будет и тип результата;
если старшим типом является unsigned, то все остальные типы преобразуются в unsigned, таким же будет и тип результата.
Если не выполняется ни одно из предыдущих условий и выражение содержит значение типа int, то результат будет int.
Существует одно исключение из этих правил. Если выражение содержит типы long и unsigned, то unsigned не преобразуется в long. Типом результата будет unsigned long.
Приоритет операторов. Приоритет определяет порядок выполнения операторов в выражении. Для арифметических операторов этот порядок приведен в таблице 6.
Таблица 6. Приоритет операторов
Класс |
Оператор |
Выполнение |
Унарный |
- ++ -- |
Справа налево |
|
(в префиксной нотации) |
|
Бинарный |
* / % |
Слева направо |
Бинарный |
+ - |
Слева направо |
Бинарный |
= |
Справа налево |
Унарный |
++ -- |
Справа налево |
|
(в постфиксной нотации) |
|

Приоритет операторов сравнения. Взаимный приоритет операторов
сравнения представлен в таблице 7.
|
Таблица 7. Приоритет операторов сравнения |
||
|
|
|
|
Приоритет |
|
Оператор |
|
1 |
|
>, <, >=, <= |
|
2 |
|
= =, != |
|
Приоритет логических операторов. В таблице 8 представлен приоритет
логических операторов.
|
|
Таблица 8. Приоритет логических операторов |
||
|
|
|
|
|
|
Приоритет |
|
Оператор |
|
|
1 |
|
NOT |
|
|
2 |
|
AND |
|
|
3 |
|
OR |
|
При наличии одинакового |
приоритета все логические операторы |
|||
вычисляются справа налево. |
|
|
|
Сокращенные операторы присваивания. Перечень сокращенных операторов присваивания представлен в таблице 9.
Таблица 9. Сокращенные операторы присваивания
Приоритет |
Оператор |
++ |
Увеличение на 1 |
-- |
Уменьшение на 1 |
*= |
Умножение |
/= |
Деление |
-= |
Вычитание |
+= |
Сложение |
%= |
Получение остатка от деления целых |
|
чисел |
&= |
Битовое И |
|= |
Битовое ИЛИ |
^= |
Битовое ИСКЛЮЧАЮЩЕЕ ИЛИ |
<<= |
Поразрядный сдвиг влево |
>>= |
Поразрядный сдвиг вправо |
Выводы
В данной теме рассмотрены следующие вопросы: понятие выражения;
операторы (присваивания, сравнения, логические, битовые; преобразование типов данных); приоритет арифметических операторов; приоритет операторов сравнения; приоритет логических операторов.
Вопросы для самопроверки
1.Что такое выражение?
2.Назначение и синтаксис оператора присваивания.
3.Запись операторов сравнения в языке СИ.
4.Запись в языке СИ логических операторов и их действие.
5.Запись в языке СИ битовых операторов и их действие.
6.Назовите порядок следования типов при преобразовании выражений.
7.Какие преобразования типов выполняются автоматически?
8.Назовите приоритет арифметических операторов в выражении.
9.Охарактеризуйте взаимный приоритет операторов сравнения.
10.Охарактеризуйте взаимный приоритет логических операторов.
11.Запись сокращенных операторов присваивания.