- •3. Інтерфейс програми.
- •4. Текстової редактор.
- •1. Алфавіт мови і дійсні числа
- •2. Програма на мові «Паскаль»
- •1. Арифметичні операції.
- •2. Основні математичні функції.
- •3. Операції відношення.
- •Оператори введення і висновку інформації.
- •Розглянемо декілька прикладів:
- •Var а,V,s:real; {опис змінних}
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •If then else – зарезервовані слова (якщо, то, інакше) Розглянемо декілька прикладів:
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Розглянемо наступний приклад:
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Операторні дужки
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Оператор вибору.
- •Розглянемо декілька прикладів:
- •1: Writeln('зима');
- •2: Writeln('весна');
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Завдання для самостійної роботи:
- •Розглянемо декілька прикладів:
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •1) Цикл for
- •2) Цикл while
- •3) Цикл repeat
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Розглянемо декілька прикладів:
- •Питання для повторення:
- •Завдання для самостійної роботи:
- •Завдання для самостійної роботи:
- •Завдання для самостійної роботи:
- •Пошук в масиві елементів із заданими властивостями. Пошук максимального (мінімального) елемента.
- •Завдання для самостійної роботи:
- •Література
Розглянемо декілька прикладів:
Д
ано
натуральне числоS.
Вимагається написати програму для
знаходження всіх прямокутників, площа
яких рівна S
і
сторони виражені натуральними числами.
program zadacha3_6;
var s, а, b:longint;
Begin
writeln('Введіть s'); readln(s);
for а:=1 to s do
for b:=1 to s do
if a*b=s then writeln ('сторони ',a,' і ',b);
End.
Дану задачу можна було вирішити, використовуючи тільки один цикл. Подумайте, як це зробити.
Д
ані
натуральні числаn,
m.
Отримати всі натуральні числа, менші
n,
сума квадратів цифр яких рівна m.
program zadacha3_7;
var n, m, i, а, sum, cif:longint;
Begin
writeln('введіть n і m');readln(n, m);
for i:=1 to n do
begin
а:=i;sum:=0;
while a>0 do
begin
cif:=a mod 10;
sum:=sum+sqr(cif);
а:=a div 10;
end;
if sum=m then write(i,' ');
end;
End.

З
найти
всі рішення заданого числового ребусу.
Кожній букві відповідає деяка цифра.
Причому однаковим буквам відповідають
однакові цифри, різним буквам - різні
цифри.
Оскільки тут всього три букви, то для вирішення достатньо написати три вкладені цикли, і перебрати всі варіанти складання тризначних чисел.
program zadacha3_8a;
var до, t, про, kto, kot, tok:longint;
Begin
for до:=0 to 9 do
for t:=0 to 9 do
for про:=0 to 9 do
begin
kto:=k*100+t*10+o;
kot:=k*100+o*10+t;
tok:=t*100+o*10+k;
if (k<>t) and (k<>o) and (t<>o) and (kto+kot=tok) then
writeln(kto,'+',kot,'=',tok);
end;
End.
В даному алгоритмі тіло циклу виконувалося 10•10•10=1000 разів. (говоритимемо складність алгоритму =1000)
Якщо ж для вирішення складніших ребусів буде потрібно написати 8-10 вкладених циклів, то такий повний перебір працюватиме достатньо довго.
Можна трохи спростити даний алгоритм, якщо побачити що 1?k?4, t?2.
for до:=1 to 4 do
for t:=2 to 9 do
for про:=0 to 9 do
Тепер складність алгоритму 4•8•10=320. Просте косметичне виправлення дало збільшення швидкості в 3 рази.
Але і даний алгоритм не є оптимальним. Подивіться, при k=2 і t=2 програма перебере всі 10 варіантів про. В таких випадках коли k=t цикл по про взагалі необхідно не виконувати.
Назвемо такий метод - контрольований перебір.
program zadacha3_8c;
var до, t, про, kto, kot, tok:longint;
Begin
for до:=1 to 4 do
for t:=2 to 9 do
if k<>t then
for про:=0 to 9 do
if (k<>o) and (t<>o) then
begin
kto:=k*100+t*10+o;
kot:=k*100+o*10+t;
tok:=t*100+o*10+k;
if kto+kot=tok then writeln(kto,'+',kot,'=',tok);
end;
End.
Такий алгоритм навіть при 8-10 вкладених циклах працює дуже швидко.
Питання для повторення:
Чи може у вкладених циклах використовуватися одна і та ж змінна, наприклад i?
Чи можна вкладати один в одного різні цикли: FOR в WHILE або REPEAT в FOR?
Завдання для самостійної роботи:
Старовинна задача. Скільки можна купити биків, корів і телят, якщо бик коштує 10 рублів, корова – 5 рублів, теля – полтінік (0,5 рублі), за умови, що на 100 рублів треба купити 100 голів худоби.
Задане натуральне n. Для всіх чисел від 1 до n знайти:
кількість дільників; b) суму парних дільників.
Знайти всі рішення наступних числових ребусів:
БАБКА+ДЕДКА+РЕПКА=СКАЗКА (4 рішення)
КОРОВА+ТРАВА+ДОЯРКА=МОЛОКО (2 рішення)
АЛЕНКА+ИВАН+КОЗЛИК=СКАЗКА (1 рішення)
ВЕТКА+ВЕТКА+СТВОЛ=ДЕРЕВО (3 рішення)
ВОРОТА+ТРАВА=ФУТБОЛ (3 рішення)
Вивчаємо “Цикли”
Тема уроку:
Алгоритми з повтореннями.
Практикум по розв’язуванню задач
з повтореннями.
Мета заняття:
Закріпити навики написання алгоритмів з повтореннями;
Здійснити проміжний контроль знань;
Вдосконалення уміння будувати програми мовою Паскаль. Виховувати уважність, активність на уроці.
