Структура програми основні математичні функції введення І висновок даних. Формати висновку. Складання лінійних алгоритмів. Коментарі в програмі > Розгалуження
Вид материала | Документы |
- Практичне завдання на створення програми опрацювання табличних величин. Білет №3 Структура, 56.42kb.
- Програма фахового вступного випробування для зарахування на навчання за окр «магістр», 385.53kb.
- Календарне планування з інформатики для 11 класу на 2011-2012 навчальний рік, 75.51kb.
- Інтерфейс системи керування базами даних access. Створення бази даних. Таблиці. Запити, 156.05kb.
- Тема уроку: Базові структури алгоритмів. Слідування, розгалуження, повторення. Мета, 51.73kb.
- Інститут комп’ютерних технологій, автоматики І метрології, 129.38kb.
- Опис середовища Visual C+ Введення- виведення даних, 447.69kb.
- Називається комплекс програмних та мовних засобів, які використовуються для створення, 149.17kb.
- План уроку: Порівняльна характеристика типів баз даних. Особливості реляційних баз, 83.01kb.
- 1. Етика як наука: етимологія терміну, поняття, структура, завдання та функції. Основні, 139.33kb.
End.
Питання для повторення:
- Для чого призначений оператор циклу?
- Які існують цикли в мові Паскаль?
- Який формат запису має оператор FOR?
- Як працює оператор FOR?
- В яких випадках застосовується оператор FOR?
- Скільки разів буде виконаний цикл, і чому буде рівна змінна S після виконання:
s:=0; n=6;
for i:=3 to n do
s:=s+i;
- Як в тілі циклу виконати декількох операторів?
Завдання для самостійної роботи:
- Знайти суму всіх непарних тризначних чисел.
- Знайти суму позитивні кратні 7 чисел, менших 100.
- Знайти всі числа, які діляться на N серед:
- всіх двухзначных чисел;
- всіх тризначних чисел.
- Скласти програму обчислення суми квадратів чисел від 1 до n.
- Серед двозначних чисел знайти ті, сума квадратів цифр яких ділиться на 13.
- Знайти всіх дільників для заданого числа n.
- Дано натуральне число n. Обчислити:
a) 2n; b) 3n з) n!;
- Серед чотиризначних чисел вибрати ті, у яких:
- всі чотири цифри різні (наприклад: 3167, 9012);
- є три однакові цифри (наприклад: 1311, 7779);
- цифри попарно різні (наприклад: 1331, 7979, 2255);
- цифри утворюю зростаючу послідовність (наприклад: 1389, 4678);
- Написати програму пошуку чисел <1000, які при розподілі на 2 дають в залишку 1, при розподілі на 3 дають в залишку 2, при розподілі на 4 - в залишку 3, при розподілі на 5 - в залишку 4, при розподілі на 6 - в залишку 5 а при розподілі на 7 дають в залишку 6.
Вивчаємо “Цикли”
Тема уроку:
Алгоритми з повтореннями.
Цикл з передумовою WHILE.
Цикл з післяумовою REPEAT.
Мета заняття:
- Закріпити поняття про цикли;
- Познайомитися з циклами WHILE і REPEAT;
- Отримати навики рішення алгоритмів з повтореннями.
На минулому занятті ми познайомилися і навчилися використовувати рахунковий цикл FOR.
Продовжимо роботу по цій темі і познайомимося з ще двома циклами:
- цикл WHILE з предусловием;
- цикл REPEAT.UNTIL з постусловием.
Ці цикли зручно використовувати тоді, коли наперед невідомо число повторень.
Вирішимо задачу zadacha3_1 використовуючи цикли WHILE і REPEAT
спробуємо зрозуміти принцип роботи цих циклів.
З

