Конспект уроку №9 Свинаренка Олександра

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Урок на тему "Опис програм за правилами мови програмування. Запис лінійних алгоритмів мовою програмування."

Мета уроку: дати дітям основні означення і поняття з даної теми; розвивати мислення і творчі здібності; формувати акуратність та уважність при створенні програм.

Тип уроку: урок засвоєння нових знань з елементами практичної роботи.

Хід уроку

І. Організаційна частина.

ІІ. Перевірка домашньої роботи.

ІІІ. Пояснення нового матеріалу

Будь-яка мова програмування володіє схожістю з природними мовами. Як і природна мова, вона має свій алфавіт, словник, знаки перепинання (роздільники), за допомогою яких можна утворювати складніші мовні конструкції, подібні до пропозицій природної мови. Словник мови програмування складається з чисел, слів і деяких інших символів. Елементи цього словника називають лексемами. Приклади лексем:

394 -5678, 12.456, 67.5е8 - числа; Integer, Cos, Maxint - імена; (, ) - дужки.

Оскільки текст будь-якої програми є послідовність лексем, основне завдання лексичного аналізу - перевірка правильності написання і ідентифікація лексем в цьому тексті. Кожна лексема має свою інтерпретацію (сенс). Так, послідовність цифр, розділена крапкою, інтерпретується як дійсне число в десятковій нотації, а Cos - як ім'я функції. Сукупність інтерпретацій лексики мови називається його прагматикой.

Правила утворення складніших конструкцій мови називаються синтаксичними. Сукупність синтаксичних правил утворює синтаксис мови програмування.

Також, як і лексеми, інші конструкції мови інтерпретуються як дії або описи. Наприклад, оператор привласнення x := x+2 має сенс “скласти значення змінної x з числом 2 і результат інтерпретувати як (нове) значення цієї ж змінної”. Сукупність інтерпретацій синтаксичних правил називається семантикою мови. Можна сказати, що вивчення мови програмування полягає у вивченні його синтаксису і семантики.

Лінійним називається алгоритм, у якому оператори виконуються в порядку їх слідування в програмі. Для запису таких алгоритмів достатньо наведених операторів.

Оператор присвоєння працює як обчислювальний: спочатку обчислює значення арифметичного виразу (правої частини), а потім – присвоює отримане значення змінній, яка знаходиться ліворуч.

Вираз може складатися з констант, змінних, знаків операцій, круглих дужок та функцій.

Нижче наведені знаки операцій у порядку зниження старшинства їх виконання:

@, Not

  • , /, Div, Mod, And, Shl, Shr

+, -, Or, Xor

=, <>, , =, In

Операція @ вживається частіше за все під час роботи з динамічною пам’яттю. При роботі з логічними даними виникає потреба брати протилежне (негативне) значення логічної величини. Для цього застосовують операцію Not.

Знак * визначає операцію множення, а / - операцію ділення. Операції Div та Mod мають справу тільки з цілими операндами. Операція Div обчислює цілу частину частки, а Mod – залишок.

Типове використання операцій And - при роботі з логічними даними. Результат операції буде True тільки в тому випадку, коли обидва операнди мають таке ж значення.

Операндами операції Shl та Shr можуть бути цілі числа. Ці операції забезпечують циклічні зсуви відповідно ліворуч та праворуч двійкових розрядів чисел.

Операція Or реалізує логічну функцію диз’юнкції, її результат True, якщо принаймні один з операндів буде True.

Результатом операції Xor буде True, якщо значення операндів не збігаються, в протилежному випадку - False.

Операндами операції In являються: з одного боку, множина деяких елементів, а з другого, дані, які можуть входити в множину, або ні.

Для запису арифметичних виразів мовою PASCAL використовуються стандартні функції:

ABS(X) – |X|

ARCTAN(X) – arctg x

COS(X) – cos x

SIN(X) – sin x

EXP(X) – ex

LN(X) – ln x

SQR(X) – x 2

SQRT(X) – квадратний корінь

ROUND(X) – функція округлення дійсного числа до найближчого цілого.

ODD(X) – перевіряє парність аргументу. Якщо це парне число, ]результат функції False, інакше – TRUE.

RANDOM(X) - виробляє випадкове число від 0 до Х.

Пропоную розвязати такі завдання:

Якщо значення цілочисельних змінних наступне X=15, Y=25, Z=8, то чому будуть дорівнювати значення цих змінних після виконання операцій присвоювання: X := sqrt(Y)*2; Y := Y-2; Z := Y div 2 mod 3;

Відповідь: X:= sqrt(25)*2 X = 10 Y:= 25 - 2 Y = 23 Z:= 23 div 2 mod 3 Z = 2


Написати команду присвоєння, що надає значення середнього арифметичного змінних X та Y змінній Z.

Відповідь: Z := (X + Y) / 2


За допомогою яких операторів присвоєння можна поміняти місцями значення двох змінних X таY. Для цього необхідно використання третьої змінної того ж типу, що й змінні X та Y, наприклад, Z: Z := X; X := Y; Y := Z

Розглянемо приклади запису лінійних алгоритмів:

