- •Курс лекций Язык программирования Turbo Pascal
- •Тема 1 «Языки программирования»
- •Тема 2 «Основные понятия языка»
- •2.1 Алфавит языка
- •2.2 Основные определения языка
- •2.3 Служебные слова
- •2.4 Стандартные имена
- •2.5 Идентификатор
- •2.5 Элементы данных
- •Тема 3 «Общая структура программы на языке Turbo Pascal»
- •3.1 Общая структура программы на Паскале.
- •3.2 Некоторые правила оформления программ
- •Тема 4 «Типы данных, выражения»
- •4.1. Типы данных
- •4.2 Целочисленные типы данных
- •4.3 Вещественные типы данных
- •4.4 Символьный тип данных
- •4.5 Булевский тип (Логический) данных
- •4.6 Перечисляемый тип.
- •4.7 Интервальный тип.
- •4.8 Выражения.
- •1. Умножение, деление;
- •3. Сложение, вычитание.
- •1) Арифметические операции;
- •2) Операции отношений;
- •3) Логические операции.
- •4.9 Объявление констант
- •4.10 Объявление переменных
- •Тема 5 «Операторы для записи линейных процессов»
- •5.1 Оператор присваивания
- •5.2 Оператор ввода числовых данных
- •5.3 Оператор вывода числовых данных
- •5.4 Вывод числовых данных с форматом и без формата
- •1. Вывод данных без формата.
- •2. Вывод данных с форматом.
- •Контрольные вопросы и задания
- •Тема 6 «Разветвляющиеся вычислительные процессы»
- •6.1 Типы разветвляющихся алгоритмов
- •6.2 Оператор выбора case
- •Тема 7 «Операторы цикла»
- •7.1. Типы циклических процессов
- •7.2 Цикл с известным числом повторений for
- •Оператор повтора for.
- •Домашнее задание:
- •7.3 Итерационные циклы
- •7.4 Оператор цикла с предварительным условием
- •7.5 Оператор цикла с последующим условием Repeat
- •Домашнее задание:
- •8.1 Модуль crt. (Процедуры и функции управления экраном)
- •8.2 Константы цветов.
- •Процедуры управления цветом.
- •Тема № 9: «Структурированные типы данных»
- •9.1. Массивы
- •9.2. Записи
- •9.2.1. Оператор присоединения
- •9.2.2. Записи с вариантами.
- •9.3. Множества
- •9.4. Строки
- •9.4.1. Основные операции
- •9.4.2. Доступ к элементам строковых данных
- •9.4.3. Пустой стринг
- •9.4.4. Функции преобразования
- •9.4.5. Стандартные процедуры и функции
- •Тема № 10: Работа с файлами
- •10.1. Доступ к файлам
- •10.1.1. Имена файлов
- •Инициация файла
- •10.2.Процедуры и функции для работы с файлами
- •10. 3. Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Тема № 11: «Процедуры и функции»
- •11.1. Процедуры
- •11.2. Функции
- •Тема №12: Указатели и динамическая память.
- •12.1. Выделение и освобождение динамической памяти.
- •Тема № 13: Модули.
- •13.1.Компиляция модулей.
- •13.2. Стандартные модули.
- •13.2.1.Модуль crt.
- •13.2.2. Модуль Graph
- •13.2.3. Модуль Overlay
- •Задания для самостоятельной работы по теме «линейные алгоритмы»
- •Задания для самостоятельной работы по теме «разветвляющиеся алгоритмы»
- •Задания для самостоятельной работы по теме «циклические алгоритмы»
- •Задания для самостоятельной работы «векторы»
- •Задания для самостоятельной работы «строки»
- •Задания для самостоятельной работы «процедуры и функции»
- •Задания для самостоятельной работы «записи»
- •Задания для самостоятельной работы по теме «множества»
- •Задания для самостоятельной работы по теме «файлы»
- •Задания для самостоятельной работы по теме «модуль graph»
- •Задания для самостоятельной работы по теме «модули, определяемые пользователем»
Тема 7 «Операторы цикла»
7.1. Типы циклических процессов
Командой повторения или циклом называется такая форма организации действий, при которой одна и та же последовательность действий повторяется до тех пор, пока сохраняется значение некоторого логического выражения. При изменении значения логического выражения на противоположное повторения прекращаются (цикл завершается).
Для организации цикла необходимо выполнить следующие действия:
перед началом цикла задать начальное значение параметра;
внутри цикла изменять параметр цикла с помощью оператора присваивания;
проверять условие повторения или окончания цикла;
управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из цикла в противном случае.
Различают циклы с известным числом повторений (цикл с параметром) и итерационные (с пред- и постусловием).
7.2 Цикл с известным числом повторений for
В случаях, когда число повторений заранее известно, для организации циклической обработки информации применяется оператор цикла с параметром FOR. Циклы с фиксированным числом повторений изображаются в графических схемах алгоритма с помощью специального блока, называемого блоком модификации (см. рис.)
Здесь в записи блока модификации переменная I называется параметром цикла, значения N, K задают соответственно начальное и конечное значение параметра цикла.
Блок модификации задает следующую последовательность действий:
1. Параметру цикла I присваивается начальное значение N.
2. Проверяется условие I > K. Если условие выполняется, то происходит выход из цикла, в противном случае осуществляется переход на следующий пункт - пункт 3.
3. Выполняются предложения, составляющие тело цикла.
4. К параметру цикла добавляется значение шага.
5. Выполняется переход к пункту 2.
Оператор повтора for.
FOR- для TO - до DO- делать, выполнять
. Оператор повтора состоит из заголовка ( FOR…DO) и тела цикла.
Формат записи :
FOR <имя переменной>:=<выражение1> ТО <выражение 2> DO <тело цикла>
FOR <имя переменной>:=<выражение1> DOWNТО <выражение 2> DO <тело цикла>
выражение1- определяет начальное значение параметра цикла
выражение2- определяет конечное значение параметра цикла
Тело цикла - это последовательность действий, которая выполняется многократно.
Тело цикла может быть простым или составным оператором.
Оператор FOR обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного.
Значения управляющей переменной изменяется на +1(TO) или -1 (DOWNTO).
Переменная-счетчик должна быть порядкового типа (чаще- целая, реже- символьная CHAR или логическая BOOLEAN или др. кроме вещественного). Начальное и конечное значения переменной могут быть константами, переменными, выражениями и должны иметь тип, совместимый с типом параметра цикла.
В теле цикла запрещается явное изменение значения параметра цикла, после завершения оператора цикла значение параметра цикла становится неопределенным, если только выполнение оператора не было прервано оператором перехода.
Пример 1.Сравните программы:
PROGRAM PRIMER1;
VAR N:BYTE;
LABEL M,D;
BEGIN
N:=1;
D:IF N>10 THEN GOTO M
WRITELN(N, ‘ ‘,SQR(N));
N:=N+1;
GOTO D;
M:END;
PROGRAM PRIMER2;
VAR N:BYTE;
BEGIN
FOR N:=1 TO 10 DO WRITELN(N, ‘ ‘,SQR(N));
END;
Пример 2.Что будет выведено на экран?
For i:=10 to 14 do write(i:3);
Выведет на экран последовательность цифр в виде: 10 11 12 13 14
Пример 3.Что будет выведено на экран?
For i:=14downto 10 do write(i:3);
Выведет на экран последовательность цифр в виде: 14 13 12 11 10
Пример 4. Если переменная-счетчик имеет символьный тип Char, то оператор:
For сh:=’a’ to ‘e’do write(ch:2);
Выведет на экран последовательность букв в виде: a b c d e
Пример 5. Если переменная-счетчик имеет символьный тип Char, то оператор:
For сh:=’e’ downto ‘a’ do write(ch:2);
Выведет на экран последовательность букв в виде: e d c b a
Пример 6.
Обратите внимание- Цикл FOR удобно использовать для организации вывода данных программы. Вместе с оператором IF процедурой READLN он позволяет выполнить постраничный вывод. Например, при выполнении следующего цикла программа будет приостанавливать вывод после заполнения экрана столбцом цифр до нажатия клавиши <ENTER>
For i:=1 to150 do
Begin
Writeln(i);
If I mod 24=23 then readln;
End;
Замечание.
Для досрочного выхода из цикла можно использовать оператор GOTO или BREAK . Процедура CONTINUE позволяет прервать выполнение тела любого цикла и передает управление на его заголовок, заставляя цикл немедленно перейти к следующему выполнению (итерации)
Пример 7. Фрагмент программы с досрочным выходом из цикла:
…
f:=0;
For i:=1 to 45 do
Begin
f:=f+I;
If (f>100)or(i=39) then break;
End;
…
Пример 8. Дано натуральное n, действительное x. Вычислить
Разработаем алгоритм решения задачи:
1) ввести данные - количество слагаемых n и число x;
2) присвоить переменной, в которой будем хранить степени sin x, значение 1; S := 0;
3) присвоить параметру цикла значение 1;
4) если значение параметра цикла меньше n, перейти к следующему пункту, иначе к п. 9;
5) вычислить очередную степень sin x;
6) добавить вычисленное значение к сумме;
7) увеличить параметр цикла на 1;
8) перейти к п.4;
9) вывести на печать сумму S;
10) конец.
{Программа вычисления суммы степеней sin x}
Program Summa;
Var S, X, Pr : Real; N, I : Integer;
Begin
Write('Введите число слагаемых и x: '); ReadLn(N, X);
Pr := 1; {в этой переменной хранятся последовательные степени sin x}
S := 0;
For I := 1 To N Do
Begin
Pr := Pr * Sin(X); {Очередная степень Sin(x)}
S := S + Pr
End;
WriteLn('Сумма равна ', S : 7 : 4)
End.
Функция random (диапазон)- возвращает случайное число х (0<=x<диапазон). Тип аргумента и результата word. Если нам необходимы целые случайные числа из диапазона a<=x<b, нужно использовать выражение random(b-a)+a. Если параметр диапазона не указан, то random возвращает число х в диапазоне 0<=x<1, тип результата- real. Перед первым обращением к функции random нужно с помощью вызова процедуры randomize инициализировать программный генератор случайных чисел. В противном случае при каждом запуске программы датчик будет выдавать одни и те же числа.
Пример 9. Тест по таблице умножения
Uses crt;
Var s1,s2,otvet,k,prav:integer;
Begin
Randomize;
Clrscr;
For k:=1 to 5 do
begin
S1:=random(18)+2; s2:=random(18)+2;{чтобы не умножать на 0 и 1}
Write(‘сколько будет’,s1,’*’,s2,’?’);
Readln(otvet);
If otvet=s1*s2 then begin
Writeln(‘правильно!’);
prav:=prav+1;
End
Else write(‘неверно…’);
End;
Clrscr;{очистка экрана}
Writeln(‘Ваша оценка=> ’,prav);
Readln;
End.
Пример 10. Определение максимального, минимального, и среднего числа.
Var
A:real;
N: integer;
Sum,average:real;
Min,max:real;
I:integer;
Begin
Writeln(‘Введите кол-во чисел последовательности’);
readln(n);
Writeln(‘Вводите последовательность’);
Writeln(‘->’); readln(a);
Min:=a;
Max:=a;
Sum:=a;
{Введем остальные числа}
For a:=1 to n-1 do
begin
Write(‘->’); readln(a);
Sum:=sum+a;
If a<min then min:=a;
If a>max then max:=a;
End;
Average:=sum/n;
Writeln(‘количество чисел=’, n);
Writeln(‘среднее арифметическое=’average:7:3);
Writeln(‘минимальное число=’,min:7:3);
Writeln(‘максимальное число=’, max:7:3);
End.
