Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_lektsy_Pascal_C.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.85 Mб
Скачать

Елементи мови

  1. Алфавіт.

  2. Числа.

  3. Рядки.

  4. Константи.

  5. Операції.

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

  7. Змінні.

  8. Вирази.

Алфавіт.

Алфавіт - це сукупність знаків, що використовуються для побудови конструкцій мови.

Алфавіт мови Pascal складають:

  • латинські букви великі і маленькі (A..Z, a..z);

  • цифри (0..9);

  • спеціальні символи (= # + - . , : ; ‘ @ $ * ( ) [ ] { } / < > пропуск);

  • службові слова (begin end for until . . .).

Великі і малі літери не розрізняються.

Числа.

Для зображення чисел по умовчанню використовується десяткове подання.

Числа можуть бути цілими і дійсними.

Цілі числа можуть мати знак. Знак плюс може опускатись. Наприклад: 234, -34.

Можна використовувати цілі числа в 16-річному форматі. В цьому разі значення повинно починатись з символу $. Наприклад: $567, $6F41, -$216.

Дійсні числа можуть бути представлені в звичайній формі (23.4, -34.8123, 0.0034) або в експоненціальній формі:

Математичне представлення числа в експоненціальній формі:

7230 = 7.23103 , 0.00067 = 6.710-4.

Відповідний запис на мові Pascal: 7.23Е3 6.7Е-4

Не можна дійсне число починати з крапки ( .789), потрібно записувати 0.789.

Рядки.

Рядок - це послідовність довільних символів, обмежених апострофами (одинарними лапками). Наприклад:

‘Розум поперед справи’ , ‘Золоті руки у того, хто навчався добре’

Константи.

Константи – це величини, які не змінюються.

Константи можуть бути:

  • числовими (45, -62.789б $57),

  • рядковими (‘Очі - дзеркало душі.’),

  • символьними ( ‘а’, ‘6’, ‘%’),

  • логічними (true, false)

Операції.

Операції - це дії над заданими величинами. Величини, що задіяні в операції, називаються операндами. Наприклад, операція додавання чисел 2 і 3 записується 3 + 2. Числа 2 і 3 будуть операндами.

Операції можуть бути трьох типів: арифметичні, логічні і операції відношень.

Арифметичні операції:

+ - додавання,

div - ціле ділення

 - вирахування,

mod - взяття залишку

* - множення,

/ - дійсне ділення,

В операціях + - * / операндами можуть бути і цілі і дійсні числа. Результат операції / завжди дійсне число. Операндами операцій div і mod можуть бути тільки цілі числа . Результат цих операцій також цілі числа. Наприклад: 17 div 4 = 4, 20 div 4=5, 17 mod 4 = 1, 20 mod 4 = 0.

Якщо виконувати ділення в стовпчик, то частне буде результатом операції div, а залишок - результатом операції mod.

Операції введення в ступінь в мові Pascal нема. Для цього можна використовувати тотожність:

або за правилами мови = exp( y*ln(x))

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

‘Хліб ’ + ‘всьому голова.’ = ‘Хліб всьому голова.’

Логічні операції:

and - логічне „і”

or - логічне „або”

xor - логічне додавання

not - заперечення

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

Таблиця істиності.

X

Y

X and Y

X or Y

X xor Y

not X

T

T

T

T

F

F

T

F

F

T

T

F

F

T

F

T

T

T

F

F

F

F

F

T

Математичне позначення

Операції відношень:

< -

менше

= -

дорівнює

> -

більше

<> -

не дорівнює

>= -

не менше

<= -

не більше

Результатом операції відношень є логічне значення.

Операндами операцій відношень можуть бути дані різних типів.

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

‘Не силою борються, а вмінням’ < ‘Розум поперед діла’ = True

‘Не навчаючись і лапті не сплетеш’ > ‘Який майстер, така й робота’=False

Пріоритети операцій:

( )

not

* / div mod and

+ - or xor

< > = >= <= <>

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

Ідентифікатор - це будь-яка послідовність латинських букв, цифр і символу підкреслювання ( _ ) довжиною не більше 255 символів, яка починається з букви або символу підкреслювання.

Ідентифікатори використовуються для формування імен різних елементів програми.

В якості ідентифікатора не можна використовувати службові слова.

Змінні.

Змінні - це величини, які можуть змінюватись. Кожній змінній призначається ім’я, яке формується зо правилом ідентифікатора. Доцільно змінним давати такі імена, які відображають суть тих величин, які в них зберігаються. Якщо імена складаються з кількох слів їх можна розділяти символом підкреслювання або кожне слово починати з великої букви. Наприклад middl_temperatura (або MiddlTemperatura).

Вирази.

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

Вирази можуть бути арифметичними і логічними.

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

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

Приклад арифметичного виразу:

(2*x*y+sqrt(4+x))/(25*x-sin(x)+exp(1/5*ln(x*y)))

Знак множення опускати не можна тому, що ‘xy’ можна розглядати як змінну.

Приклад логічного виразу:

A  B   C, де A=true, B=false, C=true

Запис виразу на мові Pascal:

A and B or not C

3 F

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

Приклад логічного виразу іншого виду:

( a < b)   (a + b > d)  C, де a=-4, b=34, d = 5, C=false

Завдання для самоперевірки.

  1. Записати цілу числову константу.

  2. Записати дійсну числову константу в експоненціальній і звичній формі.

  3. Записати своє ім’я, як строкову константу.

  4. Які з перелічених ідентифікаторів є невірними: Massa, FuncObr1, _begin, 1fan, ОпорнаБалка, a-b, Opus2, Opus 3, Count_стол

  5. Чому знак множення не можна опускати?

  6. Записати вираз, значення якого буде істина, якщо задане число не кратне 4.

  7. Знайти значення виразу (5>7) and (4<5)

  8. Записати вираз, значення якого буде істина, якщо X[-4,5].

  9. Знайти помилковий вираз: 7.5+8, -5 div 3.5, true and not false, 7 % 3, 17 div 6 +7 mod 2, 4+5 + (true or false)

  10. Скільки операцій виконується при визначенні виразу (x+1/2)*(y+7/10)-3/4

  11. Вказати неправильні записи чисел і пояснити чому: 0006; 7,0; 7.; +0.3; .8; 2/3; E-1; 8E0; -0.00076; 2*E5; $65; 0E-4; $98.5; -1E-1;

  12. Операцію ділення ( / ) можна виконувати над змінними цілого типу?

  13. Записати вираз, значення якого буде істина, якщо X[-2,20].

  14. Записати вираз, значення якого буде істина, якщо Х належить до одного з відрізків [-5,-4], [0,2], [3,7].

  15. Записати вираз, значення якого буде істина, якщо точка А лежить в першій чверті тригонометричного кола.

  16. Записати вираз, значення якого буде істина, якщо точка А лежить в третій чверті тригонометричного кола.

  17. Визначити тип результату виразів 5/7, X<Y, 5+12*3+sin(x),6-12<-24,7 mod 6,

  18. Визначити значення: 23 mod 4, -15 div 6, 8 mod 2, -34 mod 5, 45 div 9

  19. Визначити ‘Чим багаті, тим і раді’ < ‘Гостю шана – хазяїну честь’

  20. Визначити ‘Коса – дівоча краса’ > ‘Краса розуму не придасть’.

Структура програми

  1. Заголовок програми.

  2. Блок програми:

    1. Описова частина.

    2. Виконавча частина.

  1. Коментарі.

Програма, записана мовою Pascal, складається з заголовку і блоку.

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

Формат заголовку: program <ім’я програми>;

Наприклад, program MyFunk;

Блок складається з описової і виконавчої частин.

Описова частина.

В описовій частині описується все те, що буде використано в виконавчий частині. Описова частина може складатись з кількох розділів. Їх послідовність не має значення. Не є помилкою, якщо розділи повторюються. Кожен розділ має своє ім’я і описує елементи програми. Кожен опис закінчується символом „;”.

Розділ опису констант.

Ім’я розділу const. Використовується для опису іменованих констант. Константи, яким призначене символічне ім'я, називаються іменованими константами.

Формат опису:

Const

<ім’я константи>=<значення>;

Наприклад:

Const

Kol=10;

Name=’Наташа’;

T=true;

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

Розділ опису типів.

Ім’я розділу type. Використовується для опису типів, визначених користувачем.

Формат опису:

Type

<ім’я типу> = <опис типу>|<перелік значень типу>;

Наприклад:

Type

Color=(red,white,blue,yellow);

Mebel=(ctol,ctul,shkaph);

Розділ опису змінних.

Ім’я розділу var. Використовується для опису всіх змінних, які будуть використовуватись в виконавчий частині..

Формат опису:

Var

<ім’я змінної> : <ім’я типу>|<опис типу>;

Наприклад:

Var

A,b:integer;

X,y:real;

T:Boolean;

C:byte;

DayWork:(Monday, Tuesday, Wednesday, Thursday, Friday);

Розділ опису процедур і функцій.

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

Виконавча частина.

Виконавча частина являється тілом програми. Вона складається з одного розділу – розділу операторів. Формат розділу:

Begin

<оператори>

end.

Коментарі.

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

Коментарі можна розміщувати в окремих рядках або в рядку після оператора. Коментар може розміщуватись в декількох рядках. Коментарі з обох боків обмежуються фігурними дужками { } або символами (* *).

Завдання для самоперевірки.

  1. Описати тип Квіти

  2. Описати як константи своє ім’я, свій рік народження..

  3. Описати змінну, в якій буде розміщуватись вага цукру.

  4. Описати змінну, в якій буде розміщуватись кількість студентів в групі.

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

  6. Описати змінну в яку необхідно записати значення 75213.

  7. Описати змінну в яку необхідно записати назву своєї групи.

  8. Описати змінну в яку необхідно записати значення -0.00056.

  9. Описати змінну в яку необхідно записати своє прізвище.

  10. Описати тип даних Номери_днів_тижня.

  11. Який тип буде у виразу 1+0.0

  12. Який тип буде у виразу sqr(5.0).

  13. Який тип буде у виразу sqrt(16).

  14. Який тип буде у виразу 20/4

  15. Який тип буде у виразу 5>7.

Типи даних

  1. Визначення типу даних.

  2. Прості типи даних.

    1. Стандартні типи.

    2. Типи визначені користувачем

Щоб вірно трактувати різні дані необхідно вказати його тип.

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

Типи даних поділяються на прості і складні.

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

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

Прості типи

Прості типи поділяються на стандартні і визначені користувачем.

Стандартні типи.

Числові типи. Поділяються на цілі і дійсні типи.

Цілі типи:

Ім’я типу

Опис

Область значень

Розмір в b

Byte

коротке ціле без знака

0 . . 255

1

ShortInt

коротке ціле з знаком

-128 . . 127

1

Word

ціле без знака

0 . . 65535

2

Integer

ціле з знаком

-32768 . . 32767

2

LongInt

довге ціле з знаком

-2147483648 . . 2147483647

4

Розташування цілих чисел в оперативній пам’яті.

Якщо число займає кілька байт, то всі байти розглядаються як єдине ціле, вишукавшись в один ряд послідовно. Самий правий розряд числа вважається молодшим і має номер „0”. Самий лівий розряд вважається старшим і має номер в відповідності з кількістю байт (7 або 15 або 31. Можна визначити за формулою: n=8*<кількість байт>-1).

N 0

Якщо число без знаку, то значення числа займає всі розряди.

Якщо число з знаком, то старший розряд вважається знаковим. Він має значення „0” для позитивних чисел і „1” – для негативних.

Позитивні числа зберігаються в прямому коді, а негативні – в коді додатному до 2. Щоб отримати число в такій формі, необхідно число в двійковому коді інвертувати і додати до нього „1”.

Наприклад: запишемо число -142 в додатному коді. Спочатку переведемо число з десяткової системи числення в війкову: 14210 = 0010 0001 01102. Інвертуємо:

1101 1110 1001 і додаємо 1:

+ 1

1101 1110 1010

Дійсні типи:

Ім’я типу

Опис

Кількість значущих цифр

Діапазон порядку

Розмір в b

Real

Дійсне

11 .. 12

-39 .. 38

6

Double

Дійсне подвійної точності

15 .. 16

-324 .. 308

8

Single

Дійсне одинарної точності

7 .. 8

4

Extended

Дійсне високої точності

19 .. 20

-4951 .. 4932

10

Comp

Ціле в формі дійсного

19 .. 20

-263 +1 .. 263 -1

8

Розташування дійсних чисел в оперативній пам’яті.

Як і для цілих чисел всі байти розглядаються як єдине ціле.

N 0

Мантиса числа

Порядок числа

Числа зберігаються в нормалізованій формі, наприклад, представимо кілька чисел в нормалізованій формі:

723.3812 = 0.7233812103 - 0.7233812 є мантисою числа, а 3 є порядком числа.

0.006206 = 0.620610-2 - 0.6206 є мантисою числа, а -2 є порядком числа

Для порядку і для мантиси відводиться певна кількість розрядів в залежності від типу числа. Найстарший розряд, з відведених для порядку, вважається знаковим для порядку. Найстарший розряд з усіх розрядів є знаковим для числа. Спосіб представлення позитивних і негативних значень мантиси і порядку такий же, як і для цілих чисел: позитивні значення записуються в прямому коді, а негативні - в додатному.

Припустимі операції для числових типів: арифметичні і операції відношень

Функції системної бібліотеки.

Функція

Призначення

Тип аргументу

Тип результату

Abs(x)

| x |

Ціле, дійсне

Ціле, дійсне

Sqr(x)

X2

Ціле, дійсне

Ціле, дійсне

Sqrt(x)

, x>=0

Ціле, дійсне

Дійсне

Ln(x)

Ln x, x>0

Ціле, дійсне

Дійсне

Exp(x)

ex

Ціле, дійсне

Дійсне

Cos(x)

cos x, x в радіанах

Ціле, дійсне

Дійсне

Sin(x)

sin x, x в радіанах

Ціле, дійсне

Дійсне

Arctan(x)

arctg x, результат в радіанах;

Ціле, дійсне

Дійсне

Pi

-

Дійсне

Random

Визначає випадкове число з проміжку 0..1

-

Дійсне

Random(n)

Визначає випадкове число з проміжку 0..n-1

Ціле

Ціле

Randomize

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

-

Round(x)

Округлення до цілого по правилам математики

Дійсне

Ціле

Trunk(x)

Повертає цілу частину дійсного числа в цілому форматі

Дійсне

Ціле

Int(x)

Повертає цілу частину дійсного числа в дійсному форматі

Дійсне

Дійсне

Frac(x)

Повертає дробову частину дійсного числа в дійсному форматі

Дійсне

Дійсне

Inc(x[,n])

Збільшує задане число X на 1 або n

Inc(x) - збільшення х на 1

Inc(x,5) - збільшення х на 5

Ціле

Ціле

Dec(x[,n])

Зменшує задане число X на 1 або n

Ціле

Ціле

Символьний тип.

Ім’я типу Char. Значення займає 1 байт.

Це тип даних, що складається з одного символу. Запис значення цього типу є символ, взятий в апострофи: ‘а’, ‘8’, ‘%’.

Символ можна записати, використовуючи значення внутрішнього коду, поперед якого ставиться символ # . Наприклад, #97, #65.

Множина допустимих значень - множина всіх символів (255).

Допустимі операції - операції відношень.

Функції системної бібліотеки.

Функція

Призначення

Тип аргументу

Тип результату

Ord(c)

Визначає код символу С

Символьний

Цілий

Chr(n)

Визначає символ по його коду.

Цілий

Символьний

Pred(c)

Визначає символ, який знаходиться перед С

Символьний

Символьний

Succ(c)

Визначає символ, який знаходиться після С

Символьний

Символьний

Логічний тип.

Ім’я типу Boolean. Значення займає 1 байт.

Область допустимих значень - true, false.

Допустимі операції - логічні операції і операції відношень.

Строковий (рядковий) тип.

Ім’я типу String. Значення займає 255 байт. З метою економії пам’яті можна обмежувати розмір строкового значення, указуючи його довжину: String [n], де n кількість символів в рядку.

Область допустимих значень - необмежена.

Допустимі операції - операції відношень і операція додавання.

Системна бібліотека має процедури і функції роботи з строковими значеннями, але вони будуть розглянуті пізніше.

Для вводу значень змiнних типу string використовуеться оператор readln, а не read. Одним оператором можна ввести тiльки один рядок.

Пустий рядок визначається як два апострофи, записані поряд: ‘’

Стандартнi функцiї і процедури для роботи з рядками.

Функція, процедура

Призначення

Приклад

Length( S )

Функція. Визначення довжини рядка.

length ('')=0;

length ('авто')=4.

concat (s1,s2,s3)

Функція. Об'єднання рядків.

concat ('транс','фор','матор')='трансформатор'

pos (<підрядок>,<рядок>)

Визначення позиції входження підрядка в рядок.

pos ('и','инструкция')=1;

Copy(S,<номер символу початку>, <кількість символів>)

Функція. Коріювання підрядка

copy ('информатика',1,4)='инфо'

delete (S,<номер символу початку>, <кількість символів>)

Видалення підрядка.

Виконавши delete ('автомобиль',5,6) отримаємо 'авто'

insert (<підрядок>,<рядок>,<номер символу початку вставки >)

Вставка підрядка

виконавши

insert ('дорога', 'Добрий день, Олю',13)

отримаємо 'Добрий день, дорога Олю !'

str (<число>,<змінна рядку>)

Переведення числового значення в рядок.

для z: integer=1888, line : string;

Пiсля str(z,line) отримаємо line='1888'

Val

(<число в строковому форматі>,

<числова змінна>,

<С – код завершення>)

Переведення числа в строковому форматі в число. Якщо при перетвореннi помилку не виявлено, то C = 0, iнакше C набуває значення номера позицiї помилкового символу

для line : string=188.72; x : real; c : word;

Пiсля var (line,x,c)

отримаємо x=188.72; c=0;

Якщо line = '2dr5'

пiсля val(lim,x,c) x-невизначенi, c=2.

Адресний тип.

Ім’я типу Pointer. Значення займає 4 байти.

Область допустимих значень – вся область адрес оперативної пам’яті.

Допустимі операції - операції відношень.

Щоб отримати адресу змінної, необхідно записати @Massa.

Адресний тип використовується при роботі з посиланнями.

Типи визначені користувачем

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

Перелічувальний тип даних

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

Дні тижня: (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)

Кольори: (red, white, black, green, blue).

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

Допустимими операціями є операції відношень.

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

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

Функція

Призначення

Тип аргументу

Тип результату

Ord(c)

Визначає порядковий номер значення в списку, починаючи з нуля

Перелічений

Цілий

Pred(c)

Визначає значення, яке знаходиться перед вказаним

Перелічений

Перелічений

Succ(c)

Визначає значення, яке знаходиться після вказаного

Перелічений

Перелічений

До перелічувального (порядкового) типу відносяться і деякі стандартні типи, а саме:

всі цілі типи, символьний і логічний.

Обмежений тип даних

Обмежений тип визначає вказаний інтервал(діапазон) деякого базового перелічувального типу.

Формат опису інтервалу:

<мінімальне значення> .. <максимальне значення>

Наприклад, інтервал оцінок 2..5, інтервал днів тижня 1..7, інтервал символів ‘в’.. ‘н’, інтервал кольорів White..Blue.

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

Допустимими операціями будуть ті, що допустимі для базового типу.

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

Завдання для самоперевірки

  1. До якого типу даних відноситься значення 62834?.

  2. Знайти помилки: dec(3.5); frac(7.0567), ord(‘слово’), sqrt(-9), succ(false), pred(‘35’), int(67.45)

  3. Які типи з перелічених відносяться до цілих типів: -8, 0.1, 6678123, 0, ‘в’, $56.

  4. Які з перелічених операцій являються допустимими: ‘а’+’е’, 56+0.123, true<false, 34+’24’, ‘Не просить ремесло хліба, а само кормить...!’’...!’, 5+ord(‘р’)

  5. Визначити результату 2*4+trunc(3.56), inc(2)+random(12), 7-2-sqrt(9)

  6. Який діапазон випадкових чисел можна отримати, використовуючи вираз -6+random(20)

  7. Записати вираз за допомогою якого можна отримати випадкові числа з проміжку [9,29].

  8. Визначити тип результату 5+random+6

Керування порядком обчислень

  1. Визначення оператору. Типи операторів.

  2. Прості оператори.

  3. Оператори вводу-виводу.

  4. Форматування даних при виводі.

  5. Складні оператори.

Оператор - це речення, яке визначає деяку дію. Оператори можуть розміщуватись в одній або декількох рядках. В кінці оператора ставиться символ „;”. Всі оператори можна поділити на

  • Прості,

  • Вводу-виводу

  • Складні.

Прості оператори

Оператор присвоювання.

Знак оператора :=. Формат оператора:

<ім’я змінної>:=<вираз>;

Тип змінної і виразу повинні бути одного типу або бути сумісними по типу.

Наприклад:

Var

a,b:integer;

x,y:real;

s:string;

T:boolean;

a:=24*b+4;

x:=sin(y)-7.8;

Оператор y:=a+b; буде вірним тому, що ціле значення можна розмістити в дійсній змінній.

А навпаки (a:=y+x;) не допустимо.

Змінній T присвоїти true, якщо a>b і false в іншому випадку: T:=a>b;

Змінній T присвоїти true, якщо a кратно b і false в іншому випадку: T:=a mod b=0;

Оператор виходу з блоку.

Формат оператору: exit;

Оператор завершує роботу блоку.

Оператор завершення програми.

Формат оператору: halt <n>;

Оператор завершує роботу програми. n – код завершення програми.

Оператори виклику процедур і функцій

Формат оператору: <ім’я процедури | функції> [{<список параметрів>}];

Оператори вводу-виводу

Оператори вводу

Оператори вводу призначені для вводу даних. Пристроєм вводу по умовчанню є клавіатура.

Формат оператору вводу:

read | readln [(<список вводу>)];

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

Елементами списку вводу можуть бути тільки змінні. Елементи списку вводу відділяються комами.

При введенні значень з клавіатури дані можуть розділятись символами „пропуск” і Enter(). Строкові дані можуть розділятись тільки Enter.

Дані, що вводяться повинні відповідати списку вводу: їх кількість повинна бути не меншою і відповідні елементи повинні бути одного типу, або сумісними по типу.

Значення, що вводяться з клавіатури, мають строковий формат, тому при введенні числових значень вони перетворюються у внутрішній формат і заносяться у відповідні змінні.

Оператор починає обробку введених даних після натискання Enter. Якщо введені всі дані з списку вводу, то оператор завершується. Якщо ні – очікується продовження вводу.

Наприклад, при наявності в програмі опису:

Var

a,b:integer;

x,y:real; (a)

s,s1:string[20];

і оператору readln(a,b,x,y);

Для задоволення вводу можна набрати на клавіатурі наступний рядок даних -34 45 3.45 -56.8 

В результаті вводу змінні будуть мати значення: a=-34, b=45, x=3.45, y=-56.8

Після виконання оператору readln(a,b,x,b);

і вводу 34 45 3.45 -56  змінні будуть мати значення: a=-34, b=-56, x=3.45

Якщо треба послідовно виконати оператори readln(a,b); read (x,y);

і на клавіатурі набрати дані 22 7 2.35 -5.4 

то після вводу двох перших значень курсор перейде на новий рядок (тому, що використано оператор readln) і значення для x і y введені не будуть. Тому необхідно використати наступний ввод

22 7 

2.35 -5.4 

Оператори виводу

Оператори виводу призначені для виводу даних. Пристроєм виводу по умовчанню є екран монітора.

Формат оператору виводу:

write | writeln [(<список виводу>)];

Оператор writeln відрізняється від write тим, що після виводу означених даних здійснює перехід на початок наступного рядка.

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

Числові дані перед виведенням перетворюються в строковий формат.

Наприклад, використовуючи опис (а), виведемо сповіщення:

Writeln (‘При Х=’,X,’ Y=’,Y);

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

Якщо необхідно перейти на наступний рядок, можна виконати оператор Writeln;

Форматування даних при виводі

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

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

<елемент виводу>:<ширина поля виводу>

Значення ширини поля виводу може буди цілим числом або виразом цілого типу.

Дані, що виводяться вирівнюються по правому краю поля. Ліві нулі не виводяться.

Наприклад: при використанні оператора writeln ( ‘Значення’:15, a:5, b:7);

при a=25 I b=165 буде виведено:

_ _ _ _ _ _ _ Значення _ _ _25_ _ _ _ 165

При виведенні числових дійсних значень необхідно додатково вказати кількість знаків після крапки. Кількість вказується після ширини поля, відділяючись символом „:”.

<елемент виводу>:<ширина поля виводу>:<кількість знаків після крапки>

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

Наприклад: при використанні оператора writeln (x:7:2, y:10:3, z:5.0);

при x=25.0034, b=-165.56784, z=356.776 буде виведено:

_ _ 25.00 _ _-165.568 _ 357.

Розробка програм реалізації лінійних алгоритмів

Приклад 1. Розробити програму знаходження площини довільного трикутника з заданими сторонами.

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

Алгоритм рішення задачі і текст програми:

program S_Rectangle;

{Визначення площини по заданим сторонам трикутника}

var

a,b,c,p,S:real;

begin

write ('Введіть значення сторін трикутника ');

readln(a,b,c);

p:=(a+b+c)/3;

S:=sqrt(p*(p-a)*(p-b)*(p-cmod 60);

writeln ('Площина трикутника S= ',S:8:2);

readln;

end.

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

Вивчивши завдання, визначаємо, що для одержання результату необхідно ввести значення для довжини шляху і швидкості руху. При вводі уточнюємо одиниці виміру: шлях в кілометрах, швидкість в кілометрах на годину. Для одержання значення витраченого часу використовуємо відому з фізики формулу S=Vt. Можна визначити час t=S/V. Результатом буде дійсне число, яке користувачу не дасть вірного уявлення про витрачений час. Необхідно отримати значення часу в годинах і хвилинах. Щоб отримати кількість годин, необхідно для дійсного значення часу взяти його цілу частину (для цього використовується функція trunk). Для визначення хвилин, необхідно дійсне значення часу перевести в хвилини, отримане значення перевести в ціле значення (функція round) і отримати залишок від ділення цього значення на 60. Значення витрачених годин і хвилин є результатом рішення і їх необхідно вивести.

Алгоритм рішення задачі і текст програми:

program Time;

{Визначення часу по заданим шляху і швидкості}

var

S,V,T:real;

chas,min:integer;

begin

write ('Введіть значення шляху в км і швидкості км/год: ');

readln(S,V);

T:=S/V; {дійсне значення часу}

chas:=trunc(T); {ціле значення кількості годин}

min:=(round(T*60) mod 60); { -“- кількості хвилин}

writeln ('Витрачено: годин ',chas:4,' хвилин’,min:4);

readln;

end.

Завдання для самоперевірки.

  1. Записати оператор присвоювання, який змінній D присвоює середнє арифметичне значення чисел a,b,c.

  2. Записати оператор присвоювання, який змінній C присвоює значення гіпотенузи прямокутного трикутника з катетами a,b.

  3. Яке значення буде мати змінна X після виконання операторів X:=10; X:=X+4;

  4. Записати оператор, який змінює знак у значення змінної X

  5. Які значення будуть мати змінні X,Y після виконання операторів X:=2; Y:=5; X:=Y; Y:=x;

  6. Поміняти місцями значення змінних X,Y таким чином, щоб в X опинилось значення X, а в Y - значення X.

  7. Змінній Х присвоїти значення цілої частини дійсного числа Y.

  8. Змінній T присвоїти true, якщо a парне і false в іншому випадку:

  9. Змінній T присвоїти true, якщо a=b і false в іншому випадку:

  10. Змінній T присвоїти true, якщо три числа x,y,z рівні між собою і false в іншому випадку:

  11. Y дійсна змінна, n - ціла змінна. Оператор Y:=n+1; буде вірним чи ні і чому.

  12. Y дійсна змінна, n - ціла змінна. Оператор n:=Y +1; буде вірним чи ні і чому.

  13. Y дійсна змінна, n - ціла змінна. Оператор n:=n div 2; буде вірним чи ні і чому.

  14. Y дійсна змінна, n - ціла змінна. Оператор n:=n/2; буде вірним чи ні і чому.

  15. Y дійсна змінна, n - ціла змінна. Оператор Y:=y div 2; буде вірним чи ні і чому.

  16. Чи буде вірним оператор k:=k mod 3+k*cos(0); і якого типу повинна бути змінна k.

  17. Присвоїти змінній k третю від кінця цифру в запису додатного цілого числа m. (наприклад, якщо k=13289, то m= 2).

  18. Визначити значення змінної t:=not (2=5);

  19. Записати оператор виводу, який виводить фразу: При X=1.2, Y=1.234

  20. Записати оператор виводу, який виводить значення цілої змінної з відступом від початку рядка на 7 позицій.

  21. Записати оператор виводу, який виводить заголовок „Таблиця” з відступом від початку рядка на 15 позицій.

  22. Записати оператор вводу для вводу двох значень цілого типу і одного строкового. Якими символами необхідно розділяти дані при вводі.

  23. Записати оператор вводу для вводу двох значень строкового типу і одного цілого. Якими символами необхідно розділяти дані при вводі.

  24. Які значення будуть мати змінні X,Y,Z після описаного вводу і чому: оператор вводу readln(X); read(y,z). Рядок вводу 5 6 7 

  25. Які значення будуть мати змінні X,Y,Z після описаного вводу і чому: оператор вводу readln(X,Y); read(z). Рядки вводу 5 6  7 

  26. Розробити програму визначення площини прямокутника по заданим його сторонам.

  27. Розробити програму визначення наступного члена арифметичної прогресії при заданих значеннях останнього члена прогресії і різниці прогресії.

  28. Розробити програму визначення множника геометричної прогресії, якщо відомі два послідовні члена цієї прогресії.

Складні оператори

Складні оператори діляться на складені і структуровані оператори.

Складений оператор - це послідовність довільних операторів, обмежених операторними дужками (словами begin, end):

Begin

<оператори>

end;

Структуровані оператори - це оператори, які мають внутрішню структуру. До них відносяться оператори реалізації розгалужених процесів, оператори реалізації циклічних процесів(оператори повторів), оператор приєднання.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]