Задача 1 Два робітники виконували спільну роботу протягом місяця на умовах погодинної оплати праці. Перший відпрацював t1годин, а другий – t2 годин. Вартість однієї години першого робітника становить p1 грн., другого – p2 грн. Обчислити середню заробітну плату робітників.

Розв’язання. Середня заробітна плата обчислюється за формулою:

pc=(p1 * t1 + p2 * t2)/(t1 + t2)

Розвязання:

program zarplata;

var p1,p2:real;

t1,t2:integer;

pc:real;

x:real;

y:integer;

begin

write(‘введіть кількість відпрацьованих годин робітниками’);

readln(t1,t2);

write(‘введіть вартості годин:’);

readln(p1,p2);

x:=p1*t1+p2*t2;

y:=t1+t2;

pc:=x/y;

writeln(‘Середня зарплата становить pc=’,pc:7:2,’грн’);

end.

Задача 2. Дано дійсні числа x та y. Обчислити значення виразу:

999999999.jpg

Розвязання:

Необхідні змінні:

x, y - задані числа;

Rez - результат обчислень.

Програма має наступний вигляд:

Program Task_51;

Uses crt;

Var x, y, Rez : real;

Begin

Clrscr;

Write(‘Введіть два числа ’);

Readln(x,y);

{Будьте уважні при розставлянні дужок у виразі}

Rez := (abs(x)-abs(y))/(1+abs(x*y));

Writeln(‘Rez= ‘, Rez:8:2);

Readkey;

End.

IV. Закріплення нових знань

Умови задач для самостійного виконання:

Задача 1.Якщо на одну шальку терезів посадити Даринку, яка важить n кг, і Наталку, яка важить на 5 кг менше, а на іншу насипати m кг цукерок, то скільки кілограмів цукерок доведеться з'їсти дівчаткам, щоб шальки терезів врівноважились.

Розвязання: Введемо наступні змінні для зберігання необхідних результатів:

N - вага Даринки;

M - вага цукерок;

P - вага цукерок, що необхідно з'їсти дівчинкам.

Тоді програма для розв'язання задачі буде такою:

Program Task_41;

Uses crt;

Var M, N, P : real;

Begin

Clrscr;

Write(‘Введіть вагу Даринки ’);

Readln(N);

Write(‘Введіть вагу цукерок, що лежать на терезах’);

Readln(M);

P := N + N – 5 – M; {N – 5 – вага Наталки}

Writeln(‘Дівчаткам необхідно з’їсти ’,P,‘кг цукерок.’);

Readln; {Процедура затримує зображення на екрані до натискання клавіші

Enter}

End.

Задача 2.Дано два дійсних числа a та b. Обчислити їх суму, різницю, добуток.

Розвязання: Необхідні змінні:

a, b - задані числа;

Add - сума чисел;

Sub - різниця чисел;

Multy - добуток чисел.

Програма має наступний вигляд:

Program Task_50;

Uses crt;

Var a, b, Add, Sub, Multy : real;

Begin

Clrscr;

Write(‘Введіть два числа ’);

Readln(a,b);

Add := a + b;

Sub := a – b;

Multy := a*b;

Writeln(‘Результати обчислень:’);

Writeln(‘Сума = ‘, Add :8:2);

Writeln(‘Різниця = ’, Sub :8:2);

Writeln(‘Добуток = ’, Multy :8:2);

Readkey; {Процедура затримки зображення на екрані до натискання будь-

якої клавіші}

End.


V. Домашнє завдання

Скласти програми:

Задача 1.Дано гіпотенуза і один з катетів прямокутного трикутника. Знайти другий його катет і площу вписаного круга.

Розвязання:

Необхідні змінні:

a - катет прямокутного трикутника;

c - гіпотенуза прямокутного трикутника;

b - довжина невідомого катета;

S - площа вписаного круга.

Програма має наступний вигляд:

Program Task_58;

Uses crt;

Var a, b, c, S : real;

Begin

Clrscr;

Write(‘Введіть довжину гіпотенузи ’);

Readln(с);

Write(‘Введіть довжину відомого катета ’);

Readln(a);

b := sqrt(sqr(c)-sqr(a));

S := Pi*(a+b-c)/2;

Writeln(‘Довжина невідомого катета: ’, b:8:2);

Writeln(‘Площа вписаного кола: ’, S:8:2);

Readkey;

End.


Задача 2.Обчислити відстань між двома точками з координатами (x1; y1) та (x2; y2).

Розвязання: Необхідні змінні:

x1, y1 - координати першої точки;

x2, y2 - координати другої точки


Program Task_62;

Uses crt;

Var x1,x2,y1,y2,S : real;

Begin

Clrscr;

Write(‘Введіть координати першої точки ’);

Readln(x1,y1);

Write(‘Введіть координати другої точки ’);

Readln(x2,y2);

S := sqrt(sqr(x1-x2)-sqr(y1-y2));

Writeln(‘Відстань між двома точками дорівнює: ’, S:8:2);

Readkey;

End.

--СВИНАРЕНКО АЛЕКСАНДР 22:23, 17 декабря 2008 (EET)