Тема: "Разработка алгоритмов циклов типа ДЛЯ".
Цель работы:
Получение практических навыков по разработке алгоритмов циклов типа ДЛЯ.
Количество часов на выполнение работы
Продолжительность выполнения данной практической работы составляет 1 академический час.
Оборудование
Аппаратное обеспечение: персональный компьютер следующей конфигурации:
процессор не ниже Intel i3;
жесткий диском со свободным объемом не менее 1 Гб;
Программное обеспечение:
операционная система Windows 7 / 8 / 8.1 / 10.
установленная среда программирования PascalABC.
Краткие теоретические сведения
Цикл for используется для повторения фрагментов программы заданное число раз.
Синтаксис оператора:
for i:=N1 to N2 do оператор;
или
for i:=N1 to N2 do
begin
оператор1;
оператор2;
....
end;
Здесь
i – индекс цикла (обязательно переменная целочисленного типа),
N1 – целочисленное выражение, определяющее нижнюю границу индекса цикла,
N2 – целочисленное выражение, определяющее верхнюю границу индекса цикла, N2 должно быть больше или равно N 1, для того чтобы цикл выполнился хоть один раз.
Алгоритм выполнения оператора такой:
Индексу цикла присваивается значение выражения N1.
Проверяется условие i
Выполняются операторы тела цикла.
Значение индекса цикла увеличивается на единицу (автоматически!).
Переход к п. 2.
Конец цикла.
Пример: Построить таблицу квадратов чисел от 1 до 10.
Program Square;
var i, j : integer;
begin
for i:=1 to 10 do
begin
j:=sqr(i);
writeln(i:4,j:4);
end;
end.
или проще:
Program Square;
var i: integer;
begin
for i:=1 to 10 do writeln(i:4,sqr(i):4);
end.
Обратите внимание на указание формата вывода целого числа в операторе writeln. Число после двоеточия указывает на количество символов, отводимых для представления целого числа. Если число занимает меньшее количество цифр, то при выводе оно слева дополняется необходимым числом пробелов.
Цикл for … downto
Иногда возникает желание выполнить цикл for наоборот, так чтобы индекс цикла не возрастал, а убывал. Эту возможность реализует следующая конструкция:
for i:=N2 downto N1 оператор;
Здесь подразумевается, что N2 должно быть больше или равно N1.
Использование цикла for для построения изображений.
Использование цикла for весьма эффективно при построении изображений. Например, следующая программа строит набор концентрических окружностей.
Program Concentric;
uses graphABC;
var i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetBrushStyle (bsClear);
// строятся 10 окружностей с
// радиусами 20, 40, ... 200
for i:=1 to 10 do Circle(200,200,i*20);
end.
Вот более сложный пример, разберитесь с ним сами. Ответьте на вопрос: «Почему используется цикл не for … to, а for … downto?»
Program Concentric2;
uses graphABC;
var i : integer; // для цикла for
begin
SetWindowSize (400,400);
SetPenStyle(psClear);
for i:=20 downto 1 do
begin
SetBrushColor (RGB(10*i,0,0));
Circle(200,200,i*10);
end;
end.
Интересных эффектов можно добиться, используя так называемый «генератор случайных чисел». Встроенная функция random(N) возвращает случайное число в диапазоне от 0 до N–1. Посмотрите, как эта возможность применяется в следующей программе.
Program RandomLines;
uses graphABC;
var i : integer;
begin
SetWindowSize (400,400);
for i:=1 to 200 do Line(Random(400),Random(400),Random(400),Random(400));
end.
Задания по практической работе
Даны целые числа K и N (N 0). Вывести N раз число K.
Даны два целых числа A и B (A
Даны два целых числа A и B (A
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1, 2, ..., 10 кг конфет.
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 0.1, 0.2, ..., 1 кг конфет.
Дано вещественное число — цена 1 кг конфет. Вывести стоимость 1.2, 1.4, ..., 2 кг конфет.
Даны два целых числа A и B (A
Даны два целых числа A и B (A
Даны два целых числа A и B (A
Дано целое число N (0). Найти сумму 1 + 1/2 + 1/3 + ... + 1/N (вещественное число).