1) цикл FOR
program zadacha3_1a;
var i,n,s:integer;
Begin
writeln('введіть натуральне n'); readln(n);
s:=0;
for i:=1 to n do
s:=s+i;
writeln('сумма від 1 до',n,' = ',s);
End.
2) цикл WHILE
program zadacha3_1b;
var i,n,s:integer;
Begin
writeln('введіть натуральне n'); readln(n);
s:=0; i: =1;
while i<=n do
begin
s:=s+i;
i:=i+1;
end;
writeln('сумма від 1 до',n,'=',s);
End.
Цикл WHILE виконуватиметься до тих пір, поки виконується умова i<=n. Причому змінну i змінюємо усередині циклу.
3) цикл REPEAT
program zadacha3_1c;
var i,n,s:integer;
Begin
writeln(' введіть натуральне n'); readln(n);
s:=0; i:=1;
repeat
begin
s:=s+i;
i:=i+1;
end;
until i>n;
writeln('сумма від 1 до',n,' = ',s);
End.
Цикл REPEAT. UNTIL виконуватиметься до тих пір, поки не виконатися умова i>n.
З

program zadacha3_4;
var n,sum,cif:integer;
Begin
writeln('Введіть n'); readln(n);
sum:=0;
while n>0 do
begin
cif:=n mod 10;
sum:=sum+cif;
n:=n div 10;
end;
writeln('Сумма цифр введеного числа = ',sum);
End.
З

program zadacha3_5;
var i, kl:longint;
Begin
kl:=0; i:=0;
while kl=0 do
begin
i:=i+1;
if (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=6) then kl:=1;
end;
writeln(i);
End.
Питання для повторення:
- Які цикли існують в мові Паскаль?
- Який формат запису мають цикли WHILE і REPEAT?
- В яких випадках зручно застосовувати ці цикли?
- Чим відрізняється цикл WHILE від циклу REPEAT?
- Чи буде зупинено виконання даного циклу? Чому?
s:=0; i: =1;
while i<=4 do
s:=s+i;
Завдання для самостійної роботи:
- Дано натуральне число n.
- Скільки цифр в числі n?
- Скільки парних цифр в числі n?
- Дано натуральне число n.
- Обчислити, чи входить цифра 3 в запис числа n2.
- Поміняти порядок цифр числа n на зворотний.
- Переставити першу і останню цифри числа n.
- Приписати по одиниці в початок і в кінець запису числа n.
- Чи є число n - палиндромом? (9889 - так, 9878 -нет)
- Дано натуральне число n. Чи є n ступенем 3.
- Для даного натурального числа m>1. Знайдіть максимальне до, для якого ще виконується рівність 2k
- Для даного натурального числа m>1знайдіть мінімальне до, для якого вже виконується рівність до!>m. (Наприклад, якщо m=10, то k=4).
Вивчаємо “Цикли”
Тема уроку:
Вкладені цикли.
Мета заняття:
- Закріпити знання по використовуванню різних типів циклів;
- Отримати навики рішення алгоритмів з вкладеними циклами;
- Вдосконалення уміння будувати програми мовою Паскаль. Виховувати уважність, активність на уроці.
Для вирішення задачі достатньо часто вимагається використовувати декілька вкладених один в одного циклічних конструкцій. Такі конструкції називають вкладеними циклами.
Розглянемо декілька прикладів:
Д

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.
Дану задачу можна було вирішити, використовуючи тільки один цикл. Подумайте, як це зробити.
Д

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 рішення)
Вивчаємо “Цикли”
Тема уроку:
Алгоритми з повтореннями.
Практикум по розв’язуванню задач
з повтореннями.
Мета заняття:
- Закріпити навики написання алгоритмів з повтореннями;
- Здійснити проміжний контроль знань;
- Вдосконалення уміння будувати програми мовою Паскаль. Виховувати уважність, активність на уроці.
Завдання для самостійної роботи:
- Дано натуральне число n. Обчислити:

