- •Лабораторная работа №1 Введение в язык Паскаль
- •Лабораторная работа №2 Программирование алгоритмов линейной структуры
- •Лабораторная работа №3 Программирование алгоритмов разветвляющей структуры
- •Лабораторная работа №4 Операторы цикла с параметром (со счетчиком)
- •Цикл с параметром (со счетчиком) записывается так:
- •Лабораторная работа №5 Операторы цикла с постусловием
- •Лабораторная работа №6 Операторы цикла с предусловием
- •Задачи:
- •Цикл с предусловием (While)записывается так:
- •Лабораторная работа №7
- •Лабораторная работа №8 Двумерные массивы
- •Лабораторная работа №9 Процедуры и функции
- •Лабораторная работа №10 Строки
Цикл с параметром (со счетчиком) записывается так:
for управляющая переменная:=<начальное значение> to <конечное значение> do <оператор>;
Вместо to возможно слово downto.
Пример: требуется вывести на экран таблицу квадратов натуральных чисел от 2 до 20.
var i: integer;
begin
for i:=2 to 20 do
writeln(i,' ',sqr(i));
end.
При выполнении цикла происходит следующее: переменной i присваивается начальное значение (2), затем выполняется оператор (простой или составной), после этого к i прибавляется 1, и проверяется, не стало ли значение i равно конечному (20). Если нет, то вновь выполняется оператор, добавляется 1, и т. д. В случае, когда вместо to используется downto, все происходит наоборот: единица не прибавляется, а вычитается. Например, следующий цикл выведет ту же таблицу, но в обратном порядке:
for i:=20 downto 2 do writeln(i,' ',sqr(i));
Решение одного варианта: Написать программу, которая вычисляет сумму первых n целых положительных чисел. Количество суммируемых чисел должно вводиться во время работы программы.
Блок-схема:
|
Описание блок-схемы: 1-блок – начало алгоритма 2-блок – ввод количество чисел (n) 3-блок – начальное значение суммы Summ=0 (только тогда при первом прохождении тела цикла мы получим значение переменной Summ равное первому слагаемому). 4-блок – начало цикла. Счетчик изменяется на единицу при каждом следующем исполнении оператора цикла. 5-блок – сумма постепенно накапливается. При выходе из цикла значение счетчика совпадает с конечным значением, т.е. 6-блок – печать полученного результата 7-блок – конец алгоритма |
program summa;
var n: integer;
summ: integer;
i: integer;
begin
write (‘введите количество суммируемых чисел’);
readln (n);
summ:=0;
for i:=1 to n do
summ:=summ+i;
write(‘сумма первых‘,n,’целых положительных чисел’);
writeln (‘равна’,Summ);
end.
Лабораторная работа №5 Операторы цикла с постусловием
Контрольные вопросы:
Как называется цикл, где сначала выполняется оператор, затем проверяется условие?
Сколько операторов можно записать между ключевыми словами repeat иuntil?
Какой тип имеет выражение в операторе цикла с постусловием?
Почему в цикле с постусловием тела цикла выполняется хотя бы один раз?
Задачи:
Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -1644128).
Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -0,0346789).
Дана числовая последовательность: . Найти сумму отрицательных элементов при . (ответ: -128846,8).
Дана числовая последовательность: . Найти произведение членов последовательности от пятого до двадцать пятого. (ответ: 1,555535Е-32).
Дана числовая последовательность: . Найти сумму первых пятидесяти членов. (ответ: 3,5158813).
После каждого движения поршня разряжающего насоса из сосуда удаляется 20% находящегося там газа. Сколько движений поршня нужно сделать, чтобы достичь давления при начальном давлении? (ответ: при=1 и=100потребуется 21 движение поршня).
Шары расположены в форме треугольника так, что в первом ряду находится один шар, во втором- два, в третьем- три и так далее. Сколько рядов удастся построить, если имеется шаров? (ответ: при=105 будет построено 14 рядов).
Спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от результата предыдущего дня. Найти какой путь пробежит спортсмен в 7-й день? (ответ:17,71561 км).
Сколько чисел нужно взять в последовательности 1+2+3+4+…, чтобы получить число, больше чем ? (при=252 нужно взять 23 числа).
Найти наибольшее число вида , меньшееm, где . (ответ: при=0,5,=2).
Вычислить наибольшее целое положительное число , удовлетворяющее условию:(ответ:=42).
Найти натуральное число, которое в пять раз меньше суммы предшествующих ему натуральных чисел (ответ: число 11).
Найти натуральное число, которое равно сумме предшествующих ему натуральных чисел (ответ: число 3).
Для данного числа найти такое натуральное, для которогои(ответ: для).
Спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от результата предыдущего дня. Найти через сколько дней спортсмен пробежит суммарный путь более 100 км? (ответ: через 8 дней).
Вычислить наибольшее целое положительное число , удовлетворяющее условию:(ответ:=411).
Дана числовая последовательность: . Найти сумму членов последовательности с десятого по тридцатый включительно (ответ: -2543,513).
Дана числовая последовательность: . Члены последовательности с четными номерами заменили на обратные им числа (5 на –5). Найти сумму членов последовательности с десятого по тридцать первый включительно (ответ: 33).
Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, которые вводится с клавиатуры (ответ: при 45, 23, 15 сумма чисел: 83, среднее арифметическое: 27,67).
Написать программу, которая определяет максимальное число из введенной с клавиатуры последовательности положительных чисел (ответ: при 56,75,43,0 максимальное число: 75).
Литературы:
Основная литература:
Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988. - 320 с.
Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987. - 112 с.
Вирт Н. Алгоритмы и структуры данных./Пер. с англ. М.: Мир, 1989. - 360 с.
Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982. - 382 с.
Дантеманн Дж., Мишел Дж., Тейлор Д. Программирование в среде Delphi: Пер. с англ. - Киев: НИПФ “ДиаСофтЛтд.”, 1995. - 608 с.
Епанешников Фолкнер Д.Р. Delphi: Пер.с англ.- М.: БИНОМ, 1995. - 464 с.
Орлик С.В. Секреты Delphi на примерах: - М.: БИНОМ. - 316 с.
Дополнительная литература:
Перминов О.Н. Программирование на языке Паскаль. - М.: Радио и связь, 1988. - 224 с.
Пильшиков В.Н. Сборник упражнений по языку Паскаль: Учеб. пособие для вузов. - М.: Наука, 1989. - 160 с.
Прайс Д. Программирование на языке Паскаль: Практ. руководство. - М.: Мир, 1987. - 232 с.
Рубенкинг Н. Турбо Паскаль для Windows: В 2 т.; Пер. с англ. - М.: Мир, 1993. - 536 с.
Фаронов В.В. Турбо Паскаль. В 3-х книгах. Книга 1. Основы Турбо Паскаля. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1992. - 304 с.
Фаронов В.В. Паскаль и Windows. - М.: Учеб.-инж.центр МВТУ-ФЕСТО ДИДАКТИК, 1994. - 539 с.
Методические указания:
На Паскале опретор цикла с постусловием записывается следующим образом: repeat <оператор> until <условие>.
При переводе означает: повторять что-то пока не выполнилось условие. Под обозначением <оператор> здесь понимается либо одиночный, либо последовательность операторов, разделённых точкой с запятой.
Цикл работает следующим образом: выполняется оператор, затем проверяется условие, если оно пока еще не выполнилось, то оператор выполняется вновь, затем проверяется условие, и т. д. Когда условие, наконец, станет истинным выполнение оператора, расположенного внутри цикла, прекратится, и далее будет выполняться следующий за циклом оператор. Под условием, вообще говоря, понимается выражение логического типа.
Пример (подсчет суммы натуральных чисел от 1 до 100):
var i,sum: integer;
begin
sum:=0; i:=0;
repeat
i:=i+1;
sum:=sum+i;
until i=100;
writeln('сумма=',sum);
readln;
end.
Важно заметить, что операторы стоящие внутри цикла repeat (иначе – в теле цикла) выполняются хотя бы один раз (только после этого проверяется условие выхода).
Решение одного варианта: Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел.
Блок-схема:
нет
да |
Описание блок-схемы:
1-блок – начало алгоритма 2-блок – начальное значение суммы S=0 3-блок – N-количество чисел, удовлетворяющих заданному условию. Если мы хотим узнать количество таких чисел, то естественно мы должны ввести переменную, которая изначально равна 0 и увеличивается каждый раз, как только встретилось положительное число 4-блок – ввод чисел (а) 5-блок – сумма постепенно накапливается 6-блок - количество чисел, увеличивается на 1 каждый раз, как только встречается положительное число. 7-блок – дальнейшей ход алгоритма зависит от заданного условия 8-блок – Мы должны уменьшить N на единицу, чтобы получить точное количество положительных чисел, так как условие не выполняется 9-блок – вычисляется среднее арифметическое число по формуле M=S/n 10-блок – печать полученного результата 11-блок – конец алгоритма |
program pr1;
var a: integer;
n: integer;
S: integer;
m: real;
begin
write (‘введите числа’);
S:=0;
n:=0;
repeat
readln (a);
S:=S+a;
n:=n+1;
until a<=0;
n:=n-1;
writeln (‘сумма чисел:’,S);
m:=S/n;
writeln (‘среднее арифм:’,m:6:2);
end.