Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
План-конспект проведення лекційного заняття з дисципліни «Інформатика»
Модуль 4. Програмування лінійних, розгалужених та циклічних обчислювальних процесів
Лекція: 4.1. Основні відомості про мову Turbo Pascal. Лінійні програми.
ВСТУП (5 хв.)
Мова програмування Pascal, що названа на честь відомого математика XVII ст. Блеза Паскаля була розроблена у 1971 р. професором Нікласом Віртом (інститут інформатики Швейцарської вищої політехнічної школи у Цюріху). Мова Pascal була створена на основі мови програмування високого рівня Algol та призначена для навчання програмуванню. Тому в ній дуже чітко дотримується структурна лінія програмування. Дуже швидко виявилася надзвичайна ефективність Pascal для різноманітних додатків. Завдяки своїм перевагам мова Pascal у теперішній час є однією із найбільш розповсюджених у світі мов програмування високого рівня. Також мова Pascal зявилася основою для створення багатьох інших мов програмування високого рівня, наприклад: Ada, C, Modula-2.
1. Загальна структура лінійної програми (15 хв.)
Як правило, лінійні програми призначені для послідовного оброблення даних за формулами. Розглянемо структуру лінійної програми безпосередньо на прикладі програми pr1, що обчислює суму двох чисел.
program pr1;
var a,b,result: integer;
begin
a:=2;
b:=3;
result:=a+b;
writeln(result);
end.
У будь-якій лінійній програмі є блоки введення вихідних даних, обчислювальний блок та блок виведення результатів розвязування завдання. Структура програми у загальному випадку має вигляд:
Слово program є зарезервованим (ключовим), тобто не може використовуватися більш ні для чого.
<імя програми> це правильний ідентифікатор (у прикладі -- pr1). Ідентифікатори використовуються у програмі для позначення констант, змінних, міток, типів, процедур та функцій. Ідентифікатор повинен починатися з літери та може складатися з літер латинського алфавіту, цифр та знаків підкреслювання. Ключові слова не можуть використовуватися як ідентифікатори. Довжина ідентифікатора необмежена, але значущими є тільки перші 63 символи. Бажано використовувати осмислені ідентифікатори це робить програми більш зрозумілими. Різниця між заголовними та рядковими літерами у мові Pascal ігнорується.
Описова частина програми може складатися з декількох розділів:
Розділи описової частини можуть записуватися у довільному порядку.
У прикладі описова частина складається тільки із опису змінних a, b, result.
Операторна частина програми обмежується операторними дужками begin (початок блока) end (кінець блока) та містить оператори, що необхідні для виконання послідовності дій для розвязання визначеного завдання. Роздільником між розділами описової частини є крапка з комою. Наприкінці програми необхідна крапка. Мова Pascal є мовою вільного формату, тобто в рядку може розміщуватися декілька операторів. У прикладі операторна частина програми (тіло програми) складається з операторів присвоювання a:=2; b:=3; result:=a+b; та виклику вбудованої процедури writeln виведення даних. Попередній опис вбудованої процедури непотрібний, вона доступна будь-якій програмі.
Перед описовою частиною може розміщуватися розділ підключення модулів. Він починається із ключового слова uses (використати), за яким слідує список імен модулів (через кому).
В мові Pascal можливе оброблення даних різних типів. Тип обєкта визначає множину можливих значень та множину можливих операцій над цими значеннями. Можливі типи даних подані рис. 1.
Діапазон можливих значень цілих типів залежіть від їх внутрішнього подання, яке може займати один, два або чотири байти. Назви цілих типів, довжина їхнього внутрішнього подання у байтах та діапазон можливих значень поданий таблицею 1.
Таблиця 1
Довжина, байт |
Назва типа |
Діапазон значень |
1 |
Byte () |
від 0 до 255 |
1 |
Char (символ) |
|
1 |
Shortint (строчка символів) |
від -128 до 127 |
1 |
Boolean (логічний тип) |
два значення: False (неправда) та True (істина) |
2 |
Word (зарезервовані дані) |
від 0 до 65535 |
2 |
Integer (цілочисельні дані) |
від -32768 до 32767 |
4 |
longint |
від -2147483648 до 2147483647 |
6 |
Real (речовинні дані) |
від 2.9Е-39 до 1.7+38 |
Над цілими числами виконуються операції: "+" додавання; "*" множення; "/" ділення; "-" віднімання; div цілочисельне ділення; mod отримання остачі від цілочисельного ділення. Наприклад, 5div2 обчислює результат 2, 6div2 3, 5mod2 1, а 6mod3 0.
Основні вбудовані процедури та функції, що можуть бути застосовані до цілих типів, подані табл. 2. У квадратних дужках вказаний необовязковий параметр.
Таблиця 2
Функція |
Реалізована дія |
abs(x) |
Модуль х |
dec(x[,i]) |
Зменшує значення х на i, при відсутності i на 1 |
inc(x[,i]) |
Збільшує значення х на i, при відсутності i на 1 |
odd(i) |
true, якщо i непарне число, false - парне |
random(w) |
Псевдовипадкове число, рівномірно розподілене на інтервалі [0,w-1] |
sqr(x) |
Квадрат аргументу |
Під даними дійсного типу розуміють числа, що записані з десятковою крапкою. Значення дійсного числа у ЕОМ має скінченну точність, яка залежіть від внутрішнього формату (подання). Назви дійсних типів, довжина їхнього внутрішнього подання у байтах та діапазон можливих значень поданий таблицею 3.
Таблиця 3
Довжина, байт |
Назва |
Діапазон десяткового |
Кількість значущих |
4 |
single |
від -45 до +38 |
от 7 до 8 |
6 |
real |
від -39 до +38 |
от 11 до 12 |
8 |
double |
від -324 до +308 |
от 15 до 16 |
10 |
extended |
від -4951 до +4932 |
от 19 до 20 |
8 |
comp |
від до |
от 19 до 20 |
Існують дві форми подання дійсних чисел: з фіксованою та плаваючою крапкою. Варіанти запису подані: перший стовпчик з фіксованою крапкою, другий з плаваючою.
1.36 1.36e0
0.0013 1.3e-3
123.123 1.23123e2
У розділі опису змінних дані дійсного типу можна описати таким чином:
var a,b: real;
c,d: single;
k: double;
l,m,n: extended;
Вбудовані процедури та функції для оброблення даних дійсного типу подані таблицею 4.
Таблиця 4
Функція |
Реалізована дія |
abs(x) |
Модуль аргументу |
arctan(x) |
Арктангенс (радіани) |
frac(x) |
Дробова частина числа |
int(x) |
Ціла частина числа |
ln(x) |
Натуральний логарифм |
pi |
=3.14159... |
random |
Псевдовипадкове число, що належить інтервалу [0,1] |
randomize |
Ініціалізація датчика псевдовипадкових чисел |
sqrt(x) |
Корінь квадратний |
sqr(x) |
Квадрат аргументу |
sin(x) |
Синус (радіани) |
сos(x) |
Косинус (радіани) |
exp(x) |
Експонента |
Оператор присвоювання змінює вміст областей памяті. Він змінює значення змінної у лівої частині оператора значенням виразу, який записаний у правій частині оператора та має наступний синтаксис:
<змінна>:= вираз.
Необхідно враховувати, що змінна та вираз повинні бути одного типу. Наприклад, якщо змінні записані наступним чином:
var
x,y : integer;
a,b : real;
то можна записати оператори присвоювання
x:=x+5;
y:=x;
a:=b;
b:=5.33*x+y/2;
В мові Pascal майже неможливі автоматичні перетворення типів. Як виняток, константи та змінні типу integer можна використовувати у виразах типу real, тобто для розглянутого прикладу оператор x:=a буде невірним, тому що перетворення дійсного типу у цілий неможливо. У той же час оператор a:=x буде вірним.
Слід памятати, що коли змінної присвоюється нове значення, старе стирається, тобто втрачається. Таким чином, змінна завжди містіть результат останнього оператора присвоювання.
Введення виведення повязано з інформаційним обміном між ОЗП та зовнішніми пристроями. Стандартним файлом введення є клавіатура, а виведення екран. Для введення даних з клавіатури використовуються процедури:
read (<список введення>);
readln (<список введення>);
Список введення це послідовність із однієї або декількох змінних типу char (символьний), string (строковий), а також буд-якого цілого або дійсного типу.
Процедура readln ідентична процедурі read за винятком того, що після зчитування останньої змінної, частина рядку, що залишилася, пропускається. Відповідно, наступне звернення до read або readln починається з першого символу нового рядка. Крім того, процедуру readln можна викликати без параметрів, що призведе до пропуску всіх символів поточного рядку.
Розглянемо фрагмент программы:
var a,b,c,d:real;
begin ... read(a,b,c,d); ... end.
Нехай необхідно ввести числа 1,3;13,3;76,8;125,0. Інформація Информация набирається у вигляді:
1.3 13.3 76.8 125.0 у одному або декількох рядках. В результаті виконання процедури read змінна а отримає значення 1.3, b значення 13.3, с 76.8, d 125.0. Якщо введення виконується за допомогою двох процедур:
readln(a,b,c);read(d); числа, що відповідають a,b,c, необхідно набирати у одному рядку, а число, що відповідає d, у іншому.
Для виведення даних на екран призначені процедури:
writeln (<список введення>);
write (<список введення>);
Список виведення може складатися з одного або декількох виразів типу char, string, boolean (логічний тип), а також будь-якого цілого або дійсного типу. Процедура writeln відрізняється від write тим, що у процедурі write курсор залишається на тому ж рядку екрана (після останнього виведеного символу), а у writeln курсор переходить на початок наступного рядку. Наприклад, якщо змінні a,b,c описані як цілі та мають значення 132, 25, -37 відповідно. Після виконання процедур
writeln(a,b);write(c);
a и b будуть надруковані у одному рядку, а с у наступному:
13225
-37
В процедурах виведення write і writeln після кожного значення може вказуватися формат виведення двокрапка, після якої записується ціле число або вираз. Число або вираз визначає ширину поля виведення, тобто кількість позицій, що відведені під значення, що виводиться. Якщо довжина значення менше, ніж ширина поля виведення, то текст, що виводиться, доповнюється зліва пробілами, тобто здійснюється вирівнювання стовпчика значень з правого боку. Наприклад, при виконанні процедури writeln(a:3,b:5,c:4);для друку значення змінної a відводится 3 позициі, b 5 позицій, с 4 позиції.
Якщо довжина значення, що виводиться, більше ширини поля, формат виведення ігнорується (тобто ширина поля автоматично збільшується до необхідного розміру. Наприклад, при виконанні процедури writeln('a=',a:1,'b=',b:2,'c=',c:3); буде надруковано: a=132b=25c= -37. В цьому прикладі використовується можливість виведення рядків символів.
Крім того, процедура виведення надає можливість вказувати для чисел з плаваючою крапкою загальну кількість позицій та кількість позицій після десяткової коми.
Наприклад, хай змінні d, e, f дійсні, та мають, відповідно, значення: 13,13;123,45;-987,654. Результатом виконання процедури writeln('d=',d:5:2,'e=',e:8:3,'f=',f:8:2); буде рядок
d=13.13e= 123.450f= -987.65
Якщо для чисел з плаваючою крапкою вказується тільки загальна кількість позицій, без визначення кількості позицій після коми, то в цьому випадку числа виводяться у експоненціальній формі та займають вказану кількість позицій. Якщо кількість позицій не вказана взагалі, для кожного числа стандартна ширина поля та числа друкуються у експоненціальній формі. Наприклад:
writeln('d=',d:10,' e=',e:9,' f=',f);
d= 1.313E+01 e= 1.23Е+02 f=-9.8765000000E+02
Для процедур write, writeln, read, readln можна вказувати список параметрів довільної довжини.
Для введення-виведення у текстовий файл використовуються ті ж самі процедури, але першим параметром вказується файлова змінна:
writeln(f,'abc',1,True,2.4);
Розглянемо ще один приклад лінійної програми. Маємо два числа a и b довжини сторін прямокутника. Знайти площу s та периметр p прямокутника. Необхідно скласти алгоритм та програму розвязання завдання.
program pr2 ;
var {відкривається блок перемених}
a,b,s,p:real; {}
begin
writeln(' Введення сторін пpямокутника:');
read(a,b);
s:=a*b;
p:=(a+b)*2;
writeln('Площадь = ',s:5:3);
writeln('Пеpиметp = ',p:5:3);
end.
В програмі всі оператори виконуються послідовно. Виконання програми починається з виклику процедури виведення writeln, яка виводить на екран підказку "Введення сторін прямокутника:", що забезпечує зручний інтерфейс користувача. Після введення двох чисел обчислюються площа та периметр прямокутника, результати виводяться на екран.
Література: