- •Лабораторный практикум по информатике
- •Часть II программирование в системе турбо паскаль
- •Введение
- •Лабораторная работа №1 Создание простейшей программы
- •Начало работы с новой программой
- •Задание 1
- •Сохранение текстового файла программы на диске:
- •Задание 2
- •Задание 3
- •Задание 4
- •Лабораторная работа №2 Ввод данных и вывод результатов
- •Задания
- •Лабораторная работа №3 Программирование линейных алгоритмов
- •Задание
- •Лабораторная работа №4 Программирование разветвляющихся алгоритмов
- •Задание 1
- •Задание 2
- •Лабораторная работа № 5 Программирование циклических алгоритмов с известным числом повторений
- •Задание
- •Лабораторная работа №6 Программирование циклических алгоритмов с неизвестным числом повторений
- •Задания
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №7 Программирование алгоритмов итерационной циклической структуры
- •Задание
- •Лабораторная работа №8 Массивы
- •Лабораторная работа №9 Процедуры и функции пользователя в языке Паскаль
- •Задание
- •Лабораторная работа №10 Записи
- •Задания
- •Лабораторная работа №11 Работа с файлами
- •Лабораторная работа №12 Графический режим в языке Паскаль
- •Лабораторная работа №13 Построение графика функции
- •Задания
- •Лабораторная работа №14 Создание движущихся изображений
- •Задание 1
- •Задание 2
- •Лабораторная работа №15 Вычисление определённого интеграла численными методами
- •Метод прямоугольников
- •Метод трапеций
- •Метод Симпсона
- •Задания
- •Лабораторная работа №16 Решение нелинейных уравнений численными методами
- •Метод половинного деления
- •Метод Ньютона
- •Метод хорд
- •Задания
- •Лабораторная работа №17 Решение обыкновенных дифференциальных уравнений численными методами
- •Метод Эйлера
- •Модифицированный метод Эйлера
- •Метод Рунге-Кутта
- •Задание
- •Приложение
- •Список литературы
- •Оглавление
- •Лабораторный практикум по информатике
- •Часть II программирование в системе турбо паскаль
- •Архангельск
Задание
Разработать программу для расчета и вывода таблицы значений функции, состоящей из n строк, в соответствии с вариантом задания, при изменении аргумента от начального и с заданным шагом x. Ввод исходных данных организовать с помощью присваивания значений переменным:
Вари ант |
Функция |
Условие |
a |
b |
c |
xn |
x |
n |
1 |
|
1x2 x<1 x>2 |
–0,5 |
2 |
– |
0 |
0,15 |
17 |
2 |
|
x<1,3 x=1,3 x>1,3 |
1,5 |
– |
– |
0,8 |
0,1 |
13 |
3 |
|
x<1,2 x=1,2 x>1,2 |
2,8 |
–0,3 |
1 |
1 |
0,05 |
17 |
4 |
|
x<1,4 x=1,4 x>1,4 |
1,65 |
– |
– |
0,7 |
0,1 |
14 |
5 |
|
x<1 x=1 1<x<2 x>2 |
2,3 |
– |
– |
0,2 |
0,2 |
14 |
6 |
|
x>a x=a x<a |
2,5
|
– |
– |
1 |
0,5 |
9 |
7 |
|
bx<1 bx=1 bx>1 |
– |
1,5 |
– |
0,7 |
0,1 |
14 |
8 |
|
x>3,5 x 3,5 |
– |
– |
– |
2 |
0,1 |
16 |
9 |
|
x>1 x1 |
20,3 |
– |
– |
0,5 |
0,1 |
15 |
10 |
|
x<0,5 x=0,5 x>0,5 |
– |
– |
2,2 |
0,2 |
0,2 |
10 |
Лабораторная работа №6 Программирование циклических алгоритмов с неизвестным числом повторений
Для организации циклов с заранее неизвестным числом повторений (а также и для организации циклов с известным числом повторений) используют оператор цикла с предусловием (оператор while) и оператор цикла с постусловием (оператор repeat). Вид оператора цикла с предусловием:
While b do s;
Здесь b – логическое выражение, s – тело цикла. При выполнении оператора сначала проверяется логическое выражение, а затем выполняется тело цикла, т.е. операторы циклической части. Цикл повторяется, пока логическое выражение истинно. Когда оно становится ложным, происходит выход из цикла. Если с самого начала логическое выражение ложно, тело цикла не выполнится ни разу. Если тело цикла является составным оператором, т. е. состоит из нескольких операторов, его необходимо ограничить операторными скобками begin и end.
Вид оператора цикла с постусловием:
repeat s until b;
Здесь s – тело цикла, b - логическое выражение. При выполнении оператора сначала выполняется тело цикла, а затем проверяется логическое выражение. Цикл повторяется, пока логическое выражение ложно. Когда оно становится истинным, происходит выход из цикла. Таким образом, если даже логическое условие изначально истинно, обеспечивается, по крайней мере, одно выполнение тела цикла.
Операторы While и Repeat позволяют организовывать итерационные циклы, в которых происходит последовательное приближение к искомому значению с заданной точностью. Условием выхода из цикла является достижение заданной точности.
Пример 1. Найти k, при котором значение суммы s=3+6+9+...+3k становится больше t при вводе t с клавиатуры.
Решение. Каждое слагаемое равно произведению числа 3 на порядковый номер этого слагаемого. Поэтому можно организовать цикл, в котором s находится путем прибавления предыдущего значения s к порядковому номеру слагаемого, умноженному на 3. В цикле также должен увеличиваться на единицу порядковый номер слагаемого. Перед циклом следует обнулить начальное значение s и задать начальное значение k. Выход из цикла происходит, когда s станет больше t. Поскольку количество повторений заранее неизвестно, можно использовать для организации цикла операторы While или Repeat, но нельзя использовать оператор For.
Существуют значения t (например, при t = –5), при которых цикл не должен быть выполнен ни разу. В этом случае для организации цикла надо использовать оператор While. Если производится суммирование, обязательно присвоить начальное значение s=0. Следует учесть, что сначала происходит увеличение k, а затем расчет s. Поэтому первоначальное значение k=0. Ниже приведён текст программы.
Uses Crt; {Подключение модуля crt}
Var {Описание переменных}
s,k:integer;
t:real;
Begin
Clrscr; {Очистка экрана}
Write('t= ');
Readln(t); {Ввод значения t}
s:=0; k:=0; {Начальные значения s и k}
While s<=t do {Начало цикла/проверка условия}
begin
k:=k+1; {Увеличение k в цикле}
s:=s+3*k; {Расчет s}
end; {Окончание цикла}
Writeln('k= ',k); {Вывод на экран найденного значения k}
Readln;
End.
Пример 2. Вывести на экран в два столбца угловые значения земных параллелей от экватора до Северного полюса через каждые 10 и соответствующие им длины параллелей, считая Землю идеальным шаром с радиусом 6370 км.
|
Решение. Длину земной параллели можно найти по формуле D=2rp=2rzcos(), где rp - радиус параллели, rz - радиус Земли, - угловая величина параллели (см. рис). Длину следует рассчитывать и выводить на экран 10 раз по одной и той же формуле, изменяя только угол (0, 10,…,90). Поэтому организуем цикл, в котором рассчитывается длина параллели и выводятся на экран значения угла и длины параллели. В цикле также необходимо увеличивать значение угла на 10. Перед циклом следует задать начальное значение , равное 0. |
Поскольку в Паскале тригонометрические функции рассчитываются от углов, выраженных в радианах, то угловую величину параллели следует переводить из градусов в радианы по выражению /180.
Число повторений в цикле известно (равно 10), поэтому для организации цикла можно использовать операторы For, While или Repeat.
Текст программы при использовании оператора Repeat:
Uses Crt;
Var
rz,alfa:integer;
dlina:real;
Begin
Clrscr; {Очистка экрана}
rz:=6370; {Значение радиуса Земли}
alfa:=0; {Начальное значение широты (экватор)}
Repeat {Начало цикла}
dlina:=rz*cos(alfa*pi/180)*2*pi; {Расчет длины параллели}
Writeln(alfa:3,' ',dlina:7:1); {Вывод на экран}
alfa:=alfa+10; {Увеличение широты}
Until alfa>90; {Конец цикла/проверка условия}
Readln;
End. {Конец программы}