Відмінності між версіями «Конспект уроку №9 Свинаренка Олександра»
(не показано одну проміжну версію цього учасника) | |||
Рядок 1: | Рядок 1: | ||
'''Урок на тему''' "Опис програм за правилами мови програмування. | '''Урок на тему''' "Опис програм за правилами мови програмування. | ||
Запис лінійних алгоритмів мовою програмування." | Запис лінійних алгоритмів мовою програмування." | ||
+ | |||
+ | Підготував: Студент 44 – групи: Свинаренко Олександр | ||
'''Мета уроку:''' дати дітям основні означення і поняття з даної теми; | '''Мета уроку:''' дати дітям основні означення і поняття з даної теми; | ||
Рядок 97: | Рядок 99: | ||
ABS(X) – |X| | ABS(X) – |X| | ||
+ | |||
ARCTAN(X) – arctg x | ARCTAN(X) – arctg x | ||
COS(X) – cos x | COS(X) – cos x | ||
+ | |||
SIN(X) – sin x | SIN(X) – sin x | ||
EXP(X) – ex | EXP(X) – ex | ||
+ | |||
LN(X) – ln x | LN(X) – ln x | ||
SQR(X) – x 2 | SQR(X) – x 2 | ||
+ | |||
SQRT(X) – квадратний корінь | SQRT(X) – квадратний корінь | ||
Рядок 183: | Рядок 189: | ||
'''Задача 2.''' Дано дійсні числа x та y. Обчислити значення виразу: | '''Задача 2.''' Дано дійсні числа x та y. Обчислити значення виразу: | ||
− | + | [[Image:999999999.jpg]] | |
− | + | ||
− | + | ||
''Розвязання:'' | ''Розвязання:'' | ||
Необхідні змінні: | Необхідні змінні: | ||
+ | |||
x, y - задані числа; | x, y - задані числа; | ||
+ | |||
Rez - результат обчислень. | Rez - результат обчислень. | ||
+ | |||
Програма має наступний вигляд: | Програма має наступний вигляд: | ||
+ | |||
Program Task_51; | Program Task_51; | ||
+ | |||
Uses crt; | Uses crt; | ||
+ | |||
Var x, y, Rez : real; | Var x, y, Rez : real; | ||
+ | |||
Begin | Begin | ||
+ | |||
Clrscr; | Clrscr; | ||
+ | |||
Write(‘Введіть два числа ’); | Write(‘Введіть два числа ’); | ||
+ | |||
Readln(x,y); | Readln(x,y); | ||
+ | |||
{Будьте уважні при розставлянні дужок у виразі} | {Будьте уважні при розставлянні дужок у виразі} | ||
+ | |||
Rez := (abs(x)-abs(y))/(1+abs(x*y)); | Rez := (abs(x)-abs(y))/(1+abs(x*y)); | ||
+ | |||
Writeln(‘Rez= ‘, Rez:8:2); | Writeln(‘Rez= ‘, Rez:8:2); | ||
+ | |||
Readkey; | Readkey; | ||
+ | |||
End. | End. | ||
Рядок 216: | Рядок 236: | ||
''Розвязання:'' | ''Розвязання:'' | ||
Введемо наступні змінні для зберігання необхідних результатів: | Введемо наступні змінні для зберігання необхідних результатів: | ||
+ | |||
N - вага Даринки; | N - вага Даринки; | ||
+ | |||
M - вага цукерок; | M - вага цукерок; | ||
+ | |||
P - вага цукерок, що необхідно з'їсти дівчинкам. | P - вага цукерок, що необхідно з'їсти дівчинкам. | ||
+ | |||
Тоді програма для розв'язання задачі буде такою: | Тоді програма для розв'язання задачі буде такою: | ||
+ | |||
Program Task_41; | Program Task_41; | ||
+ | |||
Uses crt; | Uses crt; | ||
+ | |||
Var M, N, P : real; | Var M, N, P : real; | ||
+ | |||
Begin | Begin | ||
+ | |||
Clrscr; | Clrscr; | ||
+ | |||
Write(‘Введіть вагу Даринки ’); | Write(‘Введіть вагу Даринки ’); | ||
+ | |||
Readln(N); | Readln(N); | ||
+ | |||
Write(‘Введіть вагу цукерок, що лежать на терезах’); | Write(‘Введіть вагу цукерок, що лежать на терезах’); | ||
+ | |||
Readln(M); | Readln(M); | ||
+ | |||
P := N + N – 5 – M; {N – 5 – вага Наталки} | P := N + N – 5 – M; {N – 5 – вага Наталки} | ||
+ | |||
Writeln(‘Дівчаткам необхідно з’їсти ’,P,‘кг цукерок.’); | Writeln(‘Дівчаткам необхідно з’їсти ’,P,‘кг цукерок.’); | ||
− | Readln; {Процедура затримує зображення на екрані до натискання клавіші Enter} | + | |
+ | Readln; {Процедура затримує зображення на екрані до натискання клавіші | ||
+ | |||
+ | Enter} | ||
End. | End. | ||
Рядок 239: | Рядок 277: | ||
''Розвязання:'' | ''Розвязання:'' | ||
Необхідні змінні: | Необхідні змінні: | ||
+ | |||
a, b - задані числа; | a, b - задані числа; | ||
+ | |||
Add - сума чисел; | Add - сума чисел; | ||
+ | |||
Sub - різниця чисел; | Sub - різниця чисел; | ||
+ | |||
Multy - добуток чисел. | Multy - добуток чисел. | ||
+ | |||
Програма має наступний вигляд: | Програма має наступний вигляд: | ||
+ | |||
Program Task_50; | Program Task_50; | ||
+ | |||
Uses crt; | Uses crt; | ||
+ | |||
Var a, b, Add, Sub, Multy : real; | Var a, b, Add, Sub, Multy : real; | ||
+ | |||
Begin | Begin | ||
+ | |||
Clrscr; | Clrscr; | ||
+ | |||
Write(‘Введіть два числа ’); | Write(‘Введіть два числа ’); | ||
+ | |||
Readln(a,b); | Readln(a,b); | ||
+ | |||
Add := a + b; | Add := a + b; | ||
+ | |||
Sub := a – b; | Sub := a – b; | ||
+ | |||
Multy := a*b; | Multy := a*b; | ||
+ | |||
Writeln(‘Результати обчислень:’); | Writeln(‘Результати обчислень:’); | ||
+ | |||
Writeln(‘Сума = ‘, Add :8:2); | Writeln(‘Сума = ‘, Add :8:2); | ||
+ | |||
Writeln(‘Різниця = ’, Sub :8:2); | Writeln(‘Різниця = ’, Sub :8:2); | ||
+ | |||
Writeln(‘Добуток = ’, Multy :8:2); | Writeln(‘Добуток = ’, Multy :8:2); | ||
− | Readkey; {Процедура затримки зображення на екрані до натискання будь-якої клавіші} | + | |
+ | Readkey; {Процедура затримки зображення на екрані до натискання будь- | ||
+ | |||
+ | якої клавіші} | ||
+ | |||
End. | End. | ||
Рядок 272: | Рядок 333: | ||
Необхідні змінні: | Необхідні змінні: | ||
+ | |||
a - катет прямокутного трикутника; | a - катет прямокутного трикутника; | ||
+ | |||
c - гіпотенуза прямокутного трикутника; | c - гіпотенуза прямокутного трикутника; | ||
+ | |||
b - довжина невідомого катета; | b - довжина невідомого катета; | ||
+ | |||
S - площа вписаного круга. | S - площа вписаного круга. | ||
Програма має наступний вигляд: | Програма має наступний вигляд: | ||
+ | |||
Program Task_58; | Program Task_58; | ||
+ | |||
Uses crt; | Uses crt; | ||
+ | |||
Var a, b, c, S : real; | Var a, b, c, S : real; | ||
+ | |||
Begin | Begin | ||
+ | |||
Clrscr; | Clrscr; | ||
+ | |||
Write(‘Введіть довжину гіпотенузи ’); | Write(‘Введіть довжину гіпотенузи ’); | ||
+ | |||
Readln(с); | Readln(с); | ||
+ | |||
Write(‘Введіть довжину відомого катета ’); | Write(‘Введіть довжину відомого катета ’); | ||
+ | |||
Readln(a); | Readln(a); | ||
+ | |||
b := sqrt(sqr(c)-sqr(a)); | b := sqrt(sqr(c)-sqr(a)); | ||
+ | |||
S := Pi*(a+b-c)/2; | S := Pi*(a+b-c)/2; | ||
+ | |||
Writeln(‘Довжина невідомого катета: ’, b:8:2); | Writeln(‘Довжина невідомого катета: ’, b:8:2); | ||
+ | |||
Writeln(‘Площа вписаного кола: ’, S:8:2); | Writeln(‘Площа вписаного кола: ’, S:8:2); | ||
+ | |||
Readkey; | Readkey; | ||
+ | |||
End. | End. | ||
+ | |||
'''Задача 2'''.Обчислити відстань між двома точками з координатами (x1; y1) та (x2; y2). | '''Задача 2'''.Обчислити відстань між двома точками з координатами (x1; y1) та (x2; y2). | ||
Рядок 298: | Рядок 379: | ||
''Розвязання:'' | ''Розвязання:'' | ||
Необхідні змінні: | Необхідні змінні: | ||
+ | |||
x1, y1 - координати першої точки; | x1, y1 - координати першої точки; | ||
+ | |||
x2, y2 - координати другої точки | x2, y2 - координати другої точки | ||
+ | |||
Program Task_62; | Program Task_62; | ||
+ | |||
Uses crt; | Uses crt; | ||
+ | |||
Var x1,x2,y1,y2,S : real; | Var x1,x2,y1,y2,S : real; | ||
+ | |||
Begin | Begin | ||
+ | |||
Clrscr; | Clrscr; | ||
+ | |||
Write(‘Введіть координати першої точки ’); | Write(‘Введіть координати першої точки ’); | ||
+ | |||
Readln(x1,y1); | Readln(x1,y1); | ||
+ | |||
Write(‘Введіть координати другої точки ’); | Write(‘Введіть координати другої точки ’); | ||
+ | |||
Readln(x2,y2); | Readln(x2,y2); | ||
+ | |||
S := sqrt(sqr(x1-x2)-sqr(y1-y2)); | S := sqrt(sqr(x1-x2)-sqr(y1-y2)); | ||
+ | |||
Writeln(‘Відстань між двома точками дорівнює: ’, S:8:2); | Writeln(‘Відстань між двома точками дорівнює: ’, S:8:2); | ||
+ | |||
Readkey; | Readkey; | ||
+ | |||
End. | End. | ||
--[[User:СВИНАРЕНКО АЛЕКСАНДР|СВИНАРЕНКО АЛЕКСАНДР]] 22:23, 17 декабря 2008 (EET) | --[[User:СВИНАРЕНКО АЛЕКСАНДР|СВИНАРЕНКО АЛЕКСАНДР]] 22:23, 17 декабря 2008 (EET) |
Поточна версія на 22:29, 17 грудня 2008
Урок на тему "Опис програм за правилами мови програмування. Запис лінійних алгоритмів мовою програмування."
Підготував: Студент 44 – групи: Свинаренко Олександр
Мета уроку: дати дітям основні означення і поняття з даної теми; розвивати мислення і творчі здібності; формувати акуратність та уважність при створенні програм.
Тип уроку: урок засвоєння нових знань з елементами практичної роботи.
Хід уроку
І. Організаційна частина.
ІІ. Перевірка домашньої роботи.
ІІІ. Пояснення нового матеріалу
Будь-яка мова програмування володіє схожістю з природними мовами. Як і природна мова, вона має свій алфавіт, словник, знаки перепинання (роздільники), за допомогою яких можна утворювати складніші мовні конструкції, подібні до пропозицій природної мови. Словник мови програмування складається з чисел, слів і деяких інших символів. Елементи цього словника називають лексемами. Приклади лексем:
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. Обчислити значення виразу:
Розвязання:
Необхідні змінні:
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)