- •В.Л.Бусько, а.Г.Корбит, т.М.Кривоносова
- •Основы алгоритмизации и программирования
- •Содержание
- •1. Введение
- •1.1. История создания эвм
- •1.2. Структура пэвм
- •1.3. Классификация языков программирования
- •1.4. Размещение данных и программ в памяти пэвм
- •1.6. Ошибки
- •1.7. Функциональная и модульная декомпозиции
- •1.5. Программные модули
- •1.8. Файловая система хранения информации
- •1.9. Операционная система
- •2. Основные понятия и определения
- •2.1. Этапы решения задач на эвм
- •2.2. Понятие алгоритма и способы его записи
- •2.3. Свойства алгоритмов
- •2.4. Способы описания алгоритмов
- •2.5. Графическое описание алгоритма
- •2.6. Основные символы схемы алгоритма
- •2.7. Пример простейшего линейного алгоритма
- •2.8. Немного истории
- •3. Синтаксис языка Cи
- •3.1. Алфавит языка
- •3.2. Лексемы
- •3.3. Идентификаторы и ключевые слова
- •3.4. Знаки операций
- •3.5. Литералы (константы)
- •3.6. Комментарии
- •4. Базовые типы объектов
- •4.1. Простейшая программа
- •4.2. Основные типы данных
- •4.3. Декларация (объявление) объектов
- •4.4. Данные целого типа (int)
- •4.5. Данные символьного типа (char)
- •4.6. Данные вещественного типа (float, double)
- •5. Константы в программах
- •5.1. Целочисленные константы
- •5.2. Константы вещественного типа
- •5.3. Символьные константы
- •5.4. Строковые константы
- •6. Обзор операций
- •6.1. Операции, выражения
- •6.2. Арифметические операции
- •6.3. Операции присваивания
- •6.4. Сокращенная запись операции присваивания
- •6.5. Преобразование типов операндов арифметических операций
- •6.6. Операция приведения типа
- •6.7. Операции сравнения
- •6.8. Логические операции
- •6.9. Побитовые логические операции. Операции над битами
- •6.10. Операция , (запятая)
- •7. Обзор базовых инструкций языка с
- •7.1. Стандартная библиотека языка Си
- •7.2. Стандартные математические функции
- •7.3. Функции вывода данных на дисплей
- •7.4. Функции ввода информации
- •7.5. Ввод - вывод потоками
- •7.6. Дополнительные функции в дальнейшем мы будем часто пользоваться стандартными библиотечными функциями. Рассмотрим некоторые из них.
- •8. Синтаксис операторов языка c
- •8.1. Условные операторы
- •8.2. Условная операция «? :»
- •8.3. Оператор выбора альтернатив (переключатель)
- •9. Составление циклических алгоритмов
- •9.1. Понятие цикла
- •9.2. Оператор с предусловием while
- •9.3. Оператор цикла с постусловием do - while
- •9.4. Оператор цикла с предусловием и коррекцией for
- •10. Операторы передачи управления
- •Рассмотрим их более подробно.
- •10.1. Оператор безусловного перехода goto
- •10.2. Оператор continue
- •10.3. Оператор break
- •10.4. Оператор return
- •11 . Указатели
- •11.1. Указатели
- •11.2. Операции над указателями (косвенная адресация)
- •11.3. Ссылка
- •12. Массивы
- •12.1. Понятие массива
- •12.2. Одномерные массивы
- •12.3. Многомерные массивы
- •12.4. Операция sizeof
- •12.5. Применение указателей
- •12.6. Указатели на указатели
- •12.7. Адресная функция
- •13. Работа с динамической памятью
- •13.1. Пример создания одномерного динамического массива:
- •13.2. Пример создания двуxмерного динамического массива:
- •14. Строки в языке Си
- •14.1. Русификация под Visual
- •15. Функции пользователя
- •15.1. Декларация функции
- •15.2. Вызов функции
- •15.3. Операция typedef
- •15.4. Указатели на функции
- •15.5. Параметры командной строки функции main
- •15.6. Функции с переменным числом параметров
- •16.1. Классы памяти объектов в языке c:
- •16.2. Автоматические переменные
- •16.3. Внешние переменные
- •16. Классы памяти и области действия объектов
- •16.4. Область действия переменных
- •17. Структуры, объединения, перечисления
- •17.1. Структуры
- •17.2. Декларация структурного типа данных
- •17.3. Создание структурных переменных
- •17.4. Вложенные структуры
- •17.5. Массивы структур
- •17.6. Размещение структурных переменных в памяти
- •17. 7. Объединения
- •17.8. Перечисления
- •18. Файлы в языке с
- •18.1. Открытие файла
- •18.2. Закрытие файла
- •18.3. Запись - чтение информации
- •Посимвольный ввод-вывод
- •Построчный ввод-вывод
- •Блоковый ввод-вывод
- •18.4. Текстовые файлы
- •18.5. Бинарные файлы
- •Список рекомендуемой литературы
- •Список используемой литературы
- •Стандартная часть таблицы символов (ascii)
- •Дополнительная часть таблицы символов
- •Операции языка Си
- •Приложение 3 Возможности препроцессора и его вызов
- •Директивы лексемного замещения идентификаторов
- •Директива отмены
- •Макрозамещение
- •Подключение файлов исходного текста
- •Условная компиляция
- •Изменение нумерации строк и идентификатора файла
- •Основы алгоритимзации и программирования
8.2. Условная операция «? :»
Условная операция - тернарная, в ней участвуют три операнда. Формат написания условной операции следующий:
выражение 1 ? выражение 2 : выражение 3;
если выражение 1 отлично от нуля (Истинно), то результатом операции является выражение 2, в противном случае - результатом операции является выражения 3. Каждый раз вычисляется только одно из выражений 2 или 3.
Запишем оператор if, вычисляющий максимум из а и b и присваивающий его значение z.
if (a > b) z=a;
else z=b;
Используя условную операцию, этот пример можно записать:
z = (a>b) ? a : b;
Условную операцию можно использовать также как и любое другое выражение. Если выражения 2 и 3 имеют разные типы, то тип результата определяется по правилам преобразования.
8.3. Оператор выбора альтернатив (переключатель)
Общий вид оператора:
switch (выражение) {
case константа1: оператор1; break;
case константа2: оператор2; break;
...
case константаN: операторN; break;
default: оператор(N+1); break; // может отсутствовать
}
Значение вычисленного выражения должно быть целого типа (или символьного, поскольку он автоматически преобразуется в целый). Это целое используется для выбора одного из нескольких операторов, который нужно выполнить. Оператор, следующий за селектирующим выражением состоит из одного или более операторов, перед каждым из которых стоит конструкция:
case константное выражение:
Целочисленное выражение (константа выбора) после вычисления сравнивается со значениями констант и при совпадении с одной из них выполняется передача управления соответствующему оператору. В случае несовпадения значения выражения с одной из констант происходит переход на метку default, либо, при ее отсутствии, к оператору, следующему за оператором switch.
Управляющий оператор break (разрыв) позволяет организовать выход из оператора switch на первый выполняемый оператор, следующий после данной конструкции (оператор switch).
Пример 1 с использованием оператора break:
void main(void)
{ int i = 2;
switch(i) {
case 1: puts ( "Случай 1. "); break;
case 2: puts ( "Случай 2. "); break;
case 3: puts ( "Случай 3. "); break;
default: puts ( "Случай default. "); break;
}
}
Для того, чтобы выйти из оператора switch в любом месте использовали оператор break, поэтому результатом будет: Случай 2.
Пример 2 (оператор break отсутствует):
void main()
{ int i=2;
switch(i) {
case 1: puts ( "Случай 1. ");
case 2: puts ( "Случай 2. ");
case 3: puts ( "Случай 3. ");
default: puts ( "Случай default. ");
}
}
Так как оператор разрыва отсутствует, результатом будет:
Случай 2.
Случай 3.
Случай default.
9. Составление циклических алгоритмов
9.1. Понятие цикла
Практически все алгоритмы решения задач содержат циклически повторяемые участки. Цикл это одно из фундаментальных понятий программирования. Под циклом понимается организованное повторение некоторой последовательности операторов.
Для организации циклов используются специальные операторы.
Любой цикл состоит из кода цикла, т.е. тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла.
Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до кода цикла (с предусловием), либо после кода цикла (с постусловием).
Перечень разновидностей операторов цикла:
- оператор цикла с предусловием;
- оператор цикла с постусловием;
- оператор цикла с предусловием и коррекцией.
