Книжки | Реферати

Реферат: Початкові відомості про програмування на мові Pascal

Початкові відомості про програмування на мові Pascal

Робота з величинами. Введення-виведення. Вирази. Лінійні алгоритми

Для програмної обробки в ЕОМ дані представляються у вигляді величин і їх сукупностей. Величина - це елемент даних з точки зору їх семантичного (смислового) змісту або обробки. Значеннєве (семантичне) розбиття даних проводиться під час постановки задачі і розробки алгоритму її рішення (вхідні, вихідні та проміжні). Вихідні (вхідні) - це дані, відомі перед виконанням завдання, з умови. Вихідні дані - результат рішення завдання. Змінні, які не є ані аргументом, ні результатом алгоритму, а використовуються тільки для позначення обчислюваного проміжного значення, називаються проміжними. Разом з тим, архітектура ЕОМ, використовуване програмне забезпечення вимагають вказати імена і типи даних -- цілий, дійсний, логічний і символьний.

Отже, з поняттям величини пов'язані наступні характеристики (атрибути):

ім'я - це її позначення і місце в пам'яті;

тип - безліч допустимих значень і безліч застосовних операцій до неї;

значення -- динамічна характеристика, може змінюватися багаторазово в ході виконання алгоритму. Під час виконання алгоритму в кожен конкретний момент величина має якесь значення або не визначена.

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

Тип вираження визначається типами що входять до нього величин, а також виконуваними операціями. У мовою Pascal тип величини задають заздалегідь, тому що всі змінні, що використовуються в програмі, повинні бути оголошені в розділі опису із зазначенням їх типу.

Розрізняють змінні наступних простих типів: цілі (Integer, Byte, ShortInt, Word, LongInt), речові (Real, Comp, Double, Single, Extended), логічний (Boolean), символьний (Char), що перераховуються, діапазонний.

Взагалі, ієрархія типів у мові Pascal наступна:

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

Опис змінної: ім'я змінної (ідентифікатор): тип;

Приклад опису:

Var D, C, N: Integer;

LogPer : Boolean;

A, B: Real;

K: Char;

Тип змінної визначає діапазон допустимих значень, прийнятих величинами цього типу; набір операцій, допустимих над даною величиною і об'єм пам'яті, що відводиться під цю змінну.

Кожен тип має свій ідентифікатор.        

Ідентифікатор         

Довжина,   байт         

Діапазон   (безліч) значень         

Операції             

Цілі   типи             

integer         

2         

-32768 .. 32767         

+, -, /, *, Div, Mod,> =, <=, =,   <>, <,>             

byte         

1         

0 .. 255         

+, -, /, *, Div, Mod,> =, <=, =,   <>, <,>             

word         

2         

0 .. 65535         

+, -, /, *, Div, Mod,> =, <=, =,   <>, <,>             

shortint         

1         

-128 .. 127         

+, -, /, *, Div, Mod,> =, <=, =,   <>, <,>             

longint         

4         

-2147483648 .. 2147483647         

+, -, /, *, Div, Mod,> =, <=, =,   <>, <,>             

Речові   типи             

real         

6         

2,9 Ч10-39 - 1,7 Ч1038         

+, -, /, *,> =, <=, =, <>,   <,>             

single         

4         

1,5 Ч10-45 - 3,4 Ч1038         

+, -, /, *,> =, <=, =, <>,   <,>             

double         

8         

5Ч10-324 - 1,7 Ч10308         

+, -, /, *,> =, <=, =, <>,   <,>             

extended         

10         

3,4 Ч10-4932   - 1,1 Ч104932         

+, -,   /, *,> =, <=, =, <>, <,>             

Логічний   тип             

Boolean         

1         

true, false         

Not, And, Or, Xor,> =, <=, =,   <>, <,>             

символьний   тип             

char         

1         

все   символи коду ASCII         

+,   > =, <=, =, <>, <,>     

Обмін інформацією з ЕОМ передбачає використання певних засобів вводу-виводу. У ЕОМ основним засобом введення є клавіатура, висновку - дисплея.

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

У мові Pascal ця команда виглядає таким чином:

Read (список змінних);

Наприклад,

