- •Конспект лекций Часть 1 Оглавление
- •Часть 1 1
- •Введение
- •1. Этапы и проблемы решения задач с использованием компьютера
- •Алфавит языка
- •Ключевые слова
- •Идентификаторы
- •Знаки операций
- •Константы
- •Комментарии
- •2.3. Структура и основные элементы программы
- •2.4. Трансляция программ и их выполнение
- •3. Стандартные (базовые) типы данных, операции и выражения
- •3.1. Типы данных, переменные и константы Понятие типов данных
- •Классификация простых предопределенных типов данных
- •Переменные, константы
- •3.2. Целочисленные типы данных
- •3.3. Вещественные типы данных
- •3.4. Логический тип данных
- •3.5. Символьный тип данных
- •3.6. Операции и выражения
- •Преобразования типов данных
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные (битовые) операции
- •Операции составного присваивания
- •Условная операция
- •Операция sizeof
- •Приоритеты рассмотренных операций
- •3.7. Ввод и вывод простых типов данных
- •Вывод текстовых строк
- •Ввод/вывод арифметических типов данных
- •Форматирование ввода / вывода
- •4.1. Идеи структурного программирования
- •Условная инструкция (if)
- •Инструкция множественного выбора (switch)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Итерационный цикл (for)
- •Инструкции перехода
- •5. Приемы программирования циклов
- •5.1. Рекуррентные вычисления
- •5.2. Инвариант цикла
- •6. Массивы
- •6.1. Понятие массива
- •6.2. Объявление массивов Объявление одномерных массивов
- •Объявление многомерных массивов
- •6.3. Ввод-вывод массивов
- •Вывод массивов
- •Ввод массивов
- •6.4. Текстовые строки как массивы символов
- •Определение текстовой строки
- •Ввод текстовых строк с клавиатуры
- •Обработка текстовых строк
- •Массивы текстовых строк
- •7. Разработка программ при работе с массивами
- •Не успел дописать. Некоторые примеры по этому разделу в Приложениях
4.1. Идеи структурного программирования
При хаотическом программировании возникают очень серьезные отрицательные последствия:
затруднено восприятие программы (алгоритма);
сложно проводить доказательство правильности программы, ее отладку, тестирование;
практически невозможна модификация программы;
при отсутствии систематических приемов в программировании очень сложно организовать коллективную работу над общей задачей.
Все это привело к созданию определенных методологий в программировании. И, пожалуй, первым таким методом является структурное программирование. Его основные положения:
программа должна составляться достаточно мелкими шагами, так чтобы реализация каждого шага не вызывала никаких затруднений;
сложная задача должна разбиваться на достаточно простые, легко воспринимаемые части, каждая из которых имеет только один вход и один выход;
логика программы должна опираться на минимальное число достаточно простых базовых управляющих структур.
Доказана теорема о структурировании (Бем и Джекопини):
Как бы ни была сложна задача, схема алгоритма соответствующей программы всегда может быть представлена с использованием ограниченного набора базовых структур.
Примером одного из таких наборов базовых структур являются следующие три конструкции:
f THEN g - последовательность:
IF p THEN f ELSE g – выбор (ветвление):
WHILE p DO f – итерации (цикл с предусловием):
Эти базовые структуры могут соединяться между собой по тем же правилам, образуя более сложные структуры. При этом f и g могут представлять собой очень сложные схемы алгоритмов с одним входом и одним выходом.
Наборов базовых структур может быть несколько. Например, если заменить последний элемент набора на
DO f WHILE p - итерации (цикл с постусловием):
то получится еще один набор из трех базовых структур. Эти наборы эквивалентны, т.к. от WHILE p DO f легко перейти к DO f WHILE p и наоборот:
Путем эквивалентных преобразований любую неструктурированную схему алгоритма можно привести к структурированному виду. Например:
В некоторых случаях структуризация алгоритмов может привести к появлению в них определенной избыточности (в последнем примере дважды осуществляется обращение к g), но такие “накладные расходы” полностью оправдываются достоинствами структурированных алгоритмов.
Для более эффективной разработки программ современные языки программирования кроме минимального набора управляющих структур содержат и их модификации.
4.2. Управляющие структуры и инструкции языка C++
Управляющие структуры используются для управления ходом выполнения программы. В языке C++ имеются три категории управляющих инструкций:
инструкции выбора (ветвления):
if - условная инструкция;
switch – инструкция множественного выбора;
итерационные (циклические) инструкции:
while – цикл с предусловием;
do while - цикл с постусловием;
for – итерационный цикл;
инструкции перехода:
break – прекращение выполнения циклических инструкций и инструкции switch;
continue – переход к следующей итерации цикла;
return – прекращение выполнения функции
goto – переход по метке.