Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка з програмування (школа).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Задача №415

Умова: Нехай в програмі описано такі процедури:

Procedure Р(х,у:integer);

Begin y:=x+l; End;

Procedure Q(x:integer; var у: integer);

Begin y:=x+1; End;

Procedure R(var x,y:integer);

Begin y:=x+1; End;

Визначити, що буде надруковано в результаті виконання таких операторів:

Очікувана відповідь

с:=2; d:=1; P(c,d); writeln(d); — на екрані буде 1

с:=2; d:=l; Q(c,d); writeln(d); — на екрані буде 3

с:=2; d:=1; R(c,d); writeln(d); —на екрані буде 3

Чи припустиме таке звертання до вищезазначених процедур?

Очікувана відповідь

P(sqrt(c),d) —так

Р(с,2) —так

Q(sqrt(c),d) —так

R(1,d) —ні

R(c,2) —ні

Пояснення до відповідей наступні: фактичне значення параметру-значення може бути константою, змінною або виразом, а параметру-змінної - тільки іменем змінної.

Задача №416 (1)

Умова: Знайдіть і поясніть помилки в записі функцій:

Function max(n:integer):real:

Var a,max:real;

Begin

Read (max) ;

For i:=1 to n-1 do

Begin Read(a); If a>max then max:=a; End;

End;

Очікувана відповідь учнів:

  • У функції описана внутрішня локальна змінна max, ім'я якоїзбігається з іменем функції, а це неприпустимо, тому що вони обидві єлокальними для даної функції та не можуть мати однакові імена.

  • Якщо все ж таки ім'я функції max, то неможливе використання його

в операторах read(max) та ifa>max, тому що ми отримуємо самовиклик функції, а це може призвести до помилки.

  • В операторах readfmax) та ifa>max помилка, якщо max - ім'я функції,тому що після імені функції в момент її виклику повинні знаходитись удужках фактичні параметри, кількість та тип яких мають збігатися зкількістю та типом фактичних параметрів даної функції (в даному випадкуфактичний параметр повинен бути один).

  • Якщо в програмі не існує глобальна змінна і, то вона залишаєтьсянеописаною в підпрограмі.

Домашнє завдання:

  • прочитати сторінки 148-155 запропонованого підручника,

  • задачі №413, №414, №415(2), № 416(2).

УРОК 35. ВИКОРИСТАННЯ ПРОЦЕДУР

Мета уроку: Дати поняття про допоміжні алгоритми, типи допоміжних алгоритмів, оформлення підпрограм (процедур) мовою Паскаль.

На початку уроку рекомендується провести опитування у письмовому чи усному вигляді для закріплення теоретичного матеріалу попереднього уроку (поняття допоміжного алгоритму, типи допоміжних алгоритмів, передача параметрів у допоміжний алгоритм, локальні та глобальні, фактичні та формальні параметри тощо).

Після цього рекомендується розв'язати з учнями кілька задач.

Задача № 417

Умова: Баба-Яга записалася на курси водіїв літальних апаратів. Але справи в неї були кепські, бо вона ніяк не могла запам'ятати, яким чином визначається тривалість польоту, якщо відомі швидкість і відстань. Довелося їй звернутися по допомогу до Хлопчика-Мізинчика, який швиденько написав їй шпаргалку, куди Бабі-Язі треба було лише підставити свої значення. Як виглядала послідовність дій у цій шпаргалці і як нею користувалася Баба-Яга?

Розв'язування: Очевидно, що «шпаргалку» Хлопчика-Мізинчика можна оформити як допоміжний алгоритм. Параметрами, що передаються у цей алгоритм, будуть швидкість літального апарату та відстань, яку необхідно подолати, а вихідним параметром - шукана тривалість польоту. Вхідні параметри процедури повинні бути параметрами-значениями, а вихідний параметр - параметром-змінною. Позначимо у підпрограмі формальні параметри наступним чином: V - швидкість літального апарату; S -відстань, що необхідно подолати; Т - тривалість польоту.

В основній програмі ті самі змінні будуть мати відповідно імена: X, Y та М (імена змінних у основній програмі бажано, щоб не збігалися з іменами локальних параметрів підпрограми, тому їх вибір є випадковим).

Спробуємо на цьому уроці оформити допоміжний алгоритм як процедуру. Тоді вихідна програма буде мати наступний вигляд:

Program Example_417;

Uses crt; (Підключення бібліотеки}

Procedure Solution (V,S - real; var T - time);

Begin T:=S/V; End;