Var

A : Real; B: Integer; C: Char;

Begin

Read (A, B, C)

End.

Читається: "Ввести речовинну А, В і цілу символьну С".

Як тільки в програмі зустрічається виклик процедури Read, ЕОМ призупиняє виконання цієї програми і чекає, поки користувач введе з клавіатури відповідні значення, які по черзі будуть привласнюватися змінним, перелічених у списку вводу. Значення даних, що вводяться одночасно відображаються на екрані дисплея. Після натискання клавіші enter, коли всі змінні візьмуть свої значення з вхідного набору даних, визначеного користувачем, виконання програми триває з оператора, наступного за Read.

У списку вводу значення розділяються між собою пробілом. Присвоєння значень з вхідного потоку виконується зліва направо відповідно до порядку проходження змінних у процедурі Read. Процедура ReadLn схожа на Read. Різниця лише в те, що ReadLn реагує на кінець рядка, і у разі його виявлення відбувається відразу перехід до наступного рядка.

Приклади введення даних за допомогою процедури ReadLn:

ReadLn (A, B, C);

ReadLn (X);

ReadLn (LogPer);

Процедура, яка виводить зміст змінних на екран, називається процедурою виведення на екран.

У Pascal ця команда виглядає наступним чином

Write (список констант і/або змінних, розділених комою)

Наприклад Write ( 'Вихідна значення:', C).

У списку виводу цих операторів може бути або один вислів, або послідовність таких виразів, розділених між собою комами.

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

Приклади виводу даних:

Write (A, B, C);

WriteLn ( 'Коренем рівняння є', X);

WriteLn (LogPer);

Для управління розміщенням виведених значень процедури Write і WriteLn використовуються з форматами. Під форматом даних розуміється розташування і порядок кодування окремих полів елементів даних.

Процедура виведення з форматом для цілого типу має вигляд:

WriteLn (A: N, B: M, C: L);

Тут N, M, L -- вираження цілого типу, що задають ширину поля виведення значень.

При виведенні речових значень оператор Write (R) без зазначення формату виводить речовий R в поле шириною 18 символів у формі з плаваючою комою в нормалізованому вигляді. Для десяткового подання значення R застосовується оператор з форматами виду WriteLn (R: N: M). У десяткового запису числа R виводиться M (0 Ј M Ј 24) знаків після коми, всього виводиться N знаків.

Приклади:

WriteLn (N: 4);

WriteLn (K: 10: 5, S: 7: 3);

Загальна структура програми на Pascal така:

Program ім'я програми; (заголовок)

Const Константа1 = Значення; (оголошення констант) (розділ описів)

Константа2 = значення;

...

КонстантаN = значення;

Type ...; (оголошення типів)

Var СпісокПеременних1 : Тип; (опис змінних)

СпісокПеременних2: Тип;

...

СпісокПеременнихN: Тип;

Label СпісокМеток;

Function ...

Procedure ...

Begin

(розділ операторів)

End.

Оператор присвоювання - один з найбільш простих і найбільш часто використовуваних операторів у будь-якій мові програмування, у тому числі і в Pascal. Він призначений для обчислення нового значення деякої змінної, а також для визначення значення, що повертається функцією. У загальному вигляді оператор присвоювання можна записати так:

мінлива: = вираження;

Оператор виконується таким чином. Обчислюється значення виразу в правій частині привласнення. Після цього змінна, зазначена в лівій частині, отримує обчислена значення. При цьому тип виразу має бути сумісним з присвоювання з типом змінної. Тип виразу визначається типом операндів, що входять до нього, і залежить від операцій, які виконуються над ними.

Приклади присвоювання:

X: = (Y + Z)/(2 + Z * 10) -- 1/3;

LogPer: = (A> B) And (C <= D);

Для операцій додавання, віднімання та множення тип результату в залежності від типу операнда буде таким:        

Операнд   1         

Операнд   2         

Результат             

Integer         

Integer         

Integer             

Integer         

Real         

Real             

Real         

Integer         

Real             

Real         

Real         

Real     

Для операції поділу тип результату в залежності від типу операнда буде таким:        

Операнд   1         

Операнд   2         

Результат             