- Дані дійсне число а, натуральне число n. Обчислити:
- an;
- а(а + 1).(а + n – 1).
- Дано натуральне число n. Обчислити твір перших n сомножетелей:
-
;
-
.
- Обчислити 1 -
наступними чотирма способами:
- послідовно зліва направо;
- послідовно зліва направо обчислюються
і, потім друге значення віднімається з першого;
- послідовно справа наліво;
- послідовно справа наліво віднімаються суми, виписані в би), потім віднімання.
Чому при обчисленнях кожним з цих способів виходять різні результати?
- Знайти всі двозначні числа, які містять цифру N.
- Складіть програму зведення натурального числа в квадрат, використовуючи наступну закономірність:
12 = 1
22 = 1 + 3
32 = 1 + 3 + 5
42 = 1 + 3 + 5 + 7
. . .
n2 = 1 + 3 + 5 + 7 + 9 + . + (2n – 1).
- Скласти програму зведення заданого числа в третій ступінь, використовуючи наступну закономірність:
13 = 1
23 = 3 + 5
33 = 7 + 9 + 11
43 = 13 + 15 +17 + 19
53 = 21 + 23 + 25 + 27 + 29
- Серед двозначних чисел знайти ті, сума квадратів цифр яких ділиться на задане число n.
- Написати програму пошуку двозначних чисел, що задовольняють наступній умові: якщо до суми цифр числа додати квадрат цієї суми, то вийде саме число.
- Написати програму пошуку тризначних чисел, квадрат яких закінчується трьома цифрами, що становлять початкове число.
- Написати програму пошуку чотиризначного числа, яке при розподілі на З дає в залишку B, а при розподілі на B дає в залишку D.
- Знайти суму позитивних непарних чисел, менших N.
- Знайти суму цілих позитивних чисел з проміжку від А до В, кратних до (значення змінних А і У вводяться з клавіатури).
- Знайти суму цілих позитивних чисел, великих А, менших B, кратних 3 і що закінчуються на 2, 4 або 8.
- В тризначному числі закреслювали старшу цифру, коли отримане двозначне число помножили на 7, то отримали дане число. Знайти це число.
- Сума цифр тризначного числа кратна 7, саме число також ділиться на 7. Знайти всі такі числа.
- Серед чотиризначних чисел вибрати ті, у яких всі чотири цифри різні.
- Дано натуральне число. Знайти всіх його дільників і їх суму.
- В 1626 році індійці продали острів Манхеттен за 20$. Якби ці гроші були поміщені в банк на поточний рахунок і щорічний приріст склав k%, то була яка б сума в поточному році?
- Серед двозначних чисел знайти ті, які діляться на число q, а сума їх цифр рівна n (0 n 18).
- Знайти мінімальне число, більше N, яке без остачі ділиться на До (До, N - натуральні числа).
- Приписати по цифрі 1 в початок і в кінець запису числа n.
(Наприклад, введення n = 923, висновок 19231).
- Поміняти місцями першу і останню цифри числа.
(Наприклад, введення n = 9423, висновок 3429).
- Приписати до початкового числа n таке ж число.
(Наприклад, введення n = 423, висновок 423423).
- З'ясувати, скільки разів в натуральному числі зустрічається його максимальна цифра.
(Наприклад, введення 4423, висновок 2 рази; введення 9077, висновок 1 разів).
- З'ясувати, чи є різниця максимальної і мінімальної цифр числа парної.
- Дано натуральне число n. Вимагається з'ясувати, чи можна відрекомендувати його у вигляді суми квадратів трьох натуральних чисел? Якщо можна, то:
вказати трійку x, у, z таких натуральних чисел, що
x2 + y2 + z2 = n;
вказати всі трійки таких чисел, що x2 + y2 + z2 = n.
- Скласти програму, друкуючу к-ю цифру послідовності:
- 12345678910., в якій виписані підряд всі натуральні числа;
- 14916253649., в якій виписані підряд квадрати всіх натуральних чисел;
- Скласти програму для знаходження всіх натуральних чисел n, m, до з інтервалу [а, b], удовлеовторяющих співвідношенню n2 + m2 = k2 (а і b задані).
- Сторони прямокутника задані натуральними числами M і N. Скласти програму, яка знаходитиме, на скільки квадратів, сторони яких виражені натуральними числами, можна розрізати даний прямокутник, якщо від нього кожного разу відрізується квадрат максимально можливої площі.
Вивчаємо “Масиви”
Тема уроку:
Двомірні масиви: опис, введення і висновок масивів по рядках.
Приклади розв’язування задач з використанням двомірних масивів.
Мета заняття:
Отримати навики розробки програм по роботі з елементами двомірного масиву;
- Практична робота з масивами на комп'ютері;
- Вдосконалення уміння будувати програми мовою Паскаль. Виховувати уважність, активність на уроці.
Двомірні масиви мають рядки і стовпці. Елемент масиву задається номером рядка і номером стовпця, на перетині яких він знаходиться

