- •Содержание
- •1Алгоритмы линейных структур
- •2 Циклы
- •Введение
- •1 Алгоритмы линейных структур
- •1.1 Этапы разработки программы
- •1.2 Основные понятия
- •1.3 Основная структура программы
- •1.4 Алфавит языка
- •1.5 Идентификаторы
- •1.6 Константы
- •1.7 Понятие переменной Типы
- •1.8 Оператор присваивания Арифметические выражения
- •1.9 Операторы ввода и вывода информации
- •1.10 Практические задачи
- •1.11 Примеры решения задач
- •2 Циклы
- •2.1 Цикл с предусловием
- •Цикл с постусловием
- •Цикл со счетчиком
- •2.2 Задачи
- •2.3 Примеры
- •3 Немного об алгоритмах Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера – Мура
- •Алгоритм Рабина
- •Алгоритмы сортировки
- •Метод пузырька.
- •Сортировка выбором
- •Метод Шелла
- •Метод Хoopа
- •3.1 Разветвляющиеся алгоритмы
- •3.2 Задачи Свойства и виды треугольников (задачи 1-4)
- •Свойства и виды четырехугольников (задачи 5, 6)
- •Каким будет значение переменной а после выполнения фрагмента программы с составным оператором?
- •4 Массивы
- •4.1 Объявление массива
- •4.2 Действия над массивами
- •4.3 Вывод массива
- •4.4 Ввод массива
- •4.5 Сортировка массива
- •4.6 Поиск в массиве
- •4.7 Поиск минимального (максимального) элемента массива
- •4.8 Многомерные массивы
- •4.9 Ошибки при использовании массивов
- •4.10 Практические задачи
- •5 Множества
- •5.1 Описание типа множество
- •5.2 Операции над множествами
- •5.3 Группы операций
- •5.4 Упражнения
- •5.5 Задачи Тема: Множества
- •6 Записи
- •6.1 Понятие записи
- •6.2 Оператор присоединения With ... Do
- •6.3 Вариантные записи
- •6.4 Работа с файлами записей
- •6.5 Задачи
- •7 Файлы
- •7.1 Работа с файлами
- •7.2 Текстовые файлы
- •7.3 Типизированные файлы
- •7.4 Нетипизированные файлы
- •7.5 Задачи
- •8 Графика
- •8.1 Графика в Турбо Паскале
- •8.2 Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •8.3 Экран и окно в графическом режиме
- •8.4 Вывод простейших фигур
- •8.5 Графические процедуры
- •8.6 Построение прямоугольников
- •8.7 Построение многоугольников
- •8.8 Построение дуг и окружностей
- •8.9 Работа с текстом
- •8.10 Построение графиков функций
- •8.11 Циклы в графике. Построение случайных процессов
- •8.12 Создание иллюзии движения
- •Задания
- •Контрольные тесты
- •1. Программирование алгоритмов линейных структур
- •2. Программирование алгоритмов разветвляющейся структуры
- •3. Программирование алгоритмов циклических структур
- •4. Массивы
- •5. Множества
- •6. Записи
- •7. Файлы
- •8. Графика
1.11 Примеры решения задач
Задание:
Разработать алгоритм и составить программу вычисления значения выражения, соответствующего варианта. Ввести исходные данные и результат с пояснительным текстом.
Программа:
uses crt;
var
a, b, x, y: real;
begin
clrscr;
writeln('Введите значение Х ');
readln(x);
writeln('Введите значение A ');
readln(a);
a:=sin((sqrt(abs(exp(5*ln(x))+a))))/(exp(-x)+exp(9))/cos(sqrt(abs(exp(5*ln(x))+a)))/(exp(-x)+exp(9));
y:=3.14*(a)-1.65*exp(-x*a)+0.33*ln((sqr(x)+1)/(sqr(x)+pi));
writeln('Значение Y ', y:3:3);
readkey;
end.
Блок-схема:
Задание:
Найти площадь сегмента.
sin 2
) ( R 2 1 S сегм
где Sсегм —площадь сегмента, см2;
R —радиус круга, см;
a —дуга сегмента, рад.
Исходные данные для расчета приведены в таблице.
Параметры расчета |
R |
a |
Числовые значения |
220,0 |
161,3 |
Ход программы
Program zadacha5_1;
Var r,a,s:real;
Begin
Write('ввудите радиус круга в см. r =');
Readln(r);
Write('введите дугу сегмента в рад а=');
Readln(a);
s:=1/(2*r*r*(a-sin(a)));
Writeln('Площадь сегмента s=',s:17:13);
end.
Блок-схема
2 Циклы
Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме.
Циклы принадлежат к числу управляющих операторов.
Рассмотрим задачу на вычисление суммы большого числа слагаемых:
Можно заметить, что при вычислении суммы повторяются всего три операции, причем в определенном порядке:
Разделить единицу на знаменатель.
Прибавить частное к ранее полученной сумме.
Увеличить на 1 значение знаменателя.
Следовательно, задачу можно решить, например, так:
Присвоить переменной Sum значение, равное 0 (Sum := 0).
Присвоить переменной i значение, равное 1 (i := 1).
Добавить к сумме значение 1 / i (Sum := Sum + 1 / i).
Увеличить i на 1 (i := i + 1).
Повторить шаги 3 и 4.
Повторив операции 3 и 4 99 раз, мы получим требуемую сумму. Это пример алгоритмической конструкции «цикл».
В языке программирования Паскаль имеется три разновидности цикла:
цикл со счетчиком (цикл «для» — for ... to / downto);
цикл с предусловием (цикл «пока» — while);
цикл с постусловием (цикл «до тех пор, пока» — repeat.until).
Каждая из трех разновидностей цикла имеет свои особенности, для каждой из них есть свой круг задач, наиболее естественно решаемых именно с ее помощью.
2.1 Цикл с предусловием
Цикл с предусловием имеет вид:
while условие do {Эта часть называется заголовком цикла}
оператор; {Эта часть называется телом цикла}
Телом цикла может быть и группа операторов, заключенная в операторные скобки begin... end (то есть составной оператор).
Цикл с предусловием выполняется до тех пор, пока истинно условие в заголовке цикла, причем оно проверяется вначале, потом исполняется оператор. Переменным, входящим в условие, должны быть присвоены определенные значения до входа в цикл.
В теле цикла должны быть операторы, которые в какой-то момент изменят значение условия, сделав его ложным. Если этого не случится, цикл будет бесконечным. При возникновении в программе бесконечного цикла говорят, что программа «зациклилась». Зациклившуюся программу приходится останавливать одновременным нажатием клавиш Ctrl+Break, иначе она будет выполняться вечно (точнее, до первого отключения компьютера).
Задача о вычислении суммы может быть решена с использованием цикла while... do следующим образом:
program summa1;
const
n = 100; {Так объявляется именованная константа программы}
var i : Integer; sum : Real;
begin sum:= 0;
i := 1; {Присвоим переменной sum начальное значение 0, a i - начальное значение 1}
while i <= n do begin
sum.:= sum + 1 / i ;
i := i + 1 {Переменная i меняется внутри цикла, и ее величина определяет очередное повторение тела цикла}
end;
WriteLn('сумма ', n, ' элементов = ', sum:10:5);
end.
Цикл в этой программе работает следующим образом:
вначале i =1, sum = 0;
условие i <= 100 в заголовке - оператора while истинно, поэтому начинается выполнение цикла;
значение суммы увеличивается на единицу: sum = 0+1;
i увеличивается на 1 i = 2;
условие i <= 100 вновь истинно, поэтому тело цикла повторяется очередной раз;
значение суммы sum = 0 + 1 + 1/2,a переменной = 3;
после выполнения данной последовательности действий необходимое число раз получаем sum = ...+ 1 / 100 , i = 101;
условие i <= 100 ложно, поэтому цикл завершается. Следующим действием будет вывод результата.
Отметим, что в данном решении использовалась константа. Константа может иметь имя, тогда она называется именованной константой. Объявляется именованная константа в предложении описания констант, которое размещается в разделе описаний программы и имеет вид:
const имя = значение;
Использование именованных констант преследует две цели:
сделать программу более удобной для понимания. Если, допустим, в программе часто используется число 12, то иногда удобнее один раз дать ему имя, например dozen, а затем использовать это имя;
облегчить изменение программы. Если, скажем, нужно изменить количество элементов суммы, то лучше изменить одну строку в предложении описания констант, чем вносить исправления по всей программе.