- •Содержание
- •Введение
- •Лабораторная работа № 1. Интерфейс среды программирования Borland Pascal 7.0
- •Установка и запуск системы
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Интерфейс системы
- •Меню и команды
- •Пункт File:
- •Пункт Edit:
- •Пункт Search
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Создание новой программы
- •Порядок выполнения работы
- •Лабораторная работа № 2. Линейные структуры
- •3. Стандартные арифметические функции:
- •Лабораторная работа № 3. Структуры ветвления
- •Использование средств отладки
- •1. Пошаговое выполнение программы
- •2. Просмотр значений переменных
- •3. Использование точек останова
- •Лабораторная работа № 4. Введение в циклы
- •Лабораторная работа № 5. Циклические структуры
- •Лабораторная работа № 6. Одномерные массивы
- •Лабораторная работа № 7. Многомерные массивы
- •Лабораторная работа № 8. Обработка символьных строк
- •Стандартные функции для обработки строк:
- •Лабораторная работа № 9. Функции и процедуры
- •Список литературы
Лабораторная работа № 4. Введение в циклы
Цель работы: Научиться выделять циклические участки в программах.
Задачи:
понять принципы формирования циклов;
научиться выявлять повторяющийся участок в коде программы;
научиться вводить дополнительную переменную для образования повторяющихся участков.
Порядок выполнения работы:
Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Циклы».
Получить дополнительные теоретические знания из источников: [4: Тема 6], [9: Параграф 5.1].
Внимательно разобрать представленные примеры решения задач;
Самостоятельно выполнить предложенные задачи.
Внимание: переходить к выполнению пунктов 3 и 4 только после тщательной проработки пунктов 1 и 2.
Примеры решения задач
Задача 1. Дано натуральное n. Написать программу вычисления Х в 10-й степени.
Решение задачи:
Program x_v_stepeni_4;
var
x, y : real;
begin
Writeln(' Введите число x ');
Readln(x);
y:=1; {x
}
y:=y*x; {x
}
y:=y*x; {x
}
y:=y*x; {x
}
y:=y*x; {x
}
writeln(' x в степени 4 равно ',y);
Readln;
end.
Приведенный фрагмент программы возводит Х в 4-ю степень. Для того чтобы возвести Х в 10-ю степень, необходимо всего лишь повторить (скопировать) выделенную строку 10 раз
Задача 2. Дана последовательность 10 чисел. Определить произведение всех введенных отрицательных чисел.
Решение задачи:
Упростим задачу: Дана последовательность 3 чисел. Определить произведение всех введенных отрицательных чисел.
Program Proizved_3_otricat_chisel;
var
x, p : real;
begin
P:=1;
Writeln(' Введите число x ');
Readln(x);
if x<0 then
p := р * x;
Writeln(' Введите число x ');
Readln(x);
if x<0 then
p := р * x;
Writeln(‘Введите число x?’);
Readln(x);
if x<0 then
p := р * x;
writeln('P= ',p);
Readln;
end.
Для решения задачи необходимо повторить (скопировать), выделенный фрагмент программы 10 раз
Задача 3. Вычислить S=1+2+3+4+....+10.
Упростим задачу: S=1+2+3+4.
Способ 1:
Program Summa;
var
s : integer;
begin
s:=0;
s:=s+1;
s:=s+2;
s:=s+3;
s:=s+4;
writeln(' S= ',s);
Readln;
end.
В данном коде программы нет явного повторения строк (бери и копируй). Поэтому чтобы свести строки к явному повторению необходимо всегда использовать следующий прием:
1. Неповторяющийся участок заменим переменной.
2. Для того чтобы в этой переменной возникали необходимые значения и правильность программы не нарушилась, введем для нее математическое выражение по которому машина сама будет формировать в переменной необходимые значения. Изменим код задачи 3, введя дополнительную переменную i, в результате программа будет иметь вид, представленный в способе 2.
Способ 2:
Program Summa;
var
s, i : integer;
begin
s:=0; i:=1;
s:=s+i;
i:=i+1;
s:=s+i;
i:=i+1;
s:=s+i;
i:=i+1;
s:=s+i;
i:=i+1;
writeln('S= ',s);
Readln;
end.
Таким образом, получен код с явным повторением строк. Для того чтобы решить поставленную ранее задачу необходимо 10 раз скопировать выделенный участок кода.
Задача 4. Дано натуральное n. Написать программу вычисления значений S=1+1/(1*2)+1/(1*2*3)+....+1/(7!)
Решение задачи:
Шаг 1.
Program Summa2;
var
s : integer;
begin
s:=1;
s:=s+1/(1*2);
s:=s+1/(1*2*3);
s:=s+1/(1*2*3*4);
writeln('S= ', s);
Readln;
end.
Шаг 2. Вводим дополнительную переменную i.
Program Summa2;
var
s, i : integer;
begin
s:=1;i:=1;
i:=i*2;
s:=s+1/i;
i:=i*3;
s:=s+1/i;
i:=i*4;
s:=s+1/i;
writeln('S= ',s);
Readln;
end.
Шаг 3. Вводим еще одну дополнительную переменную j.
Program Summa2;
var
s, i, j : integer;
begin
s:=1; i:=1; j:=1;
j:=j+1;
i:=i*j;
s:=s+1/i;
j:=j+1;
i:=i*j;
s:=s+1/i;
j:=j+1;
i:=i*j;
s:=s+1/i;
writeln('S= ',s);
Readln;
end.
Выделенный участок необходимо скопировать для 4! – 3 раза, а для 7! – 6 раз.
Задания для самостоятельного выполнения
1. Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.
2. Среди введенных с клавиатуры 6 чисел подсчитать количество положительных и количество отрицательных чисел.
3. Вычислить S=1+1/2+1/3+1/4+....+1/10.
4. Вычислить S=1+(1*2)+ (2*3)+ (3*4)+....+ (9*10).
5. Вычислить S=1+1/3+ 2/5+ 3/7+....+ 6/13.
6. Вычислить S=1+1/(1*2)+ 2/(1*2*3)+ 3/4!+....+ 5/6!.
7. В промежутке 20…32 найти все числа кратные числу S, введенному с клавиатуры.
8. Составить программу, печатающую все делители числа 15 в порядке убывания.
9. Среди введенных с клавиатуры 6 чисел найти количество четных чисел и их среднее арифметическое.
10. Среди введенных с клавиатуры 6 чисел найти максимальное и минимальное из введенных чисел.
11. Дана последовательность 8 чисел. Определить сколько раз в этой последовательности изменяется знак числа.
12. Составить программу, проверяющую, является ли последовательность из 10 целых чисел, вводимых с клавиатуры, монотонно возрастающей.
13. Дано целое четырехзначное число n. Найти сумму цифр числа n.
14. Дана последовательность из 10 чисел. Определить количество чисел в наиболее длинной последовательности нулей.