Якщо кількість рядків = кількості стовпців масив називається квадратною матрицею, в особливому випадку - прямокутної.
З

Заповнити її цілими числами. Роздрукувати по рядках. Знайти і вивести суму всіх елементів і їх середнє арифметичне значення.
program zadacha5_3_1;
var
i, j, s,m,n : integer;
sr : real;
а:array[1..10, 1..20] integer; {опис масиву}
Begin
Write('Кіл. рядків, кіл. стовпців?');
readln( n,m);
for i:=1 to n do

begin
write('Введіть а[', i, ',', j, ']'); {Введення елементів
readln (а[ i, j ]); масиву}
end;

for i:=1 to n do {Висновок ел. масиву}

for j:=1 to m do
write (а[ i, j ],’ ’); {Висновок ел. масиву}
writeln;
end;

for i:=1 to n do
for j:=1 to m do {Знаходження суми}
s:=s + а[ i, j ];
writeln('Сума =', s);
sr:=s / (n*m); {Знаходження середнього}
writeln('Середнє =', sr:8:3)
End.
Задача. Серед непарних стовпців заданої цілочисельної матриці розмірністю n*m знайти стовпець з максимальною сумою модулів елементів.
program zadacha5_3_2;
var
i, j, m, n, до, s, max :integer;
а : array[1..10, 1..20] integer; {опис масиву}
Begin
Write('Кіл. рядків, кіл. стовпців?'); readln( n,m);
{Заповнити таблицю}
{Вивести таблицю по рядках}
{Спочатку рахуватимемо суму модулів елементів першого стовпця максимальної}

for i:=1 to n do {Знаходження суми першого стовпця}
-3 | 4 | 6 | 8 | 1 |
4 | 9 | -12 | -6 | 13 |
3 | -5 | 2 | 7 | -5 |
10 18 20 21 19
max сумма мод. Пар. стовп. = 20
номер стовпця = 3
s := s + abs ( а[i, 1]);
max := s ;
до:=1; j :=3;
while j <= m do
begin
s := 0;
f

s := s + abs ( а[ i,j ]);
if s > max
then begin
max := s; до:=j;
end;
j := j+2; {Перехід до чергового непарного
end; індексу стовпця }
writeln( 'Номер стовпця з максим. сумою модулів елементів ='
до, 'знач. макс.=', max);
end.
Завдання для самостійної роботи:
- Є цілочисельний масив n*m елементів. Знайти номер рядка з мінімальною сумою модулів елементів.
- Є цілочисельний масив n*m елементів. Знайти
індекси максимального елемента таблиці і значення
максимуму.
- Є цілочисельний масив n*m елементів.
Яких елементів в масиві більше негативних або позитивних?
- Є цілочисельний масив n*m елементів. Повідомити чи є в таблиці негативні елементи.
- Є цілочисельний масив n*m елементів. Знайти середнє
арифметичне елементів масиву. Визначити і вивести
кількість елементів масиву, значення яких перевищує
це середнє значення.
Вивчаємо “Масиви”
Тема уроку:
Пошук в масиві елементів із заданими властивостями.
Пошук максимального (мінімального) елемента.
Мета заняття:
- Отримати навики розробки програм по роботі з елементами масиву;
- Познайомитися із способами пошуку елементів із заданими властивостями;
- Практична робота з масивами на комп'ютері.
Послідовний пошук — елементи масиву є видимими послідовно один за іншим, при цьому проводиться перевірка відповідності елемента заданій властивості.

