ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Основи програмування мовою Паскаль
         

     

    Інформатика, програмування

    | |
    | Короткий курс лекцій |
    | "Основи програмування мовою Паскаль" |
    | |
    | |
    | Вступ. |
    | Перш за все, слід нагадати, що вивчення мови програмування |
    | є знайомство з формальними правилами запису алгоритмів для |
    | їх подальшого виконання комп'ютером. Формальність ця виникає з |
    | самих принципів, закладених в архітектуру обчислювальних пристроїв, і |
    | жорсткості математичної логіки. Тому, постарайтеся сприйняти все |
    | досить суворі правила як неминучість, налаштувати себе на серйозну, |
    | скрупульозну, часом складну роботу. Однак не варто боятися, розчаровуватися |
    | і нарікати на долю: трохи акуратності, уваги, знання попереднього |
    | матеріалу - і ви вже програміст. |
    | |
    | Основні поняття. |
    | Як і будь-який алгоритм, який є, як ви пам'ятаєте, послідовністю |
    | інструкцій, програма на мові Паскаль складається з команд (операторів), |
    | записаних у певному порядку і форматі. |
    | Команди дозволяють отримувати, зберігати та обробляти дані різних |
    | типів (наприклад, цілі числа, символи, рядки символів, тощо). Однак крім |
    | команд в записі програми беруть участь ще так звані "службові слова". |
    | Це і є елементи формальності, що організують структуру програми. Їх не |
    | так багато, але їх значення важко переоцінити. Службові слова можна |
    | використовувати тільки за своїм прямим призначенням. Перевизначати їх не |
    | дозволяється. |
    | Вам вже відомо, що основне призначення комп'ютера - полегшити |
    | людині роботу з великими обсягами інформації, тому переважна |
    | більшість програм побудовано по одному, доволі простим принципом: |
    | отримання даних із зовнішнього світу (введення), обробка їх за відповідним |
    | алгоритму, зберігання необхідної інформації і висновок в зовнішній (по відношенню |
    | до комп'ютера) світ отриманих результатів. Всі ці дії реалізуються |
    | через наявні в мовах програмування команди, алгоритмічні |
    | структури та структури даних. |
    | |
    | Основна структура програми. |
    | Правила мови Паскаль передбачають єдину для всіх програм форму |
    | основної структури: |
    | Program; |
    | |
    | Begin |
    | |
    | End. |
    | Тут слова Program, Begin і End є службовими. Правильне та |
    | доречне вживання цих слів є обов'язковим. |
    | Кутові дужки у форматі вказують на те, що замість них при реальному |
    | програмуванні має бути підставлено конкретне значення. Сама запис |
    | програми в принципі може проводитися взагалі в одну стоку. При цьому її |
    | частини повинні відділятися один від одного хоча б одним пропуском. Однак, така |
    | запис незручна для читання, недостатньо наочна, тому я рекомендую |
    | дотримуватися наведеної структури, а в тілі програми по можливості |
    | записувати по одному оператору в рядку. |
    | Назва програми вибирається програмістом самостійно відповідно до |
    | правилами побудови ідентифікаторів. |
    | Всі об'єкти, які не є зарезервованими в Паскалі, наявність |
    | яких обумовлено ініціативою програміста, перед першим використанням у |
    | програмі повинні бути описані. Це проводиться для того, щоб комп'ютер |
    | перед виконанням програми зарезервував пам'ять під відповідні |
    | об'єкти і поставив у відповідність цих ділянок пам'яті ідентифікатори. |
    | Розділ описів може складатися з п'яти підрозділів: |
    | 1. Опис міток (Label). |
    | 2. Опис типів (Type). |
    | 3. Опис констант (Const). |
    | 4. Опис змінних (Var). |
    | 5. Опис процедур і функцій (Procedure, Function). |
    | При відсутності необхідності в будь-якому вигляді об'єктів, |
    | відповідний підрозділ може бути опущений. |
    | |
    | Алфавіт мови. |
    | Основу будь-якої мови становить алфавіт, тобто кінцевий, |
    | фіксований набір символів, що використовуються для складання текстів на |
    | цією мовою (у нашому випадку - програм). Звичайно, стрункість картини |
    | трохи псує наявність діалектів, що створюються стихійно і дуже часто |
    | включають апокрифічні (неканонічні) букви і знаки. В |
    | програмуванні ця проблема вирішується введенням поняття "стандарт мови". |
    | Воно практично не застосовується до мов людських, вічно розвивається та |
    | змінюються. Ми з вами в основному будемо говорити про ту самодостатньою |
    | частини мови Паскаль, яка входить в його різні комп'ютерні реалізації |
    | у незмінному вигляді. У плані вивчення, я не бачу великого сенсу викладати вам |
    | строгі правила стандарту, хоча такі існують. Обмежимося деякими |
    | зауваженнями, які розкривають все ж таки формальності вживання символів в |
    | мовою Паскаль. |
    | Отже, алфавіт мови Паскаль складають: |
    | 1) букви латинського алфавіту; |
    | 2) арабські цифри; |
    | 3) спеціальні знаки. |
    | Використання символів першої групи найчастіше питань не викликає, |
    | але свої тонкощі тут існують. По-перше, це вживання великих і |
    | рядкових букв. Більшість існуючих трансляторів не розрізняють літери |
    | різних регістрів. Таким чином, записи "progRaM" і "PROGram" будемо вважати |
    | ідентичними. По-друге, деякі символи латиниці і кирилиці співпадають за |
    | креслення. Чи не можна замість літери "К" латинської написати "K" російську? |
    | Відповідь: в зошиті (якщо ви їх зможете розрізнити) - будь ласка, у програмі |
    | на ЕОМ - ні в якому разі. На вигляд вони може бути і схожі, але вже коди-то у |
    | них зовсім різні, а комп'ютер, як вам відомо, оперує всередині себе |
    | не буквами, а їх числовими кодами. |
    | З приводу звичних арабських цифр можна сказати тільки те, що з їх |
    | допомогою записуються не тільки числа. Цифри як звичайних |
    | символів можуть використовуватися в різних інших конструкціях мови. |
    | Найскладніше йде справа зі спеціальними знаками, тому їх |
    | доведеться розібрати докладно, іноді забігаючи вперед, але ви поки можете |
    | пропускати повз вуха незрозумілі терміни, не забуваючи, однак, записувати все |
    | в зошит. Потім, при вивченні відповідних структур, ви будете мати |
    | можливість заглянути в цей розділ для того, щоб уточнити який знак в |
    | даному місці необхідно використовувати. |
    | Найбільш часто вживаним спеціальним символом є пробіл (в |
    | значущих місцях ми будемо позначати його в записах знаком "V"). Його |
    | використання пов'язане з форматами основної структури програми, розділів |
    | описів, операторів. Не слід плутати наявність пробілу з відсутністю |
    | символу. |
    |. кінець програми, розділення цілої і дробової частин речового |
    | числа (десяткова крапка), розділення полів у змінній типу Record; |
    |, Поділ елементів списків; |
    | .. вказівку діапазону; |
    |: Використовується у складі оператора присвоєння, а також для |
    | вказівки формату виводу в операторі Writeln; |
    |; Відокремлює один розділ програми від іншого, розділяє оператори; |
    | 'Використовується для обмеження рядкових констант; |
    | - + */() Арифметичні знаки (використовуються за своїм |
    | призначенням); |
    | <> Знаки відносин; |
    | = Використовується у складі оператора присвоєння, у розділах |
    | описів констант і типів, використовується як знак відносини (так само); |
    | @ Ім'я спеціального оператора визначення адреси змінної, |
    | підпрограми; |
    | ^ Використовується для іменування динамічних змінних; |
    | () Обмеження коментарів у програмі; |
    | [] Містять в собі індекси елементів масивів; |
    | _ Символ підкреслення використовується також як будь-яка буква, |
    | наприклад, в ідентифікаторах - замість пробілу; |
    | # Позначення символу за його коду; |
    | $ Позначення директиви компілятора, позначення шістнадцятирічного |
    | числа. |
    | Виникає питання, а як же бути з російськими літерами та іншими знаками, |
    | наявними на клавіатурі? Деякі версії Паскаля допускають їх |
    | використання в програмі, але стандарт мови цього не має на увазі. |
    | Тому включати ці символи в програму можна тільки як строкових |
    | констант або всередині коментаря, тобто там, де транслятор при компіляції |
    | їх ігнорує. При використанні цих знаків у якості даних, вони |
    | рівноправні з усіма символами, які може зберігати в пам'яті й |
    | обробляти комп'ютер. |
    | |
    | Ідентифікатори. |
    | Імена операторів, змінних, констант, типів величин, ім'я самої |
    | програми призначаються програмістом і називаються в Паскалі |
    | ідентифікаторами. Існують правила, яким повинні відповідати всі |
    | ідентифікатори: |
    | ідентифікатор повинен бути унікальним, тобто одним і тим же ім'ям різні |
    | об'єкти не можуть бути названі; |
    | ідентифікатор має обмеження по довжині (залежить від конкретної реалізації |
    | мови на комп'ютері); |
    | ідентифікатор може складатися тільки з символів латинського алфавіту, цифр та |
    | знака підкреслення ("_"); |
    | ідентифікатор не може починатися з цифри. |
    | |
    | Константи. |
    | З усіх підрозділів описів зараз ми розглянемо тільки опис |
    | констант і змінних, інші - пізніше. |
    | Взагалі кажучи, в Паскалі константами є будь-які явно задані в |
    | програмі дані (наприклад, 7493, 'привіт', 54.899). Слід звернути вашу |
    | увагу на те, що при записі числових констант з дробової частиною ця частина |
    | відділяється від цілої не комою, як, можливо, ви звикли, а точкою. Для |
    | запису дуже великих за модулем або дуже малих (близьких до нуля) чисел |
    | існує можливість запису їх у так званої експоненційної формі. С |
    | таким записом ви зустрічалися в математики та фізики, але називали її |
    | стандартним виглядом числа. |
    | Приклад: 2. 4 5 6 7 Е - 0 6 |
    | ^ Мантиса ^ порядок |
    | Тут буква "Е" відділяє мантиси (сукупність значущих цифр числа з |
    | десяткового точкою після першого) від порядку (показника ступеня десятки в |
    | стандартному вигляді числа). Вам належить навчитися як читати числа в такому |
    | вигляді, так і записувати. |
    | Константи, що представляють собою рядкові величини, полягають у |
    | апострофи. |
    | Якщо одна й та ж величина використовується в програмі кілька разів, то |
    | зручніше було б визначити її яким-небудь ім'ям і використовувати це ім'я |
    | скрізь, де потрібно записати відповідну константу. Крім скорочення |
    | розміру початкового тексту програми, це дозволить уникнути випадкових помилок, |
    | а також спростить налагодження програми. Опис іменованих констант |
    | починається службовим словом Const. Далі йдуть запису виду: |
    | =; |
    | Приклад: |
    | Const |
    | Pi = 3.14; |
    | Name1 = 'Тетяна'; |
    | Name2 = 'Віктор'; |
    | R21 = 6.33187E +03; |
    | W_W_W = 934122; |
    | Поняття змінної. Типи. |
    | Дані, як ви знаєте, зберігаються в пам'яті комп'ютера, але для вказівки |
    | на конкретну інформацію дуже незручно весь час записувати фізичні |
    | адреси комірок. Ця проблема в мовах програмування високого рівня, в |
    | зокрема в Паскалі, вирішена введенням поняття змінної. Змінна в |
    | Паскалі - іменований ділянку пам'яті для зберігання даних певного |
    | типу. Значення змінної (інформація у відповідних комірках пам'яті) в |
    | хід виконання програми може бути змінено. Константами само, як ви вже |
    | знаєте, називаються величини, значення яких у ході виконання програми |
    | змінено бути не може. Конкретні змінні і константи представляють |
    | собою унікальні об'єкти і відрізняються один від одного ім'ям. |
    | В якості даних в програмах на мові Паскаль можуть виступати числа, |
    | символи, цілі рядки символів. Зауважте, що з цими різними видами |
    | інформації виконуються зовсім різні дії. Наприклад, з числовими |
    | величинами виробляються арифметичні операції, чого неможливо зробити з |
    | символьними. Крім того, різні види даних вимагають різного обсягу |
    | пам'яті для зберігання. Згідно з цими міркуваннями в мові Паскаль |
    | введено поняття "Тип" (TYPE). Тип змінної вказує на те, які дані |
    | можуть бути збережені в цій ділянці пам'яті, і в яких діях ця |
    | змінна може брати участь. Існують зарезервовані (базові) типи в |
    | мовою Паскаль, але, як далі ви переконаєтеся, є також можливість створювати |
    | свої власні, що визначаються програмістом типи змінних. |
    | До базових типів належать: |
    | тип цілих чисел - Integer |
    | тип "довгих" цілих чисел - Longint |
    | тип дійсних (речових) чисел (тобто - з дробової частиною) - Real |
    | |
    | тип невід'ємних цілих чисел від 0 до 255 - Byte |
    | тип невід'ємних цілих чисел від 0 до 65535 - Word |
    | символьний тип - Char |
    | рядковий тип - String |
    | логічний тип - Boolean |
    | Фізично типи даних відрізняються один від одного кількістю осередків |
    | пам'яті (байтів), що відводяться для зберігання відповідної змінної. |
    | Логічне ж відмінність проявляється в інтерпретації інформації, що зберігається. |
    | Наприклад, змінні типу Char і типу Byte займають у пам'яті по одному |
    | байту. Однак у першому випадку вміст комірки пам'яті інтерпретується як |
    | беззнакові ціле число, а в другому - як код (ASC) символу. |
    | На відміну від констант, неіменованних змінних не існує. Всі |
    | використовувані в програмі змінні повинні бути описані у відповідному |
    | розділі опису. |
    | Розділ опису змінних починається службовим словом Var, після |
    | якого слідують запису наступного виду::; |
    | Список може складатися з декількох імен (при цьому вони розділяються |
    | комами), а також і з одного імені. Тип, що указується після двокрапки, |
    | визначає, які дані тепер можуть зберігатися в описаних таким чином |
    | змінних. Для кожного використовуваного в програмі типу змінних у роздiлi |
    | їх опису повинна бути, як мінімум, одна власна рядок. |
    | Приклад: |
    | Var |
    | A, B, H_22, Angle: Real; |
    | Name3: String; |
    | Flag: Boolean; |
    | I, J, K, Count: Word; |
    | Оператор присвоєння. Арифметичні вирази. |
    | Найпростішим дією над змінної є занесення в неї |
    | величини відповідного типу. Іноді говорять про це, як про присвоєння |
    | змінної конкретного значення. Така команда (оператор) у загальному вигляді |
    | виглядає на мові Паскаль наступним чином: |
    |: =; |
    | Вираз, вказане праворуч від знака ":=", повинно приводити до значення |
    | того ж типу, якого й сама змінна, або типу, сумісного зі змінною |
    | щодо команди присвоєння. Наприклад, змінної типу Real можна |
    | присвоїти значення типу Integer або Word (втім, навпаки робити не можна). |
    | Вираз буде спочатку обчислено, потім, його результат буде покладено в |
    | елементу пам'яті, відведені для змінної. |
    | Що ж являє собою вираз на мові Паскаль? Багато що залежить |
    | від типу виразу. Розглянемо спочатку вираження арифметичні, тобто ті, |
    | результатом яких є число. |
    | До складу арифметичного виразу на мові Паскаль можуть входити: |
    | числові константи; |
    | імена змінних; |
    | знаки математичних операцій; |
    | математичні функції та функції, які повертають число; |
    | відкриваються і закриваються круглі дужки. |
    | Правила побудови виразів нагадують математичні з деякими |
    | уточненнями. Вираз записується в один рядок (ніякої багатоповерховими), |
    | між операндами обов'язково повинен стояти знак операції (Запис "2x" - не |
    | допускаються), знаки деяких операцій і назви деяких функцій відмінні |
    | від звичних вам. |
    | Операції: |
    | + Складання; |
    | - Віднімання; |
    |/Розподіл; |
    | * Множення; |
    | MOD залишок від ділення (записується так: A MOD B; читається: залишок від |
    | поділу A на B); ця операція застосовується лише до цілих числах; |
    | DIV цілочисельне поділ (записується так A DIV B; читається: |
    | результат ділення A на B без дробової частини); ця операція теж використовують |
    | тільки для цілих операндів. |
    | Аргументи функцій завжди записуються в круглих дужках: |
    | SIN (X) sin x; |
    | COS (X) cos x; |
    | ARCTAN (X) arctg x; |
    | ABS (X) абсолютне значення x (в математиці - | x |); |
    | SQR (X) x зведення в квадрат; |
    | SQRT (X) витяг квадратного кореня; |
    | TRUNC (X) відкидання дробової частини х; |
    | ROUND (X) округлення х до найближчого цілого числа; |
    | Після виконання другого оператора присвоєння в ділянці пам'яті, |
    | відведеному під змінну R, виявиться результат зазначеного вирази, |
    | однак, на жаль, дізнатися його ми не зможемо, оскільки поки не маємо |
    | можливості "зазирнути" в пам'ять машини, вивести значення змінної хоча |
    | б на екран. |
    | |
    | Складовою оператор |
    | Цей оператор, строго кажучи, оператором не є. Справа в тому, що |
    | також як арифметичні дії іноді буває необхідно укладати в |
    | дужки, послідовності команд (операторів) теж іноді вимагають |
    | об'єднання. Це дозволяють зробити так звані операторні дужки. |
    | Формат (загальний вигляд) складеного оператора такий: |
    | Begin |
    |; |
    |; |
    |...... |
    | |
    | End; |
    | Можливо, така структура нагадує вамосновну структуру програми. |
    | Справді, відмінність тільки в тому, що після End в кінці складного |
    | оператора ставиться крапка з комою, а в кінці програми - крапка. За своєю |
    | суті вся програма являє собою великий складовою оператор. |
    | Зверніть увагу на те, що крапка з комою перед End може не |
    | ставиться. |
    | Складовою оператор надає можливість виконати довільне |
    | кількість команд там, де мається на увазі використання тільки одного |
    | оператора. Як ви дізнаєтесь потім, така необхідність зустрічається досить |
    | часто. |
    | |
    | Оператори введення та виведення інформації |
    | Якщо ви пам'ятаєте, при розгляді прикладу роботи оператора |
    | присвоювання ми зіткнулися з необхідністю довідатися результат виконання |
    | програми. Ми розібралися з тим, як зберігати інформацію (в змінних), |
    | як обробляти (з використанням виразів), але два фундаментальні |
    | інформаційних процесу залишилися поза нашої уваги: отримання інформації |
    | і передача її в зовнішній по відношенню до комп'ютера світ. Поки наші програми |
    | можуть використовувати лише інформацію, яка знаходиться безпосередньо в |
    | тексті програми. Дізнатися, які значення в даний момент мають змінні, |
    | також було неможливо. Програмування в таких умовах втрачає |
    | сенс. |
    | Взаємодія пристроїв обробки та зберігання інформації із зовнішнього |
    | середовищем (хоча б з користувачем) є абсолютно необхідним. За такий |
    | інтерфейс в мові Паскаль відповідають оператори введення-виведення інформації. Ці |
    | інструкції дозволяють ввести аргументи, параметри розрахунків під час |
    | виконання програми (а не на етапі її написання), здійснити виведення |
    | розрахованих даних в зрозумілому людині вигляді. |
    | Спочатку оператори введення (формати операторів): |
    | Read (); |
    | Readln (); |
    | У такому форматі ці команди дозволяють вводити дані в сесій у |
    | час виконання програми з клавіатури. Елементами списку введення можуть бути |
    | імена змінних, які повинні бути заповнені значеннями, введеними з |
    | клавіатури. |
    | Виконання операторів введення відбувається так: хід програми |
    | припиняється, на екран виводиться курсор, комп'ютер очікує від |
    | користувача набору даних для змінних, імена яких зазначені в списку |
    | введення. Користувач з клавіатури вводить необхідні значення в тому порядку, |
    | в якому вони потрібні списком введення, натискає Enter. Після цього |
    | набрані дані потрапляють у відповідні їм змінні та виконання |
    | програми триває. |
    | Примітка: дані під час вводу розділяються пробілами. |
    | Різниця між роботою процедур Read і Readln (від Read line) полягає в |
    | наступному: після виконання Read значення наступного даного зчитується з |
    | цієї ж рядка, а після виконання Readln - з нового рядка. |
    | Для виведення інформації в Паскалі також є дві команди: |
    | Write (); |
    | Writeln (); |
    | Такий формат використання Write і Writeln дозволяє виводити на екран |
    | монітора дані зі списку виводу. Елементами списку виводу можуть бути |
    | імена змінних, вирази, константи. Перш ніж вивести на екран |
    | компьютер значення виразів спочатку визначить. Елементи списку, також як і |
    | в операторах введення, розділяються комами. |
    | Розходження між двома операторами виведення таке: після виконання |
    | оператора Writeln (від Write line) відбувається перехід на нову строчку, а |
    | після виконання інструкції Write, перехід на нову сходинку не відбувається і |
    | друк по наступним командам виведення Write або Writeln відбуватиметься |
    | на тій же сходинці. При виклику оператора Writeln без параметрів просто |
    | відбувається перехід на нову сходинку. |
    | Наведемо приклад використання операторів введення та виведення: |
    | Program Inteface; |
    | Var |
    | R, S: Real; |
    | Begin |
    | Write ( 'Введіть радіус кола'); (Друк на екрані прохання про введення) |
    | Readln (R); (Введення значення в |
    | змінну R з клавіатури) |
    | S: = 4 * ARCTAN (1) * SQR (R); (Обчислення площі круга (pR2)) |
    | Writeln ( 'Площа кола радіусом', R, 'дорівнює', S) |
    | End. |
    | Ця програма запитує у користувача значення радіусу кола, |
    | забезпечує можливість ввести його значення, розраховує і виводить на |
    | екран величину площі кола з таким радіусом. Таким чином, з'являється |
    | можливість, не вносячи змін в текст програми, вводити різні |
    | значення радіусу і отримувати, відповідні їм значення площі кола. Для |
    | цього достатньо декілька раз запустити програму. Також ця програма |
    | демонструє наступне правило: видача результатів повинна бути |
    | прокоментована так, щоб був зрозумілий сенс надрукованих чисел. |
    | Дійсно, адже можна було б обмежитися Writeln (S), але значення |
    | виведеного програмою числа в цьому випадку було б ясно тільки тому, хто |
    | цю програму написав. |
    | |
    | Мітки. Оператор безумовного переходу. |
    | Кожен будинок на вулиці має свій номер, всі люди мають власні |
    | імена, навіть комірки пам'яті комп'ютера мають кожна свою адресу. Все це |
    | прийнято для того, щоб мати можливість однозначно вказати на |
    | визначається об'єкт. Точно також, для вказівки на оператори в програмах |
    | застосовуються позначки. |
    | Мітка у стандарті мови Паскаль являє собою ціле |
    | невід'ємне число. Всі використовувані в програмі мітки повинні бути |
    | перераховані в розділі опису міток, що починається службовим словом Label, |
    | наприклад: |
    | Label 1, 2, 8; |
    | Однією міткою можна позначити тільки один оператор. Мітка від поміченого |
    | оператора відділяється двокрапкою. |
    | Приклад: |
    | 6: Writeln (14/2); |
    | В усіх наведених раніше програмах оператори виконувалися один за |
    | іншим у тому порядку, в якому вони були записані в тексті. Така |
    | алгоритмічна структура називається прямим наслідуванням. Однак, у мові |
    | Паскаль спочатку існує оператор, що порушує прямолінійний виконання |
    | програми, що передає управління в довільну її точку. Така інструкція |
    | називається безумовним переходом і має такий формат: |
    | Goto; |
    | Оператор, до якого відбувається перехід повинен бути позначений даної |
    | міткою. |
    | Використовувати оператор безумовного переходу варто вкрай обережно |
    | щоб уникнути отримання помилкових результатів або повного "зациклення" |
    | програми. Взагалі, вживання цієї команди серед програмістів |
    | вважається поганим тоном. Як ви переконаєтеся, завжди існує можливість |
    | обійтися без нього. |
    | |
    | Умовний оператор |
    | Однією з основних алгоритмічних структур є розгалуження |
    | (альтернатива). |
    | Якщо умова виконується, то буде виконана інструкція "1", якщо ні, |
    | то - інструкція "2". Незважаючи на те, що в схемі присутні дві дії, |
    | виконано буде тільки одне, так як умова або помилково, або неправдиве. |
    | Третього не дано. Така схема дозволяє вирішувати задачі, в яких у |
    | залежності від обставин, що склалися потрібно вчинити ту чи іншу |
    | дію. Немає жодного сумніву, що кількість задач такого роду величезне. Більш |
    | того, дуже складно придумати реально значуще завдання, алгоритм виконання |
    | якого містив би в собі просте пряме проходження команд. Навіть |
    | примітивний приклад, узятий з курсу математики, як ви побачите, не може |
    | бути вирішене без використання розгалуження. Отже, необхідно обчислити значення |
    | вираження y = 1/x. Вам відомо, що ця функція не завжди має значення, |
    | тобто не для всіх значень аргументу існує значення результату. Наша |
    | задача так скласти алгоритм, щоб виконавець ні в якому разі не встав |
    | у глухий кут, навіть при отриманні нуля як аргумент. Сформулювати це |
    | природною мовою не важко: |
    | 1. Отримати значення x. |
    | 2. Якщо x = 0, то повідомити, що вираз значення не має, інакше - |
    | обчислити y як 1/x. |
    | Таким чином використовується наведена вище алгоритмічна структура. |
    | Вона може бути виражена простими словами: |
    | Якщо (Якщо виконується умова) |
    | То (то виконати дію № 1) |
    | Інакше (інакше - виконати дію № 2) |
    | всі |
    | Як це записати на Паскалі? Та так само, тільки по-англійськи. |
    | Формат умовного оператора на мові Паскаль: |
    | If |
    | Then |
    | Else; |
    | Зверніть увагу на те, що в Then-і Else-частини варто тільки один |
    | оператор. Але що робити, щоб вирішити завдання, в якій з виконання або |
    | невиконання умови потрібно зробити не один, а кілька дій? Тут |
    | приходить на допомогу вже відомий вам складовою оператор. У операторні |
    | дужки можна укласти будь-яку кількість операторів. |
    | Варіант умовного оператора в цьому випадку: |
    | If |
    | Then Begin end |
    | Else Begin <група операторів 2> end; |
    | Знак "крапку з комою" не ставиться перед службовим словом Else, але |
    | оператори в групах, природно, відокремлюються один від одного цим знаком. |
    | Тепер поговоримо про умови. У програмах на мові Паскаль умови |
    | являють собою вираження, значенням яких є величина |
    | логічного (Boolean) типу. Це може бути як просто мінлива зазначеного |
    | типу, так і складна послідовність висловлювань, пов'язаних логічними |
    | операціями. |
    | У простих умовах можуть застосовуватися знаки операцій порівняння: |
    |> (більше), = (більше або дорівнює), |
    | = (D1 * (45-2)) (Значення виразу в лівій частині більше або |
    | дорівнює значенню виразу з правої частини) |
    | S'ABC '(Значення змінної S не одно рядковий константі' ABC ') |
    | Наведемо приклад вирішення ще одного завдання: "З двох чисел вибрати |
    | найбільша ". |
    | На перший погляд рішення очевидно, але воно не настільки тривіально, як |
    | здається. |
    | Program Example; |
    | Var A, B, C: Real; (A, B - для зберігання аргументів, C - результат) |
    | Begin |
    | Writeln ( 'Введіть два числа'); |
    | Readln (A, B); (Вводимо аргументи з клавіатури) |
    | If A> B Then C: = A Else C: = B; (Якщо A> B, то результат - A, інакше результат - |
    | B) |
    | Writeln (C); (Виводимо результат на екран) |
    | End. |
    | Ще один класичний приклад: "По заданих коефіцієнтів вирішити |
    | квадратне рівняння ". Це завдання складніше, тому перед тим як писати |
    | програму складемо алгоритм, записавши його у вигляді блок-схеми. |
    | Спочатку вводимо коефіцієнти, потім обчислюємо діскрімінант. Тепер виникає |
    | дві можливості: або відсутність дійсних коренів у випадку |
    | негативного діскрімінанта, або ці корені можна все-таки обчислити і |
    | вивести на екран у разі невід'ємне діскрімінанта (випадок рівності |
    | діскрімінанта нулю входить сюди ж, коренів - два, тільки вони однакові J). |
    | Під час запису алгоритму мовою програмування слід врахувати, що в |
    | гілки "ні" не одну дію, а три, тому слід застосувати складовою |
    | оператор. Арифметичні вирази не забувайте записувати відповідно до |
    | правилами мови Паскаль. В іншому, ця програма не складніше попередньої. |
    | |
    | |
    | |
    | Program Sq1; |
    | Var A, B, C, D, X1, X2: Real; |
    | Begin |
    | Writeln ( 'Введіть коефіцієнти квадратного рівняння'); |
    | Readln (A, B, C); |
    | D: = B & B-4 * A * C; |
    | If D:?); |
    | |
    | Begin |
    | |
    | End; |
    | Розділ описів може мати такі ж підрозділи, як і розділ описів |
    | основної програми (опис процедур і функцій - в тому числі). Однак усі |
    | описані тут об'єкти "видимі" лише в цій процедурі. Вони тут локальні |
    | також, як і імена формальних параметрів. Об'єкти, описані раніше в |
    | розділі описів основної програми і не перевизначених у процедурі, |
    | називаються глобальними для цієї підпрограми і доступні для використання. |
    | Легко помітити схожість структури програми цілком і будь-який з її процедур. |
    | Дійсно, адже і процедура і основна програма реалізують якийсь |
    | алгоритм, просто процедура не дає вирішення всієї задачі. Відмінність в заголовку |
    | і в знаку після End. |
    | Формат опису функції: |
    | Function (:; |
    | <Ім'я форм. параметра 2>:?):; |
    | |
    | Begin |
    | |
    | End; |
    | У тілі функції обов'язково має бути хоча б команда присвоєння такого |
    | види:: =; |
    | Зазначене вираз повинен призводити до значення того ж типу, що і тип |
    | результату функції, описаний вище. |
    | Виклик процедури представляє в програмі самостійну інструкцію: |
    | (, <Фактичний параметр 2>?); |
    | Типи фактичних параметрів повинні бути такими ж, що й у відповідних |
    | їм формальних. |
    | Виклик функції повинен входити в вираз. При обчисленні значення такого |
    | вираження функція буде викликана, дії, що знаходяться в її тілі, будуть |
    | виконані, у вираз буде підставлено значення результату функції. |
    | Наведемо найпростіший приклад використання підпрограми. |
    | Завдання: "Пошук максимальне з трьох введених чисел". Для рішення |
    | скористаємося описом функції, що приймає значення максимального з двох |
    | чисел, що передаються до неї у вигляді параметрів. |
    | Program Fn; |
    | Var |
    | A, B, C: Real; |
    | Function Max (A, B: Real): Real; (Описываем функцію Max з формальними) |
    | Begin (параметрами A і B, яка приймає) |
    | If A> B Then Max: = A (значення максимального з них) |
    | Else Max: = B (Тут A і B - локальні змінні) |
    | End; |
    | Begin |
    | Writeln ( 'Введіть три числа'); |
    | Readln (A, B, C); |
    | Writeln ( 'Максимальним з усіх є', Max (Max (A, B), C)) |
    | End. |
    | Зверніть увагу на стислість тіла основної програми і на прозорість |
    | дій усередині функції. Формальні параметри A і B, що використовуються в |
    | підпрограмі, не мають ніякого відношення змінних A і B, описаним в |
    | основної програми. |
    | Існує два способи передачі фактичних параметрів у підпрограму: за |
    | значенням і за посиланням. У першому випадку значення змінної-фактичного |
    | параметра при виклику підпрограми присвоюється локальної змінної, |
    | що є формальним параметром підпрограми. Що б потім не відбувалося |
    | с локальної змінної, це ніяк не відіб'ється на відповідній |
    | глобальною. Для одних завдань це благо, але іноді потрібно зробити в |
    | підпрограмі дії над самими змінними, вказаними в якості |
    | фактичних параметрів. На допомогу приходить другий спосіб. Відбувається |
    | наступне: при зверненні до підпрограмі не відбувається формування |
    | локальної змінної-формального параметра. Просто на час виконання |
    | підпрограми ім'я цієї локальної змінної буде вказувати на ту ж область |
    | пам'яті, що й ім'я відповідної глобальної змінної. Якщо в цьому випадку |
    | змінити локальну змінну, зміняться дані і в глобальній. |
    | Передача параметрів за посиланням відрізняється тим, що при описі підпрограми |
    | перед ім'ям змінної-формального параметра ставиться службове слово Var. |
    | Тепер використання в якості фактичних параметрів висловів чи |
    | безпосередніх значень вже не допускається - вони повинні бути іменами |
    | змінних. |
    | Ще один класичний приклад. Завдання: "Розташувати у порядку неубиванія три |
    | цілих числа ". |
    | Program Pr; |
    | Var |
    | S1, S2, S3: Integer; |
    | Procedure Swap (Var A, B: Integer); (Процедура Swap з параметрами-змінними) |
    | |
    | Var C: Integer; (C - незалежна локальна змінна) |
    | Begin |
    | C: = A; A: = B; B: = C (Міняємо місцями вміст A і B) |
    | End; |
    | Begin |
    | Writeln ( 'Введіть три числа'); |
    | Readln (S1, S2, S3); |
    | If S1> S2 Then Swap (S1, S2); |
    | If S2> S3 Then Swap (S2, S3); |
    | If S1> S2 Then Swap (S1, S2); |
    | Writeln ( 'Числа в порядку неубиванія: V', S1, S2, S3) |
    | End. |
    | |
    | Робота з файлами |
    | Тип-файл являє собою послідовність компонент одного типу, |
    | розташованих на зовнішньому пристрої (наприклад, на диску). Елементи можуть |
    | бути будь-якого типу, за винятком самого типу-файлу. Число елементів у файлі |
    | при описі не оголошується. Робота з фізичними файлами відбувається через |
    | так звані файлові змінні. |
    | Для завдання типу-файлу слід використовувати зарезервовані слова File і |
    | Of, після чого вказати тип компонент файлу. |
    | Приклад: |
    | Type |
    | N = File Of Integer; (Тип-файл цілих чисел) |
    | C = File Of Char; (Тип-файл символів) |
    | Є заздалегідь визначений у Паскалі тип файлу з ім'ям Text. Файли цього |
    | типу називають текстовими. |
    | Ввівши файловий тип, можна визначити і змінні файлового типу: |
    | Var |
    | F1: N; |
    | F2: C; |
    | F3: Text; |
    | Тип-файл можна описати й безпосередньо при введенні файлових змінних: |
    | Var |
    | Z: File Of Word; |
    | Файлові змінні мають специфічне застосування. Над ними не можна |
    | виконувати ніяких операцій (присвоювати значення, порівнювати і т.д.). Їх |
    | можна використовувати лише для виконання операцій з файлами (читання, запис і |
    | т.д.). |
    | Елементи файлу вважаються розташованими послідовно, тобто так само, |
    | як елементи лінійного масиву. Відмінність же полягає в тому, що, по-перше, |
    | розміри файлу можуть змінюватися, по-друге, спосіб звернення до елементів |
    | зовсім інший: неможливо звернутися до довільного елементу файлу; |
    | елементи його проглядаються тільки підряд від початку до кінця, при цьому в |
    | кожний момент часу доступний тільки один елемент. Можна уявити собі, |
    | що для кожного файлу існує покажчик, що показує в даний момент на |
    | визнаділений компонент файлу. Після проведення операції читання або запису |
    | покажчик автоматично пересувається на наступний компонент. |
    | Перед тим, як здійснювати введення-виведення, файлова змінна повинна бути |
    | пов'язана з конкретним зовнішнім файлом за допомогою процедури Assign. |
    | Формат: |
    | Assign (,); |
    | Файл задається або рядковий константою, або через змінну типу |
    | Sting. Назва файлу повинна відповідати правилам що працює в даний момент |
    | операційної системи. Якщо рядок імені порожня, то зв'язок файлової |
    | змінної здійснюється зі стандартним пристроєм вводу-виводу (як |
    | правило - з консоллю). |
    | Після цього файл повинен бути відкритий однією з процедур: |
    | Reset (); |
    | Відкривається існуючий файл для читання, покажчик поточної компоненти |
    | файлу налаштовується на початок файлу. Якщо фізичного файлу, |
    | відповідної файлової змінної не існує, то виникає ситуація |
    | помилки вводу-виводу. |
    | Rewrite (); |
    | Відкривається новий порожній файл для запису, йому присвоюється ім'я, задане |
    | процедурою Assign. Якщо файл з такою назвою вже існує, то він |
    | знищується. |
    | Після роботи з файлом він, як правило, повинен бути закритий процедурою Close. |
    | |
    | Close (); |
    | Ця вимога обов'язково має дотримуватися для файлу, до якого |
    | вироблявся запис. |
    | Тепер розглянемо безпосередню організацію читання і запису. |
    | Для введення інформації з файлу, відкритого для читання, використовується вже |
    | знайомий вам оператор Read. Щоправда, в його форматі і використанні ви |
    | помітите деякі зміни: |
    | Read (,); |
    | Відбувається зчитування даних з файлу в змінні, імена яких вказані в |
    | списку вводу. Змінні повинні бути того ж типу, що й компоненти файлу. |
    | |
    | Виведення інформації виробляє, як можна здогадатися оператор Write (,); |
    | Дані зі списку виведення заносяться у файл, відкритий для запису. |
    | Для текстових файлів використовуються також оператори Readln і Writeln с |
    | відповідними доповненнями, що відносяться до файлового вводу-висновку. |
    | Цікаво, що виведення даних на монітор і введення з клавіатури в мові Паскаль |
    | теж є діями з файлами. Вони навіть мають свої зумовлені |
    | файлові змінні текстового типу: Output і Input відповідно. |
    | Змінна Output завжди відкрита для запису, Input - для читання. Якщо не |
    | вказувати файлові змінні в операторах вводу-виводу (прийдемо до формату, |
    | розглянутому в темі "Оператори введення-виведення"), то у випадку запису за |
    | замовчуванням вибирається файл Output, у випадку читання - Input. |
    | Як ви знаєте, будь-який файл кінцевий і продовжувати читання з нього інформації |
    | можна лише до певної межі. Як цю межу встановити? Перевірити, |
    | закінчений чи файл, можна викликом стандартної логічної функції Eof () |
    | Вона виробляє значення True, якщо файл закінчено, і False - в іншому |
    | випадку. |
    | Вирішимо наступне завдання: "Написати програму, яка вводить з клавіатури |
    | список прізвищ учнів, а потім роздруковує його, крім тих учнів, у |
    | яких прізвище починається з букви 'Ш' ". |
    | Так як заздалегідь до

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status