Цели:
- закрепление темы "Вложенные циклы";
- развитие навыков решения задач с применением вложенных циклов;
- закрепление навыков самостоятельной работы;
- развитие творческих способностей.
Оборудование: персональные компьютеры; программная среда Turbo Pascal; раздаточный материал.
Лабораторная работа
Составить программу для решения следующего арифметического ребуса:
КТО + КОТ = ТОК, где разным буквам соответствуют разные цифры, одинаковым- одинаковые.
Program Rebus;
Uses crt;
Var a, b, c : Integer;
k, t, o : Byte;
Begin
Clrscr;
For k:=1 to 9 do {внешний цикл}' первая цифра в числе не может быть 0
For t:=1 to 9 do
For o:=0 to 9 do {внутренний цикл}
begin
a:=100 * k + 10 * t + o;
b:=100 * k + 10 * o + t; тело цикла
c:=100 * t + 10 * o + k;
if (a+b) = c Then writeln (k, t, o, '+', k, o, t, '=' ,t, o, k);
end;
readln;
end.
Какую роль играют переменные a,b,c?
Почему в программе необходимо использовать операторные скобки? Проверьте программу без операторных скобок.
Почему переменные k,t,o имеют тип Byte, а переменные a, b, c - Integer? Могут ли переменные a, b, c иметь тип Byte?
Сколько раз выполняется тело цикла? Добавьте в программу счетчик и выведите его значение.
Решить задачу за меньшее число шагов.
Составить программу для решения следующего арифметического ребуса
RADAR = (R+A+D)4.
К заданию 1 составить алгоритм.
Какие базовые структуры используются в алгоритме?
Образец оформления лабораторной работы
Составить программу для решения следующего арифметического ребуса:
КТО + КОТ = ТОК
Program Rebus;
Uses crt;
Var a, b, c : Integer;
k, t, o : Byte;
Begin
Clrscr;
For k:=1 to 9 do
For t:=1 to 9 do
For o:=0 to 9 do
begin
a:=100 * k + 10 * t + o;
b:=100 * k + 10 * o + t;
c:=100 * t + 10 * o + k;
if (a+b) = c Then writeln (k, t, o, '+', k, o, t, '=' ,t, o, k);
end;
readln;
end.
Ответ: 495 + 459 = 954
Какую роль играют переменные a,b,c?
Переменной а присваивается трехзначное число КТО, b - трехзначное число КОТ, c - трехзначное число ТОК. В дальнейшем проверка условия упрощается (a+b=c)
Почему в программе необходимо использовать операторные скобки?
Операторные скобки (begin:end;) необходимо использовать, т.к. тело цикла состоит более чем из одного действия. Если убрать операторные скобки, то будет повторятся всего лишь одно действие (a:=100 * k + 10 * t + o;), а действия b:=:, c:=:. и проверка условия будут выполнены всего один раз после выполнения циклов. В программе будет допущена логическая ошибка, и ответ найден не будет.
Почему переменные k, t, o имеют тип Byte, а переменные a, b, c - Integer? Могут ли переменные a, b, c иметь тип Byte?
Диапазон значений типа Integer (-32768..32767), Byte (0..255). Поэтому переменные a, b, c не могут быть типа Byte, т.к. эти переменные принимают значения, превышающие максимальное значение данного типа (больше 255). Переменные k, t, o - это цифры, поэтому этим переменным достаточно иметь тип Byte. Если в программе присвоить этим переменным тип Integer, то никакой ошибки не будет.
Сколько раз выполняется тело цикла? Добавьте в программу счетчик и выведите его значение.
Тело цикла выполняется 810 раз. Добавляем в
программу переменную s
(Var a, b, c, s : Integer;). В теле цикла добавляем
счетчик (s:=s+1; или inc(s);). После закрытия
операторных скобок (end;) перед оператором (readln;)
добавляем строку (Writeln('s=',s);).
Решить задачу за меньшее число шагов.
В программе используется 3 цикла, поэтому переборов становится много (810). Если исключить цикл по k ({for k:=1 to 9 do }) и в теле цикла сразу после Begin добавим строку k:=(o+t) mod 10 (остаток от деления суммы (o + t) на 10), то тело цикла будет выполняться 90 раз. Алгоритм становится эффективнее, программа будет работать (810 : 90) в 9 раз быстрее.
Составить программу для решения следующего арифметического ребуса
RADAR = (R+A+D)4.
Program Radar;
Uses crt;
Var r, a, d, x, y : integer;
Begin
Clrscr;
For r:=1 to 9 do
For a:=0 to 9 do
For d:=0 to 9 do
begin
x:=10000 * r + 1000 * a + 100 * d + 10 * a + r;
y:=sqr(sqr(r + a + d));
if (x=y) Then writeln(r, a, d, a, r);
end;
readln;
end.
Ответ: 14641 r=1, a=4, d=6.
Домашнее задание: оформить работу и подготовить ее к защите.
Зачетные вопросы:
Какие операторы используются в программе?
Что такое вложенный цикл?
Объясните смысл указанных учителем фрагментов программы.
Что произойдет, если в программе сделать предложенные учителем небольшие коррективы?
Переменные какого типа используются в программе? Нельзя ли заменить этот тип переменных на другой?
Какие базовые конструкции используются в алгоритме?
Применение:
- подготовка к ЕГЭ, олимпиаде по программированию;
- самообразование по изучению языка программирования Tutbo Pasсal.
Литература.
- Алексеева Е.Р., Чеснокова О.В. Turbo Pascal 7.0
- Бабушкина И.А., Бушмелева Н.А., Окулов С.М., Черных С.Ю. Практикум по ТУРБО ПАСКАЛЮ. Конспекты занятий по информатике. Приложение к газете "Первое сентября" // "Информатика",1997, №46, с.7
- Попов В.Б. Turbo Pascal для школьников: учебное пособие.