русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Умовний оператор if


Дата добавления: 2015-07-09; просмотров: 2257; Нарушение авторских прав


if Вираз then Оператор1 else 0ператор2;

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

if Вираз then Оператор;

У таких випадках варто пам'ятати правило: Ключове слово else зв'язується з найближчим ключовим словом і£, що стоїть перед ним що ще не було пов'язане з яким-небудь ключовим словом else.

Примітка__Якщо в попередньому прикладі більш чітко позначити структуру вкладеності, :записавши elseна одному рівні з then, якому воно відповідає, то одержимо такий фрагмент:

Завдання 1З'ясувати, чи належить точка з координатами X і Y колу одиничного радіуса з центром на початку координат. programZ1; varX,Y;Real; begin Write('уведіть 2 дійсні числа'); Readln(X,Y); Write(Точка (' , X:6:3, ',', Y:6:3, ')' ); ifsqr(X)+sqr(Y)<1 thenWrite('попадає') elseWrite('не попадає'); Writeln('у коло одиничного радіуса'); end.

25. Оператор циклу з параметром.

Структура команди:

For i: N1 to N2 do

-i- параметр циклу (real)

-N1, N2- початок та кінець значення параметра циклу

Тип N1, N2 відповідає типу параметру циклу і (сталі змінні або вирази)

Оператор може мати вигляд складеного оператора.

Дія команди «і» набуває початкового значення N1, потім виконується тіло циклу, потім «і» збільшується на 1 і виконується тіло циклу. Останнє значення «і» - N2.

Параметр циклу (у прикладі i) - будь-яка змінна цілого (byte, Integer, word, longint,…) або символьного типу (char).

Початкове значення параметру (у прикладі start) – стала, змінна або вираз того ж типу, що й параметр.

Кінцеве значення параметру (у прикладі finish) – стала, змінна або вираз того ж типу, що й параметр.

Заголовок циклу вказує, скільки разів буде виконуватись тіло циклу.

Тіло циклу – оператори, що повторюються.
Тіло циклу – Begin s1; s2; s3; … end;



Кількість витків циклу – кількість повторень тіла циклу.

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

Цикл із передумовою (або цикл-«поки») — це цикл, у якому тіло циклу виконується тільки у разі виконання умови, заданої перед тілом циклу. Якщо умова стає невірною, то робота циклу припиняється і керування передається оператору, наступному за оператором циклу.

На мові Паскаль оператор циклу з перед­умовою ще називається «циклом While-Do».

WHILE<умова>DO<оператор>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.

m:=1; s:=0;

While m <100 DO

Begin

S:=S+m;

M:=m+1;

End;

Цикл із післяумовою (або цикл-«до»)— це цикл, у якому тіло циклу виконується доти, поки умова, задана після тіла циклу, не стане правильною. Якщо умова стає правильною, то робота циклу припиняється й управління передається оператору, наступному за оператором циклу.
На мові Паскаль оператор циклу з після­умовою ще називається «цикл Repeat-Until».
REPEAT<оператор>UNTIL<умова>;
Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.

M:=0; S:=0;

Repeat

M:=m+1;

S:=S+m;

Until m>=100;

27. Оператори обмеження та переривання циклу.

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

Continue; - Обмеження циклу,

Break; - Переривання циклу.

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

У вкладених циклах оператори Continue; і Break; діють тільки на цикл в якому вони записані. Наведемо приклад використання операторів для блокування несанкціонованого доступу до програми.

For i: = 1 to 3 do begin

Write ('Введіть ПАРОЛЬ:'); Readln (S); {S і Parol - змінні одного типу}

If S = Parol Then Break {переривання циклу}

else If i <> 3 Then Continue; {Обмеження циклу}

Writeln ('Доступ до програми ЗАБОРОНЕНО');

Writeln ('Натисніть Enter'); Readln; Halt {переривання програми}

end; {Продовження програми}

 

Процедура BREAK застосовується для дострокового припинення циклів WHILE, REPEAT ... UNTIL і FOR.

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

 

 

28. Приклади алгоритмів розв’язку задач з використанням вкладених циклів.

Вкладені цик­ли — циклічні процеси, що допускають укладеність одних циклів в інші.

Вкладення циклів використовується зокрема при розв'язуванні таких задач:

задачі на перебір варіантів;

табулювання функцій;

обробка двовимірних масивів.

Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення.
У деяких випадках важливо повторити підзадачу кілька разів усередині більш загальної задачі. Один зі способів написання такої програми - включити цикл у набір інструкцій, що повторюються всередині іншого циклу. Така структура, що складається з циклу в циклі, називається вкладеними циклами.

Приклад № 1. Обчислити значення змінної Y=2*K+N при всіх значеннях змінних N=1, 2, 3 і K=2, 4, 6, 8.
Якщо перебирати всі значення N і K, ми повинні отримати 12 значень змінної Y.
Скласти програму можна в такий спосіб: для кожного значення N перебрати всі значення К від 2 до 8, тобто N використати як параметр зовнішнього циклу, К - як параметр внутрішнього циклу.
Текст програми:

Program priklad_1; var n, k, y:integer; begin for n:=1 to 3 do begin k:=2; while k<=8 do   begin y:=2*k+n; writeln(n:3, k:3,y:3); k:=k+2; end; end; end.

 

Параметр N змінюється з кроком 1, тому зовнішній цикл організований з використанням оператора For; параметр К змінюється з кроком 2, тому внутрішній цикл є циклом While.

 

29. Наближене обчислення квадратного кореня..

Var a, z :real;

Begin

WriteLn('Введите любое число','a');

ReadLn(a);

z:=sqrt(a);

WriteLn('Корень квадратный из числа равен.',z);

end.

Функція Sqrt() обраховує квадрат числа .

  Арифметичний спосіб квадратний корінь витяг наближене Для квадратів натуральних чисел вірні такі рівності: = 1 2 1 + 3 = 2 2 1 + 3 + 5 = 3 2 1 + 3 + 5 + 7 = 4 2 і так далі.   вавилонський спосіб або перший метод Герона Якщо - позитивне число і - наближене значення для по надлишку, то - наближене значення для по недоліку. Доказ теореми розглянуто в роботі. Оскільки і є наближеними значеннями для по надлишку і по недоліку, і є середнім геометричним чисел і, то в якості кращого наближення для природно вибрати середнє арифметичне цих чисел, тобто число. А щоб одержати ще більш точне значення для, треба взяти середнє арифметичне чисел і, тобто число. Так обчислюються одне за одним всі більш точні наближені значення для. Наближення ведуть до тих пір, поки два отримані значення і не співпадуть в межах заданої точності  

 

30. Особливості загальної структури підпрограми-процедури.

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

У свою чергу підпрограми можна поділити на підпрограму нижнього рівня. Паскаль використовує 2 типи підпрограм:

1. Процедури

2. Функції

Підпрограма по структурі схожа з Паскаль-програмою. Текст підпрограми записують в розділі описів основної програми, що їх використовують.

Формальні параметри можуть бути відсутніми. Формальні параметри – список змінних з вказівкою їх типів.

Всі типи, що застосовуються в заголовках процедури функції, окрім простих, потрібно описати в підрозділі TYPE основної програми. Параметри, які змінюються в процедурі і передаються в основну програму називаються вихідними, перед ними ставиться VAR, це так звані VAR-параметри.

 

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

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

В розділі локальних даних (який взагалі може бути відсутнім) описують ті дані, які використову­ються тільки для «службових» цілей в самій процедурі (параметри циклів, робочі змінні та маси­ви, тощо).

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

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

 

31. Особливості загальної структури підпрограми-функції.

 

FUNCTION <ім'я>(<сп. форм. пар.>):<тип>; <блок>; де:FUNCTION- зарезервоване слово функція; <ім'я>- ім'я функції, є унікальним, вибирається за загальними правилами, бажано щоб воно відображало зміст функції; <сп. форм. пар.> - список формальних параметрів тобто список імен позначають вихідні дані функції із зазначенням їх типів; <тип> -тип результату повертається функцією і що отримується імені функції; <блок>- тіло процедури є розділи описів і розділ операторів, що представляє складовою оператор (сукупність операторів, укладених в операторні дужки BEGIN END).   Розділи описів функції містять ті ж розділи що й основна програма, в тому числі описания підпрограм нижчого рівня (вкладених). У змістовній частині функції її імені повинен бути присвоєний результат роботи функції. Виклик функції являє собою операнд (покажчик функції) у відмінності від процедури звернення до якої представляє оператор. Він має вигляд: <ім'я>(<сп. факт. пар.>); де: <ім'я> -ім'я функції (курсор); <сп. факт. пар.> - список фактичних параметрів. це список конкретних значень, імен і виразів подставляемых замість формальних параметрів і передачі у функцію.  

 

32. Лінійні масиви

Масив – впорядкована сукупність фіксованої кількості компонентів одного типу. Масиви необхідно описувати у декларативній частині. Якщо використовується один тип індексів, то він одновимірний (лінійний).

Елементи масиву – значення, що утворюють лінійну таблицю.

Індекси – порядкові номери елементів.

Наприклад:

MAS

-7

 

Описати масив можна 2 способами:

1. Var MAS: array [1..5] of integer

2. Type T_MAS=array [1..5] of integer

MAS: T_MAS

Як звернутися до елемента масива?

MAS [1]:=4

MAS [2]:=-7

33. Двовимірні масиви.

Так двовимірний масив — це лінійний масив лінійних масивів.

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

Елементи масиву – значення, що утворюють лінійну таблицю.

Індекси – порядкові номери елементів.

Двовимірний масив можна зообразити за допомогою таблиці, наприклад масив з 4 рядків та 6 стовпців.

 

А2

1,5 4,0 5,7 -4 -6,9
3,5 5,8 -7,8 6,3 88,0 552,0
3,1 45,8 564,0 56,3 -7,0 67,0
5,1 3,1 4,7 -3,9 5,7 -4,4

 

Описати масив можна 2 способами:

1. Var А2: array [1..4, 1..6] of integer

2. Type T_А2=array [1..4, 1..6] of integer

А2: T_А2

Як звернутися до елемента масива?

А2 [3,4]:=564,0

А2 [2,2]:=5,8

 

 

34. Введення – виведення одновимірних та двовимірних масивів.

 

Введення значень виконується різними способами:

-За допомогою формул. Наприклад значення елемента масиву «у» обчислюється по формулі y:=sinx, де x:=pi*i/180 0<=i<=180 For i:= 0 to 180 do Y [i]:= sin (pi*i/180);     -Ініціалізація масиву випадковими значеннями -30 до +40 Randomize; For i:= 1 to 100 do R [i]:= -30 + random (71)

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

Виведення масиву

1. Write (A[i]) – в рядок For I: 1 to 10 do Write (A[i], ‘ ‘)   1. For I: 1 to 10 do Write (‘A[, I, ‘=’, A [i]) – стовпчик  

При виведенні елементів масиву у рядок бажано зазначити формат виведення, наприклад, write(А[і]:8:3) - для дійсних чисел або write (А[i]:6) - для цілих.

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

Порядок роботи з масивом:

1) оголосити про масив у розділі описів, вказавши його розмір і тип елементів, що в нього входять (тобто приготувати місце в пам'яті, де будуть зберігатися значення елементів);

2) заповнити необхідними значеннями масив для розв'язування задачі;

3) якщо треба, вивести масив на екран для зорової перевірки роботи з ним;

4) робота з даним масивом;

5) виведення отриманих результатів.

 

35. Екстремальні значення лінійних масивів.

Масив (таблиця) - це впорядкований набір фіксованої кількості однотипних елементів, які позначаються одним іменем .

Всі елементи масиву мають порядковий номер (індекс). Елементи масиву ще називають змінними з індексами.

Види масивів (таблиць):

1. одновимірний масив (лінійна таблиця);/ 2. двовимірний масив (прямокутна таблиця);

3. масиви іншої розмірності.

В мові програмування ПАСКАЛЬ є певні обмеження на розмірність масивів. Ми будемо мати справу з одновимірними та двовимірними масивами.

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

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

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

Тип real в якості індекса використовувати не можна.

Елементами можуть бути як прості змінні будь-яких типів, так і змінні складених типів (масивів, рядків, тощо), тобто може існувати масив масивів, масив рядків і т.і. Глибина вкладеності цих типів - довільна, тому кількість індексів не обмежена, але сумарна довжина структури не повинна перевищувати дозволені Паскалем 64 Кбайти. В пам'яті ПК всі елементи масиву зберігаються послідовно, тому при переході від молодших до старших адрес першим змінюється самий правий індекс.

 

36. Методи сортування лінійних масивів.

- Сортування бульбашкою

- Сортування вибором

- Сортування злиттям

Сортування обміном або Сортування бульбашкою є простим алгоритмом сортування. Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою. Оскільки для роботи з елементами масиву він використовує лише порівняння, це сортування на основі порівнянь.

Сортування вибором — простий алгоритм сортування лінійного масиву, на основі вставок. Має ефективність n2, що робить його неефективним при сортування великих масивів, і в цілому, менш ефективним за подібний алгоритм сортування включенням. Сортування вибором вирізняється більшою простотою, ніж сортування включенням, і в деяких випадках, вищою продуктивністю.

Сортування злиттям — алгоритм сортування, в основі якого лежить принцип «Розділяй та володарюй».

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

37. Пошук елементів.

Саме завдання пошуку також може мати різні формулювання:

· знайти перший елемент структури даних із заданими властивостями;

· знайти всі елементи структури даних із заданими властивостями;

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

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

1) в ролі структури даних для розгляду алгоритмів пошуку оберемо одновимірний цілочисельний масив;

2) пошук буде проводитись до першого знаходження елементу із заданими властивостями або переконання, що заданий елемент відсутній;

3) результатом пошуку буде номер , під яким знаходиться шуканий елемент, або повідомлення, що заданий елемент в масиві відсутній;

Сутність методу полягає в тому, що елементи масиву послідовно порівнюються зі зразком пошуку. Якщо має місце співпадання, то пошук закінчується. Інакше здійснюється перехід до наступного елементу. Отже, пошук припиняється або при досягненні кінця масиву, або при знаходженні заданого елемента. Оскільки наявність та місцезнаходження елементу наперед невідомі, то для практичної реалізації алгоритму потрібно застосувати цикл з передумовою. Перевірку знаходження елементу здійснимо за значенням змінної i, що є індексом поточного елементу масиву. Якщо значення цієї змінної перевищує n (кількість елементів масиву), то елемент не знайдений, а отже, в масиві відсутній. Алгоритм простого пошуку запишемо у вигляді відповідної процедури.

 

38. Алгоритми пошуку даних у лінійних масивах.

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

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

Лінійний пошук здійснюється циклом (while) з подвійною умовою. Перша умова контролює індекс на приналежність масиву, наприклад, (i<=N). Друга умова — це умова пошуку. У нашому випадку в циклі while ця умова продовження пошуку: (A[i]<>X), (A[i]=X). У тілі циклу звичайно пишеться тільки один оператор: зміна індексу в масиві. Після виходу із циклу необхідно перевірити, по якому з умов ми вийшли. В операторі if звичайно повторюють перша умова циклу. Можна говорити про успішний пошук із циклом while при виконанні цієї умови.

Алгоритм двійкового пошуку можна використати для пошуку елемента із заданою властивістю тільки в масивах, упорядкованих по цій властивості. Так при пошуку числа із заданим значенням необхідно мати масив, упорядкований по зростанню або по убуванню значень елементів. А, наприклад, при пошуку числа із заданою сумою цифр масив повинен бути впорядкований по зростанню або по убуванню сум цифр елементів. Ідея алгоритму полягає в тому, що масив щораз ділиться навпіл і вибирається та частина, де може перебувати потрібний елемент. Розподіл триває поки частина масиву для пошуку більше одного елемента, після чого залишається перевірити цей елемент, що залишився, на виконання умови пошуку. Існують дві модифікації цього алгоритму для пошуку першого й останнього входження. Все залежить від того, як вибирається середній елемент: округленням у меншу або більшу сторону. У першому випадку середній елемент ставиться до лівої частини масиву, а в другому — до правого. У процесі роботи алгоритму двійкового пошуку розмір фрагмента, де цей пошук повинен тривати, щораз зменшується приблизно у два рази. Це забезпечує обчислювальну складність алгоритму порядку логарифма N по підставі 2, де N — кількість елементів масиву.

 

Ідея пошуку з бар'єром полягає в тому, щоб не перевіряти щораз у циклі умову, пов'язану із границями масиву. Це можна забезпечити, установивши в масив так званий бар'єр: будь-який елемент, що задовольняє умову пошуку. Тим самим буде обмежена зміна індексу. Вихід із циклу, у якому тепер залишається тільки умова пошуку, може відбутися або на знайденому елементі, або на бар'єрі. Таким чином, після виходу із циклу перевіряється, не чи бар'єр ми знайшли? Обчислювальна складність пошуку з бар'єром менше, ніж у лінійного пошуку, але також є величиною того ж порядку, що й N — кількість елементів масиву. Існує два способи установки бар'єра: додатковим елементом або замість крайнього елемента масиву.

 

 

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

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

Опис двовимірного масиву

<Ім'я_масиву> : array[<поч_інд_рядків>..<кін_інд_рядків>,

<поч_інд_стовп>. .<кін_інд_стовп>]

of <базовий_тип_елементів> ;

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

 

Const n:=100; m:=100; Var A:array[1..n,1..m] of real; D:array[1..10,1.100] of integer;

 

Виведення в рядку необхідно обов'язково форматувати, щоб не трапилось "злипання" елементів (дивись приклад вище).

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

Якщо в матриці кількість рядків і стовпчиків однакова, то таку матрицю називають квадратною (на відміну від звичайної прямокутної таблиці). Тільки в квадратних матрицях існують головна та бічна діагоналі.

Елементи, що стоять на головній діагоналі, мають індекси (1, 1), (2, 2), (3, 3), ... (і, і). ..., (n, n), тобто номер рядка дорівнює номеру стовпчика! Елементи, що стоять на бічній діагоналі, мають такі індекси (1, n), (2, n-1), (3, n-2), ..., (і, n+1-і), (n,1), тобто індекси елементів взаємозалежні за формулою j= n+1 - i.

40. Поняття рядка. Оголошення змінних рядкового типу.

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

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

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

41. Операції над рядками. Рядкові вирази.

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

Присвоєння рядків: Нехай змінна str означена як string[5]. Після присвоєння str:='Kiyv' значення символів рядка стануть такими: str[0]=chr(4), str[l]='K', str[2]='i', str[3]='y', str[4]=' v'. Якщо згодом виконати оператор присвоєння str: =' Ukraine', то символи 'nе' в рядку str будуть втрачені.

Об'єднання рядків: збільшення довжини об’єднаного рядка здійснюється тільки у заданих межах.

Для даних рядкових типів означено всі наявні в мові Pascal операції порівняння: =, <>, <, >, <=, >=.

 

42. Процедури і функції обробки рядкових даних.

Існує 4 процедури:

· Delete(var s: string; index:integer; count:integer;) - має три параметри: s — рядок, з якого видаляються символи; Index — індекс символа, з якого починається видалення; Count — кількість символів, що мають бути видалені.

· Процедура вставки Insert(source:string; var s:string; index:integer) - Зміст параметрів: Source — рядок, що вставляється в інший рядок; s — рядок, куди здійснюється вставка; Index — номер позиції, з якої вставка починається.

· Перетворення рядка символів цифр на число Val(s:string; var v; var code:integer) - параметри: s — рядок, що перетворюється на число; v - змінна типу integer або real, до якої число буде записано; Code — змінна цілочислового типу, яка визначає успішність перетворення (Code = 0) або містить код помилки (Code<>0).

· Перетворення числа в рядок Str(x [:Width [: Decimals ]]; var s:string) - параметри: х — змінна цілого або дійсного типу, значення якої перетворюватиметься на рядок; Width — необов'язковий параметр, що визначає кількість символів у створюваному рядку; Decimals — необов'язковий параметр, що визначає кількість символів після десяткової точки; s — рядок, який утворюється.

Існують функції:

· Copy(s:string; Index:integer; cout:integer):string; - Параметри функції: s — рядок, який копіюють; Index — позиція, з якої розпочинається копіювання; Count — кількість символів, що копіюються.

· Для визначення довжини рядка Length(s:string):integer;

· Pos(Substr:string; s:string):byte; - параметри: Substr — підрядок, позицію першого входження якого необхідно повернути; s — рядок, до складу якого має входити підрядок. Якщо потрібного підрядка в рядку немає, то функція повертає нуль.

43. Поняття множини в мові Pascal. Операції над множинами

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

type <ім'я типу> = set of <базовий тип>;

Якщо базовий тип на якому базується множина має k елементів,то кть підмножин,які входять в цю множину = 2 в степені k.

Значення змінної множинного типу можна задати конструкцією вигляд [T], де Т- змінна базового типу.

До змінних і сталих множин типу застосовують:

· Привласнення (:=)

· Об’єднання (+)

· Перетинання (*)

· Віднімання (-)

Результат виконання цих операцій є величина множинного типу.

До множинних величин застосовують:

~ Тотожність (=)

~ Не тотожність (<>)

~ Міститься в (<=) містить (>=)

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

 

44. Поняття запису. Способи опису записів мовою Pascal. Використання оператору приеднання.

Запис – структура даних,яка складається з фіксованої к-ті компонентів різного типу,які називають полями. Навідміно від масиву,компоненти(поля) запису можуть бути різного типу,вони найбільш ефективно вирішують завдання прикладного характеру. Запис має ім’я. Кожне поле запису також має ім’я. Звернення до елементу запису здійснюється із застосуванням складеного імені: Ім’я запису. Ім’я поля.Для оголошення запису існує 2 способи:

1) В розділі опису змінних: var <ім’я запису>:record
<ім’я поля 1> : тип 1;
< ім’я поля n> : тип n
end;

2)З використанням розділу визначення типів: type< ім’я типу запису>=record
< ім’я поля 1> : тип 1;
< ім’я поля n> : тип n
end;
var< ім’я запису> : < ім’я типа запису>;

Елементи запису використовуються в програмі як звичайні змінні заданого типу. Аби звернутися до і-того запису і до його поля,можна записати: Spisok[i].FIO:=’Ivanov’;

Для того,щоб звернутися до того ж запису і вибрати оцінку: Spisok[i].Ball[2]. Для спрощення,звернення до елементів запису застосовують оператор приєднання.

Структура оператора приєднання: with<ім’я запису> do

Begin

Оператори звернення до елементів запису

End;

45. Зовнішні файли.. Порядок опису, призначення файлової змінної.

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

Файл – це іменована область зовнішньої пам’яті ЕОМ,що містить різні дані. Доступ до даних може бути прямим або послідовним,залежно від типу файлу. В Паскаль розглядають типізовані файли з прямим доступом до даних.

Зовнішній файл зв’язується з програмним кодом за допомогою файлово змінної. Якщо ми пряцюємо з текстовим файлом,то файлова змінна записується: var f:text;

Якщо використовуємо типізований файл,тоді var<ім’я файлової змінної>: file of<ім’я базового типу>.

У програмі файлова змінна зв’язується з ім’ям файлу, на диску процедурою Assign(f,’Name_f’); де ‘Name_f’ – ім’я файлу разом з адресою. Якщо файл знаходиться в поточному каталозі разом з програмним файлом,повну адресу можна не вказувати. Якщо файл знаходиться в іншому каталозі,вказується повна адреса. Водночас програма може працювати з різними зовнішніми файлами. В певний період часу кожному зовнішньому файлу,відповідає власна файлова змінна. Одночасно текстовий файл відкривається або тільки для зчитування, або тільки для запису даних.

 

 

46. Текстові файли. Стандартні процедури обробки файлів.

Текстовий файл можна розглядати як послідовність символів, розбиту на рядки. Кожний рядок закінчується спеціальним маркером кінця рядка. На практиці такий маркер складається з двох символів: переводу рядка (код символу 13) та повертання каретки (код символу 10). Ці символи задають стандартні дії по управлінню обробкою текстових файлів. Особливістю текстового файлу є те, що в мові Паскаль для його оголошення передбачений стандартний тип даних Text. Слід також зазначити, що стандартний передвизначений текстовий файл Input призначений для вводу даних з клавіатури, а файл Output – для виводу даних на екран.

Опрацювання текстових файлів має свою специфіку. Стандартні процедури читання та запису даних read та write дозволяють працювати зі значеннями несимвольного типу. Іншими словами, послідовність символів у спискові вводу чи виводу автоматично перетворюється до значення того типу змінної, яка використовується у файлових операціях. Крім того, зазначені процедури дозволяють за одну операцію вводити чи виводити декілька даних. Ще однією особливістю є те, що окрім зазначених процедур запис даних до текстового файлу можна здійснювати за допомогою процедури writeln , а читання даних – за допомогою процедури readln. Відмінність writeln від write полягає у тому, що для першої процедури після запису даних у файл буде вставлений маркер кінця рядка, тобто, наступні дані будуть вводитись у новий рядок файлу. Процедура write записує дані послідовно у один рядок файлу.

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

Readln (f , st )- читання рядка st з файлу f і перехід на початок наступного ;
Writeln (f, st )- запис рядка st у файл f і маркера кінця рядка ;
Append (f ) - процедура, що відкриває файл f для додавання рядків в кінець файлу;
Eoln (st )- логічна функція, результат виконання якої дорівнює TRUE, якщо досягнуто маркер кінця рядка st.

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

Program File_text;
var
f1 : text;
st : string;
n: byte;
begin
assign (f1, "file1.txt"); {зв'язати з файлом file1.txt файлову змінну f1 }
rewrite (f1); { створити новий файл з ім'ям file1.txt }
writeln ( f1, "Дуже корисно вивчати"); { записати пропозиції у файл}
writeln ( f1, " всім студентам ");
writeln (f1, мовою Pascal ");
close (f1); { закрити файл для запису }
reset (f1); { відкрити файл для читання }
while not eof (f1) do { поки не кінець файлу f1}
begin
readln (f1, st); {читаємо рядок з файлу f1 }
writeln(st); { виводимо на екран }
n:= length (st); {визначаємо довжину рядка }
writeln (" довжина =",n);
end;
close (f1); { закрити файл для читання}
end .

 

 

47. Два способа створення файлів зовнішніх файлів.

Файл - це іменована область зовнішньої пам'яті комп'ютера, яка містить логічно пов'зані дані.

У мові Pascal використовується три типи файлів: типізований, нетипизований та текстовий, які в програмі визначаються наступним чином:

/ : text; / : file of тип; / : file.

 

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

 

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

48. Алгоритм зчитування даних із зовнішнього текстового файлу.

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

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

Файл - це іменована область зовнішньої пам'яті комп'ютера, яка містить логічно пов'зані дані.

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

Читання з текстового файлу:

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

ReadLn(f, список змінних);

Процедури зчитують інформацію з файлу f в змінні. Спосіб читання залежить від типу змінних, що стоять в списку. У змінну char записуються символи з файлу. Запис у числову змінну відбувається за таким принципом: пропускаються символи-роздільники, початкові пробіли і зчитується значення числа до появи наступного роздільника. У змінну типу string записується кількість символів, яка дорівнює довжині рядка, але тільки в тому випадку, якщо до цього не зустрілися символи кінця рядка або кінця файлу. Відмінність ReadLn від Read полягає в тому, що перша команда після прочитання даних пропустить решту символів рядку, включаючи мітку кінця рядка. Якщо список змінних відсутній, то процедура ReadLn(f) пропускає рядок при читанні текстового файлу.

Запис в текстовий файл:

Write(f, список змінних);

WriteLn(f, список змінних);

Процедури записують інформацію в текстовий файл. Спосіб запису залежить від типу змінних в списку (як і при виведенні на екран). Враховується формат виводу. WriteLn від Write відрізняється тим, що після запису всіх значень зі змінних записує ще й символ кінця рядка (формується закінчений рядок файлу).

Додавання інформації до кінця файлу:

Append(f)

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

 

49. Поняття про бібліотекі підпрограм. Структура модуля користувача.

Підпрограма (англ. subroutine) — частина програми, яка реалізує певний алгоритм і дозволяє звернення до неї з різних частин загальної (головної) програми. В термінах мов програмування: функції (С), процедури (Pascal), методи (в термінологіїоб'єктно-орієнтованого програмування в мовах C++, Java, С# та ін.).

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

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

В мові Pascal існує два різновиди підпрограм: процедури та функції. Функція відрізняється від процедури тим, що повертає деяке значення в точку її виклику. Іншими словами, під час виклику функції її ім'я може інтерпретуватись як ім'я деякої змінної величини

Із прикладами процедур і функцій ми вже зустрічалися - це стандартні процедури введення-виведення read, write, математичні функції, наприклад sin(x), trunc(x) тощо. Вони називаються стандартними тому, що є невід'ємною частиною системи Pascal. Наявність великої бібліотеки таких програмних засобів суттєво полегшує розроблення програм. Але у більшості випадків специфічні для певної програми дії не мають прямих відповідників у бібліотеках Pascal і для їх виконання програміст має створити власні процедури або функції, тобто процедури або функції користувача.

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

 

50. Стандартний модуль CRT Процедури управління клавіатурою, звуком, екраном

Модуль Crtпозволяет виводити кольорові символи на кольоровому екрані. Хоча як і раніше відображення відбуватиметься в текстовому режимі. Текстовий режим означає, що на екрані можуть виводитися тільки певні символи в певних місцях (знакоместу). Можна уявити екран, розділеним вертикальними і горизонтальними лініями на клітинки. У ці комірки можна «вписувати» різні символи. У кожної клітинки є адреса.

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

Стандартний екран в Паскалі частіше формується з 25 стік і 80 стовпців. Рядки нумеруються зверху вниз, а стовпці зліва на право. Нумерація починається з одиниці (що може здатися незвичним).

Кількість доступних кольорів (для екрану і символів) всього 16. Вони кодуються числами від 0 до 15. Також замість чисел можна прописувати назви кольорів.

Для того щоб у програмі можна було використовувати вміст модуля Crt, його треба імпортувати (підключити) у програму. Робиться це в секції, яка починається зі слова uses.

Щоб очистити екран від всіх написів, потрібно виконати процедуру clrscr. Якщо перед цим був заданий колір екрану (за допомогою textbackground), то екран буде залитий відповідним кольором.

Колір тексту визначається процедурою textcolor, позиція курсора - gotoxy.

Для виведення символів на екран використовуються стандартні процедури write іwriteln.

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

uses crt;   begin textbackground (7); clrscr;   textcolor (12); gotoxy (10,5); write ('Hi, world!');   delay (1500);   gotoxy (40,22); textcolor (14); write ('Yes');   readln end.   Текстовый режим задается процедурой: TextMode (Со40); Где: TextMode – режим; TextMode (Co80); Bw(Black-White) – черно - белый режим; TextMode (Bw40); 40 и 80 –количество символов в строке; TextMode (Bw80).

 

 

Window(X1,Y1,X2,Y2) Создает текстовое окно
TextBackGround Задает цвет фона
TextColor (c) Задает цвет символов
HignVideo повышенную яркость символов
GoToXY (X,Y) Перемещает курсор в заданную позицию
InsLine Вставляет строку в позицию, в которой находится курсор
ClrEol Удаляет символ от курсора до конца строки
DelLine Удаляет строку, в которой находится курсор

 

 

51. Модуль GRAPH.Ініціалізація і закриття графічного режиму

 

Коли екран монітора працює в графічному режимі, то зображення на ньому формується з точок (пікселів), а не символів. Точка набагато менше символу, і, отже, на екрані точок розміститься куди більше, ніж знакомест в текстовому режимі. Тому, незважаючи на те, що система координат починається також в лівому верхньому кутку, максимальні значення по двох осях набагато більше, ніж при роботі з модулем Crt, і залежить від дозволу екрану. Відлік в даному випадку починається з нуля.

Наприклад, якщо розмір екрану - 1024x768, то остання крапка має відповідно координати 1023х767.

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

Спробуємо запустити графічний режим і вивести що-небудь на екран.

uses graph;   var g, h, i, x, y, c: integer;   begin g := detect; initgraph(g,h,'');   setcolor(10); line(10,10, 300,300);   x := 600; y := 500; randomize; for i := 1 to 50 do begin c := random (15); putpixel (x, y, c); x := x + 10; y := y - 5 end;   readln end.   Использование detect позволяет определить тип графического драйвера автоматически. Запуск графического режима выполняется с помощью процедуры initgraph. После этого на экране должно появиться окно, «работающее» в графическом режиме. Процедура setcolor устанавливает цвет, которым в дальнейшем будут выводиться различные примитивы. Процедура line выводит линию. Первые два числа – это одна координата, а третье и четвертое число – другая. Процедура putpixel рисует точки. Помимо координаты она принимает третий аргумент – цвет точки.  

 

Arc (x,y : integer; stAngle, endAngle, radius : word) Рисует дугу от начального угла к конечному, x, y - центр.
Bar (x1, y1, x2, y2 : integer);   Рисует полосу по ее диагонали, используя текущий стиль и цвет.  
Bar3D (x1, y1, x2, y2 : integer; depth : word; top : boolean)   Рисует трехмерную полосу, используя текущий стиль и цвет.  
Circle (x, y : integer; radius : word)   Рисует окружность, используя (x,y) как центр.  
CloseGraph     Закрывает графическую систему.  
DetectGraph (Var GraphDriver, GraphMode : integer) Проверяет аппаратуру и определяет, какой графический драйвер и в каком режиме используется.  
Ellips Рисует эллиптическую дугу

 

52. Графічний курсор, координати екрану в графічному режимі

Екран у графічному режимі може адресуватися за допомогою системи координат, причому значення Х (номера стовпчика) збільшується зліва праворуч, а значення Y (номера рядка) збільшується зверху до низу. За замовчанням координати екрана мають такий вигляд:
(0,0) - лівий верхній кут;
(639,0) - правий верхній кут;
(319,239) - центр;
(0,479) - лівий нижній кут екрана;
(639,479) - правий нижній кут.

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

Графічна система підтримує поточний покажчик СР (від англійського "Current Poіnter"), який виконує ті ж функції, що і курсор, але не виводиться на екран. Для переміщення покажчика використовуються процедури МоvеTо, LineTo, InitGraph, LineRel, MoveRel і деякі інші.

53. Управління кольором пера і фону.

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



<== предыдущая лекция | следующая лекция ==>
Работа с СУБД. | Тип лінії


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.48 сек.