- •1. Алгоритмизация
- •1.1.Функциональная схема эвм.
- •1.2. Этапы решения задач на эвм.
- •1.3. Язык блок-схем для представления алгоритмов
- •1.4. Базовые структуры алгоритмов
- •1.5. Конструирование сложных алгоритмов
- •2. От алгоритма к программе
- •2.1. Концепция данных в Турбо-Паскале
- •2.2. Структура Паскаль - программы
- •2.3. Комментарии
- •2.4 Операторы
- •2.4.1 Оператор присваивания
- •2.4.2. Составной оператор
- •2.4.3. Логические выражения
- •2.4.4. Условный оператор
- •2.4.5. Оператор цикла с параметром
- •2.4.6. Оператор цикла с постусловием
- •2.4.7. Оператор цикла с предусловием
- •2.5. Производные типы
- •2.5.1 Перечислимые типы
- •2.5.3. Регулярные типы (массивы)
- •2.5.4. Многомерные массивы
- •2.5.5.Комбинированные типы (записи)
- •2.6. Подпрограммы
- •2.6.1. Функции
- •2.6.2. Процедуры
- •2.6.3. Формальные и фактические параметры
- •2.6.4. Параметры - значения
- •2.6.5. Параметры - переменные
- •2.6.6. Параметр - массив
- •2.6.7. Параметры подпрограмм без указания типа
- •2.6.8. Параметры - процедуры и параметры - функции
- •2.6.9 Локальные и глобальные переменные
- •3. Задания
- •3.1. Построение таблицы значений функции.
- •3.2 Вычисление сумм и произведений.
- •3.3. Вычисление функции разложением в ряд
- •3.4 Обработка одномерных массивов.
- •3.5 Проверка попадания точки в заданную область
- •3.6. Нахождение экстремумов последовательностей
- •3.7.Обработка простых двумерных массивов.
- •3.8 Обработка двумерных массивов
- •3.9. Разработка алгоритмов и программ нисходящим способом
- •3.10.Задачи на обработку символьных данных сложной структуры
- •Создать исходный типизированный файл.
- •Результаты записать в текстовый файл.
- •3.11 Задачи с использованием имени массива как параметра функции
- •3.12. Задача на использование формальных массивов в процедурах
- •3.13. Задачи на разработку программы с использованием созданной по условию процедуры
- •3.14.Задачи на использование функций в качестве параметров других функций.
- •3.15. Разработка многомодульных программ.
2.4.4. Условный оператор
Этим оператором программируют базовую конструкцию алгоритмов – ветвление. При выполнении программы, в зависимости от истинности некоторого условия выполняется та или иная ветвь программы. Записывается оператор в виде:
If S Then A Else B ,
где S - логическое выражение, истинность которого проверяется; A и B – операторы (простые или составные).
После оператора A, перед Else точку с запятой ставить не надо, так как точка с запятой указывает на конец оператора, а этот условный оператор заканчивается после оператора B.
Выполняется такой оператор следующим образом: проверяется значение выражения S, если оно истинно выполняется оператор A, иначе – оператор B.
Например: IF (x > 0) AND (x<3) Then y:=10
Else y:=ln(x);
Этот оператор реализует алгоритм, представленный на рис. 8.
Рис. 8
В этом примере, если x находится в интервале (0,3), y получает значение 10, если x вне интервала, y получает значение ln(x).
Возможен сокращенный вариант логического оператора – без Else.
В этом случае оператор имеет вид:
If S Then A;
Соответствующий ему алгоритм представлен на рис. 9
Рис. 9
Если выражение S истинно, выполняется оператор A, иначе он пропускается.
2.4.5. Оператор цикла с параметром
Этот оператор имеет вид:
For i:=V1 To V2 Do A,
где i - переменная перечислимого типа (как правило, целого), V1 и V2 - выражения того же типа, что и i, A - оператор (тело цикла).
Работа оператора. Вычисляются значения выражений V1 и V2. Переменная i (параметр цикла) получает значение V1 и выполняется тело цикла. Затем переменная i получает новое значение, а именно следующее значение того перечислимого типа, к которому она принадлежит (т.е. значение функции Succ(i)). Если это новое значение меньше значения V2, то выполняется еще раз тело цикла. И так до тех пор пока значение i не превысит значение V2, при этом осуществляется выход из цикла.
Следует иметь в виду, что значения выражений V1 и V2 вычисляются один раз при входе в цикл, и даже если некоторые переменные, входящие в V1 или V2, изменяются в теле цикла, это не повлияет на число повторений цикла.
Кроме того, если при входе в цикл значение V1 будет больше значения V2, тело цикла не выполнится ни разу. То есть этот оператор реализует цикл с предусловием.
После выполнения цикла значение параметра цикла имеет неопределенное значение.
Пример циклической программы.
Рассмотрим программу подсчета факториала числа N. По определению факториал числа N равен произведению чисел от 1 до N включительно, т.е. N! = 1*2*3*...*N. Ясно, что для подсчета факториала числа N, надо произвести N умножений. Для этого необходимо использовать цикл.
Приведенная ниже программа реализует алгоритм подсчета факториал, изображенный на рис.5.
Program Loop;
{подсчет факториала числа}
Var i,n, Fact : integer;
{ i - параметр цикла }
Begin
{ввод значения n}
Write(‘n=‘);
Readln(n);
Fact := 1;
{цикл для подсчета факториала}
For I := 1 to n Do
Fact := Fact * I;
Writeln(‘n! = ‘, Fact)
End.
Другая модификация оператора цикла с параметром имеет вид:
For i:= v1 downto v2 Do A;
Этот оператор отличается от рассмотренного тем, что выполняется по уменьшению значения параметра, т.е. следующее значение параметра есть Pred( i ). Соответственно тело цикла не будет выполнено ни разу, если при входе в цикл v1 < v2.