Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по программированию.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
618 Кб
Скачать
☆

Лабораторная работа № 4. Введение в циклы

Цель работы: Научиться выделять циклические участки в программах.

Задачи:

  • понять принципы формирования циклов;

  • научиться выявлять повторяющийся участок в коде программы;

  • научиться вводить дополнительную переменную для образования повторяющихся участков.

Порядок выполнения работы:

  1. Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Циклы».

  2. Получить дополнительные теоретические знания из источников: [4: Тема 6], [9: Параграф 5.1].

  3. Внимательно разобрать представленные примеры решения задач;

  4. Самостоятельно выполнить предложенные задачи.

Внимание: переходить к выполнению пунктов 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 чисел. Определить количество чисел в наиболее длинной последовательности нулей.