Є

program zadacha5_1;
var
к,i,n,p:integer;
а:array[1..30] integer; {опис масиву}
Begin
Write('Кіл. елем. масива');
r

for i:=1 to n do
begin
write('Введіть а[',i,']'); {Введення елементів масиву}
readln (а[i]);

writeln('Введений массив');
for i:=1 to n do {Висновок ел. масиву}
write (а[i],’ ’);

write('Введіть К');
readln(k);
p:=0;
for i:=1 to n do {Знаходження суми}
if а[i]=k then p:=i;
if p=0
then writeln('елемента в табліці немає')
else writeln('елемент знайдений, індекс =',p)
End.
В даній задачі у разі наявності в таблиці декількох елементів, рівних До буде виданий найбільший індекс. Для пошуку першого такого елемента в таблиці використовують цикл:
i
1 4 9 6 7 13 19 12 5 8
k = 19 ; k = 3
1 4 6 7 8 8 8 4 5 4 k = 8
:=1;
While (i<=n) and (а[i]<>k) do
i:=i+1;
Вирішимо задачу пошуку найбільшого елемента в таблиці А з N дійсних чисел. Знайти максимум і індекс цього елемента.
p
1 4 9 6 7 13 19 12 5 8
1 4 6 7 8 8 8 4 5 4
k = 8
rogram zadacha5_2;
var а: array[1..30] real;
max: real;
n, j, I : integer;
Begin
Write('Кіл. елем. массива'); readln(n);
{Введення елементів масиву}
{Введення елементів масиву}

for i:=2 to n do {Пошук максимуму}
if max
begin
max:=a[i];
j:=i;
end;
writeln;
writeln('Макс. елемент масиву =', max );
writeln('Індекс макс. елемента =', j );
End.
Алгоритм:
- Умовно вважаємо перший елемент найбільшим (максимальним). Запам'ятовуємо його значення (а[1]) і його індекс (=1).
- Порівнюємо значення максимального з черговим елементом таблиці (i), починаючи з другим елементом і до останнього.
- При знаходженні елемента з великим значенням міняємо значення максимального на знайдений елемент і запам'ятовуємо його індекс.
- За наявності в таблиці декількох мінімальних і за умови max
Завдання для самостійної роботи:
- Є цілочисельний масив, що складається з 15 елементів. Знайти мінімальний елемент і його індекс.
- В масиві зберігається інформація про кількість опадів (цілі числа), випавших за кожний день минулого тижня. Вивести номери днів, коли опадів не було.
- Даний масив цілих чисел з n елементів. Знайти і вивести номери елементів, що закінчуються цифрою 0.
- Зростання N учнів класу представлено у вигляді масиву. Знайти кількість учнів, зростання яких не перевищує значення R.
- В масиві записані результати N ігор футбольної команди (якщо гра закінчилася виграшем даної команди, то записано число 3, програшем - число 2, внічию - 1). Визначити кількість виграшів, програшів, нічиїх.
- В масиві зберігається інформація про зростання N людина. Визначити, на скільки зростання найвищої людини перевищує зростання найнижчого.
- В масиві зберігається інформація про вартість 1 кг N видів цукерок. Визначити порядковий номер найдешевшого виду цукерок. Якщо таких дещо, то повинен бути знайдений індекс:
А) першого з них;
Б) останнього з них.
- В масиві зберігається інформація про вартість кожної з M книг. Визначити кількість найдешевших книг (з однаковою мінімальною ціною).
Література
- Науково-методичний журнал «Інформатика в школі»
- Газета Шкільний світ «Інформатика»
- «Intel» - навчання для майбутнього
- Підручник «Інформатика», Зарецька та інші ч.2.