
- •Кафедра с а п р
- •Часть 1
- •1. Алфавит языка Паскаль
- •Данные в языке Паскаль
- •2.1 Порядковые типы данных
- •2.1.1 Целые типы данных
- •2.1.2 Логический тип данных
- •Символьный тип данных
- •2.1.4 Перечислимый тип данных
- •Ограниченный тип данных
- •2.2 Вещественные типы данных
- •3. Структура программ на языке TurboPascal
- •Описание меток
- •Описание переменных
- •Var имя переменной : тип;
- •Описание типов
- •Описание простых и типизированных констант
- •Арифметические выражения
- •Логические выражения
- •Оператор присваивания
- •Составной оператор
- •Процедуры ввода и вывода данных
- •Линейные алгоритмы и программы
- •Операторы условной и безусловной передачи управления
- •Алгоритмы и программы с разветвлением
- •10. Оператор выбора
- •11. Операторы циклов
- •11.1 Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Циклические алгоритмы и программы
- •Вариант 3
- •Использование циклических алгоритмов и программ для вычисления суммы членов ряда
- •При составлении алгоритма и программы будем считать, что точность
- •Массивы и их описание
- •Var Имя_массива: Array[t1] of [t2];
- •Var Имя_массива: Имя_типа_массива;
- •12.1 Работа с одномерными массивами
- •12.2 Работа с двумерными массивами
- •Текст программы
- •Варианты заданий
- •Строковый тип данных. Операции над строками
- •Множества в Паскале, их описание. Операции над множествами
- •Var Имя множества:Set of базовый тип;
- •Var Имя множества:Имя типа;
- •Тип данных - записи, их описание и использование. Оператор присоединения
- •1. Var Имя записи:record
- •Var Имя записи:Имя типа для записи;
- •15.1 Работа с массивом из записей
- •16 Подпрограммы
- •16. 1 Процедуры. Описание процедур. Область действия имён Локальные и глобальные параметры
- •16.2 Подпрограммы типа function, их описание
- •17. Задача сортировки: алгоритмы и программы
- •Сортировка выбором
- •Обменная сортировка
- •Сортировка слиянием
- •18 Задача поиска: алгоритмы и программы
- •18.1 Линейный поиск
- •Двоичный поиск
10. Оператор выбора
Для разветвления в программе более чем в 2-х направлениях, можно использовать оператор выбора:
Case <Выражение - ключ выбора> OF <Список выбора> End
Или
Case <Выражение - ключ выбора> OF <Список выбора>
Else <Операторы> End
Ключ выбора - выражение любого порядкового типа;
<Список выбора> - одна или более конструкций вида:
<Константа выбора> : <Оператор>;
<Константа выбора> - выражение того же типа, что и ключ выбора;
Оператор выбора работает следующим образом: вычисляется значение выражения <ключ выбора>, а затем в последовательности операторов <список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает работу. Если в списке выбора нет такой константы, то управление передается оператору, стоящему за ключеваым словом Else. Часть Else может отсутствовать и в этом случае оператор выбора завершает свою работу.
11. Операторы циклов
В языке ТР имеются три различных оператора, с помощью которых организуются циклические (повторяющиеся) фрагменты программ.
11.1 Оператор цикла с предусловием
Оператор цикла с предусловием имеет вид:
While <условие> Do <оператор>;
где <условие> - логическое выражение.
Если логическое выражение принимает значение TRUE (истина), то выполняется оператор, стоящий после ключевого слова Do, в противном случае оператор While прекращает свою работу. На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).
Оператор цикла с постусловием
Оператор цикла с постусловием имеет вид:
Repeat <Тело_цикла> Until <условие>
где <Тело цикла> - последовательность операторов ТР;
<условие> - логическое выражение.
Операторы "тела цикла" выполняются хотя бы один раз, после чего
вычисляется значение логического выражения и если это значение FALSE,
то операторы "тела цикла" повторяются, в противном случае оператор
цикла завершает свою работу.
Оператор цикла с параметром
Оператор цикла с параметром имеет вид:
For <параметр_цикла> := <нач.знач.> To < конеч.знач.> Do <оператор>;
где <параметр_цикла> - переменная любого порядкового типа;
<нач.знач.> - начальное значение - выражение того же типа;
<конеч.знач.> - конечное значение - выражение того же типа;
На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).
Для более гибкого управления операторами циклов For, While, Repeat в ТР введены две процедуры:
BREAK - реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за после последнего оператора цикла.
CONTINUE - обеспечивает досрочное завершение очередного прохода цикла, что эквивалентно передаче управления в самый конец циклического оператора.
Лабораторная работа №3
Циклические алгоритмы и программы
Цель работы:
1. Построение схем циклических алгоритмов;
2. Использование операторов циклов (повторений):
Типовой пример
Составить схему алгоритма и программу для вычисления значений
функции Y для значений переменной х, изменяющейся в интервале от a до b
с заданным шагом h.
Решение
Так как в языке Pascal нет стандартной функции извлечения корня любой степени кроме квадратного, для вычисления функции Y воспользуемся переходом к функциям Exp и Ln.
При программировании необходимо учесть, что выражение, стоящее под знаком Ln, может быть только положительным: (6x2-x3) > 0.
Исходными данными в этой задаче являются значения a,b и h.
Начальное значение х принимаем равным а (х:=а). Каждое следующее значение х вычисляется по формуле х:=х+h. Вычисления функции Y для новых значений х заканчиваются, когда значение х становится больше, чем заданное значение b.
Схема алгоритма и программа вычислений зависит от того, какой оператор цикла используется в программе. Рассмотрим три различных варианта решения поставленной задачи.
Вариант 1
Схема алгоритма с использованием цикла While ... Do
нет
да
Текст программы
{Лабораторная работа 3}
{Программирование циклов с использованием оператора WHILE}
{Студенты гр. ..... Фамилии …}
Uses crt; {Подключение стандартного модуля TP}
Var x,y,H,A,B: real;
BEGIN Clrscr; { Очистка экрана}
Writeln(' Введите A B H'); read(A,B,H);
x:=A;
While x<=B Do
Begin
if (6*x*x-x*x*x)<=0 then
Writeln('При x= ',x:5:3,' под знаком логарифма недопустимое значение')
Else begin
y:= Exp (1.0/3.0* Ln(Abs(6*x*x-x*x*x)));
Writeln('x=',x:8:3,' y=',y:8:3);
end; {Конец else}
x:=x+H;
Еnd; {Конец while} Readkey; { Ожидание нажатия любой клавиши}
END.
Вариант 2
Схема алгоритма с использованием цикла Repeat ... Until
нет
да
нет
да
Текст программы
{Лабораторная работа 3}
{Программирование циклов с использованием конструкции REPEAT…UNTIL}
{Студенты гр. ... Фамилии ...}
Uses crt; {Подключение стандартного модуля TP}
Var x,y,A,B,H: real;
BEGIN Clrscr; { Очистка экрана}
Writeln(' Введите A B H'); readln(A,B,H);
x:=A;
Repeat
if (6*x*x-x*x*x)=<0 then
Writeln('При x= ',x:5:3, ' под знаком логарифма недопустимое значение')
Else begin
y:= Exp(1.0/3.0* Ln(Abs(6*x*x-x*x*x)));
Writeln(' x= ',x:8:3,' y= ',y:8:3);
end;
x:=x+H;
Until x>B; Readkey;{Ожидание нажатия любой клавиши}
END.