- •Общие сведения об эвм
- •1. Общая функциональная схема эвм
- •2. Языки программирования
- •3. Этапы решения задач на эвм
- •4. Понятие алгоритма и его свойства
- •5. Графическое описание алгоритмов. Схемы алгоритмов
- •Блоки для изображения схем алгоритмов и программ
- •6. Типы алгоритмов
- •7. Ос эвм. Понятие о файловой системе
- •Имя.Расширение
- •8. Команды ms dos
- •Программирование на языке Паскаль
- •1. Структура программы на языке паскаль
- •2. Описание данных
- •2.1. Константы
- •2.2. Переменные
- •3. Комментарии
- •4. Операторы языка паскаль
- •5. Операторы обработки данных
- •5.1. Операторы ввода
- •5.2. Операторы вывода
- •5.3. Вычисление по формулам. Оператор присваивания
- •6. Линейные программы
- •7. Управляющие операторы
- •7.1. Разветвляющиеся алгоритмы. Оператор if (если)
- •7.2. Пример разветвляющейся программы
- •7.3. Оператор case
- •8. Циклические алгоритмы и программы
- •8.1. Общая схема цикла
- •8.2. Циклы со счетчиком
- •8.3. Итерационные циклы
- •8.3.1. Оператор цикла с пост-условием
- •8.3.2. Оператор цикла с пред-условием
- •Описание данных
- •9. Типы данных, используемых в паскале
- •9.1. Представление данных в эвм
- •9.2. Стандартные функции Паскаля и Турбо Паскаля
- •9.3. Булевские переменные и выражения
- •9.4. Функции для работы с символами
- •Функции языка Паскаль
- •9.5. Массивы
- •10. Примеры программ обработки массивов
- •11. Особенности алгоритмов и программ с накапливанием
- •12. Алгоритм нахождения минимума и максимума
- •13. Задача сортировки
- •14. Обработка многомерных массивов
- •15. Программы обработки строк символов (текстов)
- •15.1. Простейшие алгоритмы и программы обработки строк
- •15.2. Анализ символов в строке
- •16. Типовые программы обработки строк
- •16.1. Выделение слов из текста (слова разделены одним пробелом)
- •16.2. Выделение слов из текста (слова разделены несколькими пробелами)
- •16.3. Некоторые типовые алгоритмы и программы обработки массивов строк (слов из текстов)
- •17. Алгоритмы поиска
- •17.1. Алгоритм линейного поиска
- •17.2. Алгоритм дихотомического поиска
- •Процедуры, функции и модули в паскале
- •18.1. Процедуры
- •18.1.1. Пример программы с процедурой
- •18.1.2. Расположение процедур в программе
- •18.2. Функции
- •18.2.1. Пример программы с функцией
- •18.3. Внешние процедуры и функции
- •18.3.1. Модули пользователей
- •19. Итерационные циклы
- •19.1. Приближенное вычисление функций
- •19.2. Решение уравнений приближенными методами
- •19.2.1. Метод деления отрезка пополам
- •19.2.2. Метод Ньютона
- •19.2.3. Метод прохождения отрезка с переменным шагом
- •19.3. Вычисление определенных интегралов
- •19.3.1. Метод прямоугольников
- •19.3.2. Метод трапеций
- •20. Дополнительные сведения о ТипАх данных, применяемЫх в Паскале
- •20.1. Перечисляемый тип
- •20.2. Интервальный тип
- •20.3. Множества
- •20.3.1. Примеры программ с использованием множеств
- •Алгоритм
- •20.4. Записи
- •20.4.1. Примеры программ обработки записей
- •Алгоритм
- •Оператор_1;
- •21. Файлы и наборы данных
- •Assign(имя_файла, имя_нд);
- •21.1. Текстовые файлы
- •21.1.1. Создание текстового файла
- •21.1.2. Работа с существующим текстовым файлом
- •21.2. Типизированные файлы
- •21.2.1. Последовательная обработка типизированных файлов
- •21.2.2. Использование прямого доступа к записям типизированного файла
- •21.2.3. Упорядочение записей в файле
- •Алгоритм
- •21.2.4. Удаление записей из файла
- •21.2.5. Вставка записей в файл
- •22. Динамическое распределение памяти. Указатели и списки
- •22.1. Использование указателей. Списки
- •22.2. Очереди
- •22.2.1. Очередь типа lifo
- •22.2.2. Очередь fifo
- •23. Стандартные модули Турбо Паскаля
- •23.1. Модуль Crt
- •23.1.1. Работа с клавиатурой и звуком
- •23.1.2. Управление цветом
- •23.1.3. Создание окон и позиционирование курсора
- •23.1.4. Построение графика в текстовом режиме
- •23.1.5. Алгоритм и программа представления меню средствами Турбо Паскаля
- •23.2. Модуль dos
- •23.3. Модуль Graph
- •23.3.1. Инициирование графического режима
- •1) Процедура InitGraph(Var grDr,grMd:integer;path:string);
- •23.3.2. Вывод точек на экран
- •23.3.3. Вывод текста (надписей) в графическом режиме
- •1) SetTextStyle(Шрифт, Направление:Word; Размер:1..10);
- •23.3.4. Построение графических изображений
- •1) SetLineStyle(Тип_линии, Образец, Толщина : Word);
- •23.3.5. Запоминание и вывод изображений
- •24. Рекомендации по оформлению текста программ
- •Библиографический список
- •Оглавление
8. Циклические алгоритмы и программы
8.1. Общая схема цикла
Основными задачами, решаемыми на ЭВМ являются такие, в которых необходимо выполнять одни и те же операции над различными данными. Программы таких задач содержат гораздо меньше операторов, чем в действительности выполняет ЭВМ. Это достигается за счет того, что некоторые операторы выполняются много раз.
Определение 1. Группа многократно повторяющихся операторов называется циклом, а содержащая их программа – циклической.
Количество повторений цикла определяется значением некоторой управляющей переменной.
Определение 2. Переменная, управляющая повторением цикла, называется параметром цикла.
Общая схема циклического участка программы (алгоритма) может быть представлена в следующем виде (рис. 2.4).
Рис.
2.4. Общая
схема цикла
В блоке "Подготовка" задаются начальные значения переменных, используемых в вычислениях, и, в первую очередь, параметра цикла.
Блок "Условие выполнения" в зависимости от значения параметра либо начинает (продолжает) выполнение цикла, либо прекращает его (выход из цикла).
В блоке "Рабочая часть" содержатся многократно повторяемые операторы, которые и выполняют необходимые вычисления.
В блоке "Изменение параметра цикла" задается способ изменения параметра и выполняется переход к его новому значению.
Блоки 1, 2 и 4 являются необходимыми и типовыми для циклических алгоритмов и реализуются специальными операторами цикла. Блок 3 (Рабочая часть) - индивидуален для каждой задачи.
По типу параметра и условию окончания циклы делятся на:
1) циклы со счетчиком;
2) итерационные.
В циклах со счетчиком количество повторений заранее известно, а в итерационных – нет. В последних выход из цикла осуществляется при определенном условии (достижении заданной точности, появлении некоторой ситуации).
8.2. Циклы со счетчиком
Для их организации в Паскале используется оператор For (для), который в общем виде записывается так:
For Параметр := НачальноеЗначение to КонечноеЗначение do
Оператор1; (8.1)
или
For Параметр := НачальноеЗначение Downto КонечноеЗначение do
Оператор1; (8.2)
Параметром цикла в этом операторе может служить переменная так называемого перечисляемого типа:
1) целого;
2) символьного.
Оператор вида (8.1) работает в соответствии со схемой, приведенной на рис. 2.5,а. Параметр пробегает значения от начального до конечного через 1. При этом конечное значение должно быть больше или равно начальному. В противном случае оператор не выполняется.
В операторе вида (8.2) использовано слово Downto. При этом значения параметра убывают (изменяются от большего – начального значения – до меньшего с шагом -1). Работу оператора иллюстрирует схема рис. 2.5,б.
Е
Рис.
2.5. Схема работы оператора For
В общем случае (если параметр пробегает несколько значений) оператор 1 выполняется несколько раз.
Пример: {к величине S прибавляется 10 чисел от 1 до 10}
For i := 1 To 10 Do
S:= S+i;
Если многократно нужно выполнить несколько операторов, то они помещаются в блок операторов – между служебными словами Begin и End.
Пример. Ввести в ЭВМ 10 трёхзначных чисел и распечатать их цифры в обратном порядке, т.е. начиная с младшей.
Алгоритм (укрупненный).
1. Для номера от 1 до 10 выполнить
Ввести и обработать число
2. Конец.
Детализируем этот алгоритм.
1. Для номера от 1 до 10 выполнить
1.1. Ввести число.
1.2. Ц.1 = число mod 10; {выделяем младшую цифру}
1.3. Число = число div 10; {выделяем две старших цифры}
1.4. Ц.2 = число mod 10; {выделяем среднюю цифру}
1.5. Ц.3 = число div 10; {выделяем старшую цифру}
1.6. Вывести Ц1, Ц2, Ц3.
Программа для этого алгоритма будет иметь вид
Program Dig;
Const
D=10;
Var
Num,C1,C2,C3 : Integrer; {исходное число и цифры}
i : Integrer; {номер числа }
Begin
For I := 1 To D Do
Begin
Readln(Num);
C1:=Num Mod D;
Num:=Num Div D;
C2:=Num Mod D;
C3:=Num Div D;
Writeln(C1:2,C2:2,C3:2)
End;
End.
Пункты 1.2 – 1.6 можно также выполнить в цикле вида
For C2:=1 To 3 Do
Begin
C1:=Num Mod D;
Writeln (C1);
Num:=Num Div D;
End;