Integer         

Integer         

Real             

Integer         

Real         

Real             

Real         

Integer         

Real             

Real         

Real         

Real     

У Pascal є операції цілочисельного поділу і знаходження залишку від ділення. При виконанні цілочисельного поділу (операція DIV) залишок від ділення відкидається.

Наприклад, 15 div 3 = 5; 18 div 5 = 3; 123 div 10 = 12, 7 div 10 = 0.

За допомогою операції MOD можна знайти залишок від ділення одного цілого числа на інше.

Наприклад, 15 mod 3 = 0; 18 mod 5 = 3; 123 mod 10 = 3, 7 mod 10 = 7.

При записі алгебраїчних виразів використовують арифметичні операції (додавання, множення, віднімання, ділення), функції Pascal, круглі дужки.

Порядок дій при обчисленні значення виразу:
1) обчислюються значення в дужках;
2) обчислюються значення функцій;
3) виконується унарні операції (унарний мінус - зміна знака);
4) виконуються операції множення і ділення (у тому числі цілочисельного ділення і знаходження залишку від ділення);
5) виконуються операції додавання і віднімання.

Вбудовані математичні функції мови Pascal        

Математична   запис         

Запис   на Pascal         

Призначення             

cos x         

cos (x)         

Косинус   x радіан             

sin x         

sin (x)         

Синус x   радіан             

ex         

exp (x)         

Значення   e в ступені x             

[x]         

trunc (x)         

Ціла   частина числа x             

| x |         

abs (x)         

Модуль   числа x             

x2         

sqr (x)         

Квадрат   числа x             

        

sqrt (x)         

Квадратний   корінь з x             

(x)         

frac (x)         

Дробная   частину x             

arctg x         

arctan (x)         

Арктангенс   числа x             

ln x         

ln (x)         

Натуральний   логарифм x             

p         

Pi         

Число p     

Піднесення до ступінь (крім зведення в квадрат і піднесення до степеня числа e) відсутня. Для зведення в довільну ступінь можна скористатися очевидним рівністю: xy = ey ln x. Для зведення числа в натуральну ступінь можна написати власну функцію. Наприклад,

(Функція зведення числа X в натуральну ступінь N)

Function Stepen (X : Real; N: Integer): Real;

Var I: Integer; St: Real;

Begin

St : = 1;

For I: = 1 To N Do St: = St * X;

Stepen : = St;

End;

Інший спосіб отримати натуральне значення z = xy, де x, y - натуральні, це зробити так: Z : = Round (Exp (Y * Ln (X ))).

Примітка. Цікавою є завдання одержання ступеня будь-якого цілого числа (за винятком нуля), якщо основа ступеня - невід'ємне ціле, без використання розвилки. Одне з можливих рішень: (-1) * Ord (Odd (Y)) * Exp (Y * Ln (X)) + Ord (Odd (Y +1)) * Exp (Y * Ln (X)). Тут Ord (K) - функція, що повертає порядковий номер величини K в тому чи іншому порядковому тип (у прикладі використано властивість, що порядковий номер False дорівнює 0, а порядковий номер True - 1).

Приклади запису математичних виразів:        

Математична   запис         

Запис   на Pascal             

1. x2 - 7x + 6         

Sqr (x) - 7 * x + 6             

2.         

(Abs (x) - Abs (y))/(1 + Abs (x * y))             

3.         

Ln (Abs ((y - Sqrt (Abs (x))) * (x - y/(z   + Sqr (x)/4 ))))     

Логічний операнд - це конструкція відповідної мови програмування, яка задає правило для обчислення одного з двох можливих значень: True або False.

Найчастіше логічні вираження використовують в операторах привласнення або для запису того або іншої умови. Складовими частинами логічних виразів можуть бути: логічні значення (True, False); логічні змінні; відносини.

Наприклад, 1) Y: = True; 2) Z: = False; 3) LogPer: = A> B; 4) Log1: = (A = B) And (C <= D).

Як видно з прикладів, ставлення - це два вирази, розділених між собою знаком операції відносини (>, <, =, <>, <=,> =). Ставлення є найпростішою конструкцією логічного виразу. Воно обчислює результат True, якщо виконується задане співвідношення, і False - інакше.

Прімечаніе.Несмотря на те, що операції відносини =, <>,> =, <= визначені для речових типів, реально вони в більшості випадків коректно не працюють в Внаслідок того, що безліч речових величин, представимо в пам'яті ЕОМ, дискретно. Тому їх слід, якщо це можливо, уникати. У тому випадку, коли все-таки для речових виникає необхідність обчислення зазначених відносин, розумно перевіряти речові величини не на рівність, а на близькість розташування один до одного, тобто замінювати відносини виду A = B відносинами виду | AB |

У мові Pascal операції відносини визначені для величин порядкового будь-якого типу (цілі, символьний, логічний, перечіслімий, діапазон). Операції відносини можуть бути виконані також над рядковими виразами. Порівняння двох рядків виконується посимвольний зліва направо відповідно до їх лексикографічної упорядкованістю в таблиці кодів ASCII. Ця впорядкованість припускає, що "1" < "2", "a" < "b", "B" < "C" і т.д. Як тільки в процесі попарних порівнянь символів з однаковою порядкової позицією виявляється більший за кодом ASCII символ, даний процес припиняється, і вважається, що рядок з цим символом відповідно більше іншого рядка. Якщо рядки мають різну довжину і їх символи збігаються до останнього знаку, то вважається, що більш короткий рядок менше.

Логическое вираз - це логічний операнд або послідовність логічних операндів, розділених між собою знаками логічних операцій (NOT, AND, OR, XOR).

Порядок дій при обчисленні значення логічного виразу:
1) обчислюються значення в дужках;
2) обчислюються значення функцій;
3) виконується унарні операції (операція NOT);
4) виконується операція AND;
5) виконуються операції OR, XOR;
6) виконуються операції відносини.

Дії виконуються зліва направо з урахуванням їх старшинства. Бажана послідовність операцій забезпечується шляхом розстановки дужок у відповідних місцях вирази.

При реалізації деяких програм зручно використовувати функції, які мають логічне значення. Зазвичай вони використовуються для того, щоб на деякий питання одержати відповідь "ТАК" або "НІ".

Наприклад, наступна функція повертає True, якщо її аргумент - просте число, і False -- в іншому випадку:

Function Simple (Pr: Integer): Boolean;

Var I: Integer; LogPer: Boolean;

Begin I: = 2; (лічильник)

Repeat

LogPer: = (Pr Mod I = 0); (логічна змінна, що приймає значення TRUE,

якщо число Pr складене)

I: = I + 1

Until (I> Pr Div 2 + 1) Or (LogPer);

(цикл завершуємо в тому випадку, коли лічильник стає більше половини

даного числа або виявляємо, що число складене)

Simple: = Not LogPer

(значення функції одно TRUE, якщо число просте, і FALSE - інакше)

End;

Розглянемо приклади задач, де алгоритм рішення є лінійним.

Завдання 1. Швидкість першого автомобіля v1 км/год, другий - v2 км/год, відстань між ними s км. Яку відстань буде між ними через t ч, якщо автомобілі рухаються в різні сторони?

Згідно умові задачі шукане відстань s1 = s + (v1 + v2) t (якщо автомобілі спочатку рухалися в протилежних сторін) або s2 = | (v1 + v2) ts | (якщо автомобілі спочатку рухалися назустріч один одному).

Щоб отримати це рішення, необхідно ввести вихідні дані, привласнити змінним шукане значення і вивести його на друк.

Program Car;

Var V1, V2, T, S, S1, S2: Real;

Begin

Write ( 'Введіть швидкості автомобілів, відстань між ними і час руху :');

ReadLn (V1, V2, S, T);

S1 : = S + (V1 + V2) * T;

S2 : = Abs ((V1 + V2) * T - S);

WriteLn ( 'Відстань дорівнюватиме', S1: 7:4, 'Км або', S2: 7:4, 'км')

End.

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

Розумно, щоб програма вела діалог з користувачем, тобто необхідно передбачити в ній висновок деяких пояснювальних повідомлень. В іншому випадку навіть сам програміст може через деякий час забути, що необхідно вводити і що є результатом.

Для всіх величин у програмі оголошений тип Real, що пов'язано з прагненням зробити програму більш універсальною і працює з якомога більшими наборами даних.

Завдання 2. Записати логічне вираження, що приймає значення TRUE, якщо точка лежить усередині заштріхованной області, інакше - FALSE.

Перш за все звернемо увагу на те, що цю складну фігуру доцільно розбити на трохи більш прості: трикутник, що лежить в I і IV координатних чвертях і трикутник, що лежить в II і III чверті. Таким чином, точка може потрапити всередину однієї з цих фігур, або на лінію, що обмежує їх. Кількість відносин, що описують будь-яку область, зазвичай збігається з кількістю ліній, цю область обмежують. Щоб точка потрапила всередину області, необхідна істинність кожного з відносин, тому над ними виконується операція AND. Так вся область була розбита на декілька, то між відносинами, що описують кожну з них, використовується операція OR.

Враховуючи наведені тут міркування і записавши рівняння всіх обмежують фігуру ліній, отримуємо шукане логічне вираження:

(X> = 0) And (Y> = 1.5 * X -- 1) And (Y <= X) OR (X <= 0) And (Y> = -1.5 * X - 1) And (Y <=-X)

Завдання 3. Обчислити значення виразу

Для вирішення завдання достатньо ввести всі дані, безпомилково записати вираз і вивести результат. Примітка. При вирішенні цього завдання не враховується область визначення вираження, вважається, що вводяться тільки допустимі дані.

Program Expression;

Var X, Z: Real;

Begin

Write ( 'Введіть значення змінної X: '); ReadLn (X);

Z: = 6 * ln (sqrt (exp (x +1) +2 * exp (x) * cos (x)))/

ln (x - exp (x +3) * sin (x)) + abs (cos (x) / Exp (sin (x )));

WriteLn ( 'Значення виразу:', Z: 12: 6)

End.

Контрольні питання і завдання

1. Що таке величина?

2. Які величини називають аргументами? результатами? проміжними величинами? Наведіть прмери.

3. Які атрибути величини?

4. Які величини називають постійними? змінними? Наведіть прмери.

5. Які прості типи величин існують в мові Pascal?

6. Що визначає тип величини?

7. Розкажіть про простих типи даних та їх атрибути.

8. Як здійснюється введення даних в мові Pascal? Наведіть прмери.

9. Як здійснюється виведення даних в мові Pascal? Наведіть прмери.

10. Яка загальна структура програми в мові Pascal?

11. Розкажіть про оператора присвоювання та сумісності типів.

12. Що таке формат виводу?

13. Розкажіть про правила обчислення алгебраїчного вирази. Наведіть прмери.

14. Розкажіть про правила обчислення логічного виразу. Наведіть прмери.

15. Розкажіть про логічних операціях. Наведіть прмери.

16. Наведіть приклади завдань, що мають лінійний алгоритм рішення.

17. Визначте, який сумарний обсяг пам'яті потрібно під змінні в кожному з прикладів 1-3.

18. Яке призначення наступної програми?

Program Example;

Var N: 100 .. 999;

Begin Write ( 'Введіть натуральне тризначне число: '); ReadLn (N);

WriteLn ( 'Бажаєма величина:', N Div 100 + N Div 10 Mod 10 + N Mod 10);

End.

19. Поставте на координатної площини деяку область, яку можна описати математичними рівняннями і заштрихуйте її. Запишіть логічне вираження, що приймає значення TRUE, якщо точка (x, y) лежить всередині заштріхованной області, інакше -- FALSE.

20. Випишіть кілька алгебраїчних виразів і запишіть їх на мові Pascal.

21. Запишіть алгебраїчні вирази, що відповідають наступним записів на мові Pascal:

а) (a + b)/c; б) a + b / C; в) a/b / C; г) a / (b * c);

д) (a + b)/(d + c); е) a + b / (D + c);

е) a + b / D + c; ж) (a + b)/d + c.

Список літератури

Для підготовки даної роботи були використані матеріали з сайту http://www.comp-science.narod.ru/

розмістити на Facebook розмістити в Twitter розмістити на ВКонтакте.ру