- •А.Ю. Быков
- •Быков Александр Юрьевич Решение задач на языке
- •Часть 1 84 Введение
- •1. Лабораторная работа № 1. Изучение операций языка Си. Программирование линейных и разветвляющихся алгоритмов
- •1.1. Цель и задачи работы, требования к результатам ее выполнения
- •1.2. Краткая характеристика объекта изучения
- •1.2.1. Понятие переменной и типа данных
- •1.2.2. Стандартные типы языка Си
- •1.2.3. Объявления переменных в языке Си
- •1.2.4. Константы в языке Си
- •1.2.5. Операторы – выражения и операции языка Си
- •1.2.6. Условный оператор
- •1.2.6. Оператор - переключатель
- •1.2.7. Некоторые функции ввода- вывода Функции для вывода в поток stdout
- •Функции для считывания из потока stdin
- •1.3. Задачи и порядок выполнения работы
- •Примеры выполнения работы Пример 1
- •Пример № 2
- •2.2. Краткая характеристика объекта изучения
- •2.3. Задачи и порядок выполнения работы
- •Примеры выполнения работы Пример 1
- •Пример 2
- •3.2. Краткая характеристика объекта изучения
- •3.2.1. Одномерные массивы
- •Int a[100]; // Объявление массива из 100 элементов типа int
- •Инициализация массива
- •3.2.2. Массивы и указатели
- •3.2.3. Строки
- •3.2.4. Динамические массивы
- •3.2.5. Многомерные массивы
- •Инициализация многомерных массивов
- •Динамические многомерные массивы
- •3.3. Задачи и порядок выполнения работы
- •Примеры выполнения работы Пример 1
- •Пример 2
- •4.2. Краткая характеристика объекта изучения
- •Int X; // Поле структуры
- •Int X; // Поле структуры
- •Int X; // Поле структуры
- •Инициализация структуры
- •Int year, page; // Год издания и число страниц
- •4.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •5.2. Краткая характеристика объекта изучения
- •Определение, описание и вызов функции
- •Тип возвращаемого значения и параметры функции main
- •5.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •6.2. Краткая характеристика объекта изучения
- •6.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •7.2. Краткая характеристика объекта изучения
- •7.2.1. Общие сведения о вводе-выводе
- •7.2.2. Ввод- вывод в файлы Открытие файла
- •Закрытие файла
- •Определение конца файла
- •Функции записи в файл
- •Функции чтения из файла
- •Функции позицирования в файлах
- •Функции для сброса буферов ввода- вывода
- •7.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •8.2. Краткая характеристика объекта изучения
- •8.2.1. Сообщения Windows
- •8.2.2. Структура приложения в Windows
- •8.2.3. Вывод графики в Windows Контексты устройств
- •Графические «перья» и «кисти»
- •Функции для вывода графики
- •8.3. Задачи и порядок выполнения работы
- •Пример выполнения работы
- •8.4. Форма отчета по лабораторной работе
- •8.5. Вопросы для самоконтроля
- •4. Сообщения Windows.
- •Заключение
- •Рекомендуемые источники
- •Приложение а. Варианты заданий для выполнения лабораторных работ Варианты заданий для лабораторной работы № 1 Часть 1
- •Часть 2
- •Варианты заданий для лабораторной работы № 2
- •Варианты заданий для лабораторной работы № 3
- •Часть 1. Одномерные массивы
- •Часть 2. Многомерные массивы (матрицы)
- •Варианты заданий для лабораторной работы № 4
- •Варианты заданий для лабораторной работы № 5
- •Варианты заданий для лабораторной работы № 6
- •Варианты заданий для лабораторной работы № 7
- •Варианты заданий для лабораторной работы № 8
1.2.3. Объявления переменных в языке Си
Общий формат объявления переменных:
[<спецификатор_класса_памяти>] [<модификатор>] <тип> <имя1>[=<инициализатор1>], <имя2>[=<инициализатор2>],…, <имяN>[=<инициализаторN>];
Необязательный элемент <спецификатор_класса_памяти> (необязательный элемент далее в записи форматов будет помещаться в квадратные скобки) одно из ключевых слов: auto, register, static, extern.
Необязательные элемент <модификатор> - могут быть ключевые слова: const, volatile и др.
Модификатор const означает, что инициализация (присвоение начального значения) переменной обязательна, и далее значение переменной изменять нельзя. Модификатор volatile означает, что данная переменная может быть изменена где- то в другом месте, а не обязательно в этой программе, например, программой обработки прерываний (модификатор влияет на режим оптимизацию работы компилятора).
Примеры:
int i, j=10;
const float pi=3.14; // Далее запрещено изменять значение pi
extern double x; // Это есть описание, определение переменной в другом
// месте.
unsigned char C1=‘A’, C2=10, C3;
1.2.4. Константы в языке Си
Кроме переменных в программе часто используются константы.
Константа – это значение, которое не может быть изменено в процессе работы программы.
В языке Си выделяют следующие разновидности констант, которые могут иметь разные типы и формы представления:
Целые константы.
Целые константы существуют для представления в программе целых значений. Константы могут иметь разные типы. Тип константы определяет представление константы в оперативной памяти: кодировку константы, объем в байтах, какой набор значений может представляться константой, а также операции, которые можно выполнять с константой. Существуют следующие типы целых констант:
тип int (по умолчанию), в оперативной памяти константа данного типа кодируется в MS DOS – 2 байтами, в Win32 – 4 байтами, примеры: 1245, 6, 175, 5, 1425;
тип long – в оперативной памяти константа кодируется 4 байтами, константа будет иметь этот тип, если диапазон выходит за тип int (в MS DOS), или явно указывается тип с помощью суффикса l (L), примеры: 12l, 14567L, 125234 (для MS DOS);
константы могут быть представлены типами unsigned int и unsigned long, для явного указания необходимо использовать суффикс u (U), примеры 105u (unsigned int), 105ul(unsigned long).
Целые константы всегда задают неотрицательные значения, для задания отрицательного значения используют операцию унарный минус, которую применяют к целой константе: -1000, -200l.
Целые константы также могут иметь различные формы представления. Формы представления введены для удобства программиста, одно и то же значение константы может быть представлено в различных формах в исходном тексте программы, при этом после компиляции полученный исполняемый код и кодирование константы в памяти будет идентично и не зависит от формы представления. Для целых констант существуют три формы представления:
в десятичной системе счисления (по умолчанию) – 1234, 378l, 346;
в шестнадцатеричной системе счисления, признаком данного представления являются 2 первых символа константы 0x (или 0X), в константе можно использовать шестнадцатеричные цифры: 0..9, A (a), B (b), …, F (f), примеры – 0x10, 0x10acd, 0XFFFF;
в восьмеричной системе счисления, признаком данного представления является первый символ 0, в константе можно использовать восьмеричные цифры: 0..7, примеры – 010, 070, 01237;
Вещественные константы.
Вещественные константы служат для представления вещественных значений, которые могут иметь целую и дробные части. По аналогии с целыми константами существуют различные типы и формы представления вещественных констант. Для вещественной константы можно применять операцию унарный минус с целью получения отрицательного значения.
Существует следующие три типа вещественных констант:
тип double (по умолчанию), в оперативной памяти константа кодируется 8 байтами, примеры: 12.5, .123, 0.5, 1. (наличие точки в таком представлении обязательно);
тип float – 4 байта, используется суффикс f (F), примеры: 10.5f, 0.123F;
тип long double – 10 байт, используется суффикс l (L), примеры: 10.5l, 0.9L.
Существуют две формы представления вещественных констант:
форма с точкой (десятичная форма), примеры: 10.125, 1. (значение 1.0), .125 (значение 0.125), 0.125, представляется в форме десятичной дроби, состоит из трех основных элементов целой части, точки, дробной части, причем, целая или дробная часть могут отсутствовать, наличие точки обязательно, если целая часть отсутствует, то она считается равной 0, если дробная часть отсутствует, то она также считается равной 0;
форма со знаком экспоненты (экспоненциальная форма): 1e-5 , 12.23E4F (тип константы float), представляется в виде мантиссы и порядка, мантисса записывается слева от знака экспоненты (Е или е), порядок — справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. .
