Шукати в цьому блозі

Хто Вам більше подобається і кому Ви надаєте перевагу?

РОЗДІЛ "ІНФОРМАТИКА"51-55



51.
Звичайно метод математичного моделювання це ефективний засіб дослідження реальних інженерних об‘єктів та явищ. Але з їх ускладненням математичні моделі стають більш складними і їх дослідження вимагають величезної обчислювальної роботи. Застосування ЕОМ для розв‘язання складних прикладних задач сформувало новий спосіб проведення теоретичних досліджень на базі математичних моделей – обчислювальний (або математичний) експеримент..
В виділяють сім етапів обчислювального експерименту:
1. постановка задачі на дослідження,
2. побудова математичної моделі,
3. вибір чисельного методу розв‘язання математичної моделі,
4. розробка алгоритмів та програм,
5. тестування розроблених ПЗ на відомих моделях,
6. дослідження об‘єкта, який розглядається на ЕОМ,
7. аналіз результатів дослідження і застосування.
При виконанні всіх етапів обчислювального експерименту слід враховувати похибки вхідних даних задачі, що досліджується, які не можливо змінити в процесі дослідження, але необхідно знати, як вони впливають на точність кінцевого результату. Одні задачі мають похибку результату такого самого порядку, як і порядок похибки вхідних даних, в інших задачах похибка результату може на кілька порядків перевищувати похибку вхідних даних. Чутливість математичної моделі до неточностей у вхідних даних характеризується поняттям стійкості.
Задача називається стійкою за вхідними даними, якщо її розв'язок неперервний і залежить від вхідних даних, тобто малому приросту http://posibnyky.vntu.edu.ua/met/m1_t1_lecture1_src/m1_t1_lecture1_image283.pngх вхідної величини відповідає малий приріст http://posibnyky.vntu.edu.ua/met/m1_t1_lecture1_src/m1_t1_lecture1_image285.pngушуканого розв'язку. Іншими словами, малі похибки вхідних даних спричинюють малі похибки розв'язку задачі. Якщо ця умова не виконується, то задача вважається нестійкою за вхідними даними. Це означає, що навіть незначні похибки вхідних даних можуть привести до як завгодно великих похибок розв'язку, тобто розв'язок може бути зовсім спотворений. Тому застосовувати безпосередньо до таких задач чисельні методи не можна, оскільки похибки округлень при застосуванні методу будуть катастрофічно нагромаджуватись у ході обчислень.
Розглянемо поняття коректності задачі. Задача називається коректно поставленою, якщо для будь-яких вхідних даних існує єдиний і стійкий за вхідними даними її розв'язок. Прикладом некоректно поставленої задачі є, задача чисельного диференціювання функцій.
Для розв'язування некоректно поставлених задач застосовувати класичні чисельні методи не варто, оскільки похибки округлень при розрахунках можуть катастрофічно зростати і призвести до результату, далекого від шуканого розв'язку. Для розв'язування некоректно поставлених задач використовують так звані методи регулярізації, які замінюють дану задачу коректно поставленою.
При аналізі результатів обчислювального експерименту (будь-якого моделювання математичного чи імітаційного) вирішується дві задачі теорії похибок пряма та зворотна.
Пряма задача – це визначення похибки результату рішення задачі на ЕОМ, що визначається неусувною похибкою, і вибір відповідного методу обчислень, допустимої похибки.
Зворотна задача – по доступній похибці результату визначаються похибки з якими можливе використання вхідних даних і постановки задачі.
Якщо малі збурення коефіцієнтів і (або) вільних членів системи дуже збурюють її розв'язок, то таку систему рівнянь називають погано обумовленою. Навпаки, якщо малі збурення коефіцієнтів і (або) вільних членів системи мало збурюють її розв'язок, то таку систему називають добре обумовленою. Прикладом погано обумовленої є, наприклад, система вигляду
6,1x1 + 3,4x2 = 6,12,
14,7 x1 + 8,2х2 = 14,7,
розв'язком якої є пара (1; 0). Якщо число 6,1 у правій частині першого рівняння системи змінити на 0,02, то система
6,1x1 + 3,4x2 = 6,1,
14,7 x1 + 8,2х2 = 14,7,
матиме розв'язком пару (5,1; -7,35). Отже, мале збурення (менше 0,33%) одного з вільних членів системи зовсім змінило розв'язок системи.
Якщо коефіцієнт 6,1 у лівій частині першого рівняння системи змінити на 0,01, то розв'язком системи
6,11x1 + 3,4x2 = 6,1,
14,7 x1 + 8,2х2 = 14,7,
буде пара (0,36730972; 1,204918). І в цьому випадку мале збурення (менше 0,17%) одного коефіцієнта системи значно змінило її розв'язок.
Ознакою поганої обумовленості системи лінійних рівнянь є її майже виродженість. Іншими словами, якщо значення визначника системи досить мале порівняно з її коефіцієнтами, то така система близька до виродженої (особливої). Так, визначник системи і становить близько 0,27% значення найбільшого з коефіцієнтів системи (а21 = 14,7).
Далі розглянуто лише такі системи лінійних рівнянь, які не є виродженими (особливими), тобто їх визначник не дорівнює нулю, є добре обумовленими, тобто визначник системи є величиною не нижчого порядку, ніж її коефіцієнти, а коефіцієнти і вільні члени системи - точні числа.

26.Програмування. Основні методології (стилі, парадигми) програмування. Поняття програми. Класифікація мов програмування. Системи програмування, основні функції і компоненти. Інтегровані середовища програмування. Поняття про інтерпретацію та компіляцію. Поняття редактора, транслятора, налагоджувача.
 52.

Структурна методологія і об’єктно-орієнтована методологія розробки програм.
За означенням визнаного автора в галузі об’єктно-орієнтованих методів розробки програм Граді Буча “О’єктно-орієнтоване програмування (ООП) – це методологія програмування, яка заснована на представленні програми у вигляді сукупності об’єктів, кожен з яких являється реалізацією певного класу  (типу особливого виду), а класи утворюють ієрархію на принципах слідування.”
Об’єктно-орієнтована методологія (ОО-методологія) так само, як і структурна методологія, була створена з метою дисциплінувати процес розробки великих програмних комплексів і тим самим знизити їх складність та вартість.
ОО-методологія переслідує ті ж цілі, що й структурна (забезпечувати дисциплінованість програми, покращити читабельність, підвищувати ефективність та надійність, зменшувати час і вартість програмної розробки), але вирішує їх з іншої відправної точки і в більшості випадків дозволяє керувати більш складними проектами, ніж структурна методологія.
І структурна, і ОО-методологія переслідують мету побудови ієрархічного дерева взаємозв’язків між об’єктами (підзадачами). Але якщо структурна ієрархія будується по простому принципу розподілу цілого на складові частини,    
Тварина
Голова       Тулуб
Очі  Вуха ... Рот            Лапи ... Хвіст
то при створенні об’єктно-орієнтованої ієрархії (ОО-ієрархії) приймається інший погляд на той же вихідний об’єкт і в ієрархії обов’язково відображається наслідування властивостей батьківських (вище лежачих) типів об’єктів дочірніми (нижче лежачими) типами об’єктів.
Тварина
Ссавці                    Птах
Кіт    ...  Собака                        Орел  ...Горобець



Поняття програми. Класифікації мов програмування. Системи програмування, основні функції і компоненти. Інтегровані середовища програмування.
Алгоритмічні мови, які призначені для побудови описів алгоритмів, що орієнтовані на їх виконання комп’ютером, називають мовами програмування. Описи алгоритмів мовою програмування називають програмами.
Існуючі мови програмування можна поділити на дві групи: мови низького рівня і мови високого рівня. Мова найнижчого рівня – це мова машинного кодування. Машинна мова – набір двійкових кодів для роботи центрального процесора конкретного типу. Працювати з такою мовою важко через велику кількість команд у двійковій формі і різноманітність процесорів. Машинні коди були основним засобом програмування від моменту створення комп’ютерів. Трохи вище лежить мова Ассемблера (від англ. складати, компонувати). У мові ассемблера використовуються символьні позначення вказівок, які легко зрозуміти і запам’ятати. Замість послідовностей двійкових кодів вказівок записують їх символьні позначення, а замість двійкових адрес даних, які використовуються під час виконання вказівки – символьні імена цих даних, які добирає програміст. Іноді мову ассемблера називають мнемокодом, або автокодом. Всі інші мови програмування є більш високого рівня, ніж мова Ассемблера. Мова програмування високого рівня (МВР) – мова, що складається з операторів, схожих на звичайні слова. Програми такими мовами дозволяють формулювати завдання для комп’ютера  в звичайних для людини категоріях. МВР зробили використання комп’ютерів доступним широкому колу людей, які не фахівцями в галузі програмування. Мови програмування високого рівня поділяються на процедурні (детальний опис розв’язування задачі, тобто точно вказує дії щодо реалізації алгоритму шляхом переліку необхідних процедур) і непроцедурні (використання об’єктів і декларацій). Процедурні мови, у свою чергу поділяються на операціональні (Fortran, Basic, C) і структурні (Pascal, Модула). Серед непроцедурних виділяють об’єктні мови (C++, Delphi, Visual Basic) і декларативні (мови логічного програмування – Prolog, SmallTalk; мови функціонального програмування – Lisp). Програма, написана декларативною мовою, являє собою опис моделі предметної галузі засобами математичної логіки (логічне програмування) або ієрархії функцій (функціональне програмування). На відміну від процедурних мов програма декларативною мовою описує не способи (алгоритми) розв’язання задач, а логічний або функціональний взаємозв’язок понять предметної галузі, яка являє собою базу знань програми. Робота з програмою декларативною мовою полягає у задаванні програмі запитів, відповіді на які формулюються програмою на підставі її бази знань.
Середовище програмування запускається на виконання, як і звичайна програма. Після його завантаження екран поділяється на три частини: головне меню, робоче (основне вікно), рядок з описом призначення основних функціональних клавіш.



Поняття про інтерпретацію та компiляцiю. Інтегровані середовища програмування. Поняття редактора, транслятора, налагоджувача.
Для того, щоб комп’ютер міг виконувати програму, її потрібно перекласти на машинну мову. Для цього використовують спеціальні програми-транслятори. Транслятор – це програма, призначена для перекладу тексту програми з однієї мови програмування на іншу. Процес перекладання називається трансляцією. Розрізняють два типи трансляторів – компілятори та інтерпретатори. Компілятор – це програма, що призначена для перекладу та наступного запам’ятовування повністю всієї програми, яка написана деякою мовою, у програму в машинних кодах. Процес такого перекладання називається компіляцією. Компілятор створює програму в машинних кодах, яка потім виконується. Скомпільований варіант програми можна зберігати на дискові. Для повторного виконання програми компілятор вже не потрібен. Досить завантажити з диска в пам’ять комп’ютера скомпільований раніше варіант і виконати його. Існує інший спосіб поєднання процесів трансляції та виконання програми. Він називається інтерпретацією. Інтерпретатор – це програма, яка призначена для повказівкових трансляцій та виконання вихідної програми. Такий процес називається інтерпретацією.
У процесі трансляції відбувається перевірка опису програми на відповідність до правил використовуваної для її описування мови. Якщо в програмі знайдено помилки, транслятор виводить повідомлення про них на пристрій виведення (як правило, на екран дисплея). Інтерпретатор повідомляє про знайдені помилки після трансляції кожної вказівки програми. Це значною мірою полегшує процес пошуку та виправлення помилок, але суттєво збільшує час трансляції. Компілятор транслює програму набагато швидше, ніж інтерпретатор, але повідомляє про знайдені помилки лише після завершення компіляції всієї програми. Знайти та виправити помилки в цьому випадку важче. Через це інтерпретатори розраховані, в основному, на мови, що призначені для навчання програмування. Більшість сучасних мов програмування призначені для розробки складних пакетів програм і розраховані на компіляцію.
Як правило, програми компілятори і інтерпретатори називаються так само, як і мови, для перекладу з яких вони призначені. Слова Бейсік, Паскаль, Ада, Сі можна сприймати і як назви мов, і як назви відповідних програм-трансляторів.
Інтегроване середовище програмування – це система програмування, що поєднує редактор для зручного введення і редагування програми, транслятор і налагоджувач помилок.

27. Процедурні мови програмування. Характеристика процедурних мов програмування. Алфавіт. Основні поняття мови: числа, рядки, ідентифікатори, описи, оператори. Структура програми. Основні розділи програми і правила їх опису


53.

Характеристика процедурних мов програмування. Алфавіт. Основні поняття мови: оператори, ідентифікатори, числа, рядки, описи.
Програма, написана процедурною мовою, описує спосіб (алгоритм) розв’язування задачі, тобто точно вказує дії щодо реалізації алгоритму шляхом переліку необхідних процедур.
Кожна мова програмування має свій алфавіт, фіксований словник, синтаксис і семантику. Для описування алгоритму такою мовою використовується певний набір символів – алфавіт мови. Алфавіт складається зазвичай з літер латинської абетки, цифр, спеціальних символів (дужки, роздільники), знаків логічних  операцій (not, and, or та ін.), знаків операцій порівняння (=, <, > та ін.). З цих символів складаються і так звані ключові слова мови. Кожне з ключових слів має певне призначення. Ключові слова зв’язуються одне з одним за певними синтаксичними правилами мови. Кожне речення визначає певну послідовність дій, які повинен виконати комп’ютер. Словник мови програмування складається з кінцевого фіксованого набору ключових слів, наприклад, integer, while, var тощо. Сукупність правил побудови описів програм деякою мовою програмування називають синтаксисом мови програмування. Правила семантики пояснюють, яке смислове значення має опис кожної з вказівок програми і які дії повинен виконати  комп’ютер під час виконання кожної з таких вказівок. У будь-якій мові програмування можна виділити чотири типи елементів, що використовуються при побудові описів програм: символи, слова, виразі і вказівки (оператори). Символи мови – це основні неподільні знаки, за допомогою яких описують програми і дані. Слова мови – структури, утворені із символів і які є мінімальними одиницями, що мають деякий смисл. Слова – це імена (позначення, ідентифікатори) змінних величин, числа, службові слова, які використовуються в описах вказівок. Правила запису ідентифікаторів: 1) Усі ідентифікатори складаються з літер латинської абетки, цифр, починаються з літери або знака підкреслення "_"; 2) Великі і малі літери на розрізняються; 3) Ідентифікатори можуть мати різну довжину, але використовуються тільки перші 63 символи. Вираз – це текст, який задає правило обчислення одного значення того чи іншого типу. Якщо одержуване значення числове, о вираз називають арифметичним. Якщо одержуване значення логічне, то вираз називають логічним, чи булівським. Якщо одержуване значення – текст, то вираз називають літерним. Вказівка – це вказівка про виконання певної дії. У мовах програмування застосовуються вказівки трьох типів: 1) вказівки про безумовне виконання деякої дії чи набору дій: надання значень, уведення, виведення, виконання алгоритму; 2) Вказівки розгалуження; 3) Вказівки повторення.


Основні поняття мови: числа, рядки, ідентифікатори, описи, оператори.
Операнди - це спеціальні символи або послідовності символів, які виконують над даними певні операції (математичні, логічні і т.д.). Прикладом операндів можуть бути операнди математичних операцій: “+” - додавання даних), “-” - віднімання даних, “*” -множення даних, “/” - ділення даних, “=” - рівність даних і т.д.
Оператори - це деякі неподільні елементи програми, що дозволяють виконувати певні алгоритмічні дії у програмі, тобто виконувати в програмі певні команди. фактично, оператор - це окрема команда в алгоритмі програми, тобто окремий крок виконання програми.


В Turbo Pascal оператори поділяються на прості та структурні. До простих операторів відносяться:
-   оператор присвоєння (:=);
 оператор безумовного переходу (goto);
-   оператор звертання до процедури (функції).
Структурними операторами називаються такі, що складаються з інших операторів. До них відносяться:
-   складний оператор - представляє собою набір операторів, що поміщені   в операторні дужки (begin - end);
-   умовний оператор (if);
-   оператор вибору (case);
-   оператори циклу (repeat, while, for);
-           оператор приєднання (with).


Структура програми. Основні розділи програми і правила їх опису
Структура опису програми мовою Паскаль.
1. Заголовок програми: Службове слово program та ім’я програми
program <ім’я програми>
2. Розділ описів: описуються всі ідентифікатори об’єктів, що використовуються в даній програмі. Описати ідентифікатор – значить указати його ім’я і тип
uses <опис модулів>
label <мітки>;   
const <оголошення констант>;
type <визначення типів даних>;
var <оголошення змінних>;
<опис процедур і функцій>
3. Розділ операторів (тіло програми): зазначається послідовність дій, які необхідно виконати над описаними об’єктами. Починається службовим словом begin, закінчується – end.
begin
оператор 1;
оператор 2;
.............
оператор n;
end.
















Поняття
Опис
Приклад
Алфавіт мови
Літери латинського алфавіту, цифри, спеціальні символи, зарезервовані слова.
A...Z, a...z, 0...9,

+ - * / = < >[ ]{ }$ ^ & #
Ідентифікатори
Імена об'єктів (констант, типів даних, змінних, функцій, програм). Правила запису ідентифікаторів:

·    всі ідентифікатори складаються з літер латинського алфавіту, цифр, починаються з літери або знака,«_»;

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

begin

Write

Test

My_First_Program
Елементи даних
Константа - комірка пам'яті, значення якої протягом виконання програми залишається постійним.
Змінна - комірка пам'яті, значення якої протягом виконання програми може змінюватися.
45,

a, b, c Pi
Коментар
Призначений для внесення до тексту програми пояснень. Обмежується символами {  } або (* *)



Основні поняття мови програмування 
 54.


Перш за все, слід пам'ятати, що вивченням мови програмування - це знайомство з формальними правилами запису алгоритмів для їх подальшого виконання комп'ютером. Формальність ця виникає з самих принципів, закладених в архітектуру обчислювальних пристроїв, і жорсткості математичної логіки. Тому слід сприймати всі досить строгі правила як неминучість, налаштувати себе на серйозну, скрупульозну, деколи складну роботу.
Команди дозволяють отримувати, зберігати і обробляти дані різних типів (наприклад, цілі числа, символи, рядки символів, т.д.). Проте окрім команд в записі програми беруть участь ще так звані "службові слова". Це і є елементи формальності, організуючі структуру програми. Їх не так багато, але їх значення важко переоцінити. Службові слова можна використовувати тільки по своєму прямому призначенню. Перевизначати їх не дозволяється.

Основне призначення комп'ютера - полегшити людині роботу з великими об'ємами інформації, тому переважна більшість програм побудована поодинці, досить простому принципу: отримання даних із зовнішнього світу (введення), обробка їх по відповідному алгоритму, зберігання необхідної інформації і вивід в зовнішній (по відношенню до комп'ютера) світ отриманих результатів. Всі ці дії реалізуються через наявні в мовах програмування команди, алгоритмічні структури і структури даних.
Отож, приступимо!
1. Алфавіт
Абетка (алфавіт) — це набір символів, які використовуються для написання програм.
Абетку мови Паскаль складають:
1) Літери A..Z, a..z та символ підкреслювання "_".
2) Цифри від 0 до 9.
3) Спеціальні символи + -*/ = <>(){}[].,:;#$'".
4) Службові слова:
and - і, та
array - масив
begin - початок
5) Деякі послідовності з двох спеціальних символів:
: = надати значення
>= більше або дорівнює
<= менше або дорівнює
<> не дорівнює
.. роздільник діапазонів
Програма мовою Паскаль оперує різноманітними об'єктами, що містять або певні дані (константи, змінні, типи, файли), або виконують певні дії (процедури та функції). Кожний об'єкт
 позначається іменем (ідентифікатором). Іменем може бути будь-яка послідовність латинських літер, цифр, знаку підкреслювання, що починається з літери чи знаку підкреслювання (пробіли в іменах ставити заборонено). Заборонено в якості імен використовувати службові слова. Довжина ідентифікатора не повинна перевищувати 127 символів.
Великі та малі літери в іменах транслятор не відрізняє. Сполучення цих літер використовується для того, аби зручніше було читати інформацію. Числа можуть бути цілими (тип integer) та дійсними (тип real). Дійсні числа записуються у 2-х формах: натуральній (з фіксованою крапкою) та експоненціальній (з плаваючою крапкою).
2. Структура програм
Програма мовою Паскаль складається з заголовка, опису даних та тіла програми, що являє собою блок команд обробки даних, обмежений словами BEGIN (початок) та END (кінець). Закінчується програма крапкою.
Правила мови Паскаль передбачають єдину для всіх програм форму основної структури:
PROGRAM ім'я;
Var опис даних; 
BEGIN
оператор; { тіло програми } 
…………… 
оператор; 
END. 

Приклад програми, що обчислює площу круга та довжину кола:

Program circle; {заголовок} 
const pi=3.141593; {константа} 
var r,len,s : real; {змінні} 
BEGIN
readln (r); {ввести радіус} 
len:=2 * pi * r; {обчислити довжину кола} 
s:=pi * r * r; {обчислити площу} 
writeln ('Довжина=', len ,' площа=' ,s) {вивести результати} 
END.
У фігурних дужках записуються коментарі (пояснення до програми), які транслятором мови ігноруються. Заголовок програми і кожен опис повинні закінчуватися крапкою з комою. Команди (оператори) у тілі програми повинні відокремлюватися одна від одної крапкою з комою, навіть якщо вони записуються окремими рядками. Окремі змістові блоки програми прийнято записувати з відступом ("сходинками"), що робить програму більш зручною для читання, хоча транслятору це байдуже, навіть якщо б ви записали всю програму одним рядком. Перелік усіх даних із зазначенням їх типів на початку програми не тільки полегшує контроль за їх використанням, але й дозволяє транслятору знаходити та повідомляти вам про помилки, наявні в тілі програми та пов'язані з невірною обробкою даних.
Правила написання Pascal-програм
1. Основний текст будь-якої програми починається службовим словом begin і закінчується словом end, після чого слідує крапка. Без крапки програма вважається не закінченою. І навпаки, якщо в програмі знаходиться крапка, то всі команди, що слідують за нею ігноруються (оскільки програма завершена).
2. В кінці кожної команди ставиться крапка з комою (“;”) - символ, що розділяє команди між собою.
3. Після команди, яка знаходиться перед end, крапку з комою (“;”) бажано не встановлювати, оскільки буде вважатись, що перед end є ще один порожній оператор.
4. Команди в Pascal можна записувати в один рядок, хоча для полегшення читабельності програми бажано кожну команду вказувати з нового рядка.
5. Якщо користувач бажає помістити в текст програми коментарі, то їх необхідно вказувати у фігурних дужках (замість фігурних дужок можна вказувати альтернативний набір символів - “(* ,,, *)” ).
6. При вказанні в програмі виразів, що містять будь-які дужки потрібно пам’ятати, що кількість закритих та відкритих дужок повинна бути однаковою.
7. Якщо потрібно використати декілька операторів у якості одного складеного оператора, то їх слід взяти в операторні дужки, що починаються словом begin і закінчуються end. При цьому кількість слів begin у програмі повинна співпадати з кількістю слів end.
8. Усі змінні, константи та типи даних, що використовуються в програмі, повинні бути описані в розділах const, type та var.

Чотири стандартних типи даних:
1) INTEGER (цілий). Діапазон значень даних цього типу, що можуть прийматися, зазвичай від -32768 до +32767. Граничні значення діапазону записано в стандартних константах, які мають імена MAXINT та MININT, тобто MININT -32768 та MAXINT=32767. Спроба отримати значення, що виходить за межі діапазону, призводить до помилки транслятора.
Об'єкти даних — учасники операцій — називаються операндами. Над операндами цілого типу можливі такі операції: + (додавання), - (віднімання), * (множення), DIV (цілочисельне ділення з відсіченням залишку), MOD (залишок від цілочисельного ділення). Ці операції виконуються точно. Порядок виконання звичайний: спочатку множення, ділення та отримання залишку, потім додавання та віднімання. Службові слова DIV і MOD з двох сторін повинні відокремлюватися пробілами.
Приклади:
5 div 2 = 2
5 mod 2 = 1
5 div 6 = 0
5 mod 6 = 5
2) REAL (дійсний). Дані цього типу мають цілу, дробову частини та порядок (степінь числа 10). Цілі числа в операціях із дійсними даними автоматично приводяться до REAL-формату.
Дійсні числа позначаються дійсними сталими. Розглянемо приклад. Число 1.2345 можна позначити багатьма різними способами, наприклад,123.45&#180; 10-2. Тут воно має цілу частину 123, дробову частину .45 і десятковий порядок -2. Цьому запису відповідає стала мови Паскаль123.45E-2, у якій 123  ціла частина, .45  дробова, а E-2  порядок. Це ж число можна задати сталою 0.12345E1 або 0.012345E+2, або 1.2345, або 12345e-04. Подання числа сталою, у якій перед десятковою крапкою записано єдину цифру від 1 до 9, називається нормалізованим, наприклад, 9.81 або 1.0E2 (число 0 має нормалізоване подання 0.0).
Дійсні сталі мають обов'язкову цілу частину, за якою записано дробову частину і порядок (можливо, одне з них). Ціла частина – це непорожня послідовність цифр, дробова – непорожня послідовність цифр із крапкою на початку, а порядок  буква "E" або "e", можливо, із знаком "+" або "-", і однією або двома цифрами. Перед сталою може бути знак "-", і тоді вона задає від'ємне число: -12.345E-1.
Як бачимо, цілі числа задаються як цілими сталими, так і дійсними, наприклад, 2 і 2.0. Проте їм відповідають два цілком різних подання того самого числа, тобто значення двох різних типів. І в машині вони обробляються по-різному.



28. Реалізація структур даних процедурною мовою програмування. Типи даних і засоби їх опису. Структури даних та їх опис. Динамічні структури даних та їх реалізація.
55.

Типи даних і засоби їх опису процедурною мовою програмування.
В мові Паскаль будь-який тип даних визначає множину значень, яких може набувати величина цього типу, і ті операції, які можна застосувати до величин цього типу:
1. Прості неструктуровані типи:
§     Стандартні скалярні типи
-               цілі числа INTEGER (-32768..32768), ціле довжиною 1 байт BYTE (0..255), коротке ціле SHORTING, довге ціле LONGING, ціле довжиною 1 слово WORD
-               дійсні числа REAL (2.9*10E-39..1.7*10E-38), дійсне одинарної точності SINGLE, дійсне подвійної точності DOUBLE, зовнішні (або розширені)
-               логічний (булівський) тип BOOLEAN (True, False)
-               літерний тип СРФК (символи кодової таблиці з кодами 0..255)
§     Посилальний тип POINT
§     Оголошені скалярні типи: перелічуваний тип, обмежений тип.
2. Структуровані типи: рядковий тип STRING (символи, що складають рядок завдовжки до 255 символів), масиви ARRAY, записи RECORD, множина SET, файли FILES, послідовності, черга, стек.
У мовах структурованого програмування типи величин мають бути описані. Опис типів у програмах на Паскаль виглядає, наприклад, так:
const
Count=10; Num=100;
var
I, J: integer;
X1, X2: real;
Ans: boolean;
Symb1, Symb2: char;
Структура оголошення типу Рядок:
 var <ідентифікатор>: String
Опис масиву
<Ідентифікатор>: array [<кількість елементів>] of <базовий тип масиву> , де
<базовий тип масиву> - будь-який тип елемента множини, в якості якого може використовуватись будь-який порядковий тип, крім WORD, INTEGER, LONGING
Множина
<ім’я типу> = set of <базовий тип>
Запис
<ім’я типу> = record <список полів> end
Файл
<ім’я> = file of < тип>


Структури даних та їх опис.
Опис різних структур даних процедурною мовою програмування.
Структуровані типи: рядковий тип STRING (символи, що складають рядок завдовжки до 255 символів), масиви ARRAY, записи RECORD, множина SET, файли FILES, послідовності, черга, стек.
У мовах структурованого програмування типи величин мають бути описані. Опис типів у програмах на Паскаль виглядає, наприклад, так:
Структура оголошення типу Рядок:
 var <ідентифікатор>: String
У Паскалі є набір стандартних процедур і функцій для роботи з рядками. Розглянемо деякі з цих процедур і функцій
§     Concat (s1, s2, ..., sn): String  - це функція рядкового типу, що послідовно з’єднує рядки s1, s2, ..., sn.
 Приклад: S:=Concat('1','2','3')
S='123'
§     Copy (S: String; Index: Integer; Count: Integer) - це функція рядкового типу, що виділяє з рядка S підрядок завдовжки в Count символів, починаючи з позиції Index
Приклад: S:=Copy('порівняння',3,8)
S='рівняння'
§     Length (S: String): Integer - це функція цілого типу, що повертає довжину рядка.
Приклад: S:= Length ('рядок')
S=5
§     Pos (Substr: String; S: String): Byte - це функція цілого типу, що повертає позицію, з якої підрядок Substr уперше зустрічається у рядку S.
Приклад: S:= Pos ('ритм', 'алгоритм')
S=5
§     Delete (S: String; Index: Integer; Count: Integer) – процедура, що видаляє з рядка S Count символів, починаючи з позиції Index.
Приклад: S:='алгоритміка'
Delete(S,9,3)
S='алгоритм'
§     Insert (Source: String; S: String; Index: Integer) – процедура, о вставляє підрядок Source у рядок S, починаючи з позиції Index.
Приклад: S:='алгом'
Source:= 'рит'
Insert (Source; S; 5)
S='алгоритм'
§     Str (V: Integer; S: String) – процедура, яка число V перетворює в рядок S.
Приклад: Str(5, S)
S='5"
§     Val (S: String; V: Integer; W: Integer) – якщо рядок S являє собою правильний запис числа, то це число записується як значення змінної V, при цьому значення W дорівнює 0.
Приклад: Val ('8.4',V,W)
V=8.4
W=0
Val ('2f3',V,W)
W=2

Опис масиву
Масив – це структурований тип, який складається з фіксованого числа компонентів одного і того ж типу, що називається базовим типом
1. Одновимірний масив
Type <ім’я типу>=Array[<порядковий тип>] of <тип компонент>;
Var <список змінних>: <ім’я типу>;
Приклад: Type U=Array[1..20] of Real;
Vector=Array[1..5] of Real;
M=1..100;
Skal=Array[1..50] of
(kul, kur, piram);
2. Багатовимірний масив
Array[<тип індексів>,<тип індексів>] of <тип компонент>;
3. Звернення до компонентів масиву
<ім’я змінної> [<список імен індексів>]

Множина
<ім’я типу> = set of <базовий тип>
Запис
<ім’я типу> = record <список полів> end
Файл
<ім’я> = file of < тип>


Динамічні структури даних та їх реалізація процедурною мовою програмування.
Під час роботи довільної програми значення деякої статичної змінної може змінюватися, але власне кількість оголошених статичних змінних не змінюється. Це не завжди зручно. Наприклад, якщо програма призначена для введення та обробки даних про учнів класу, а для збереження цих даних використовується звичайний масив, то визначаючи розмір масиву, приходиться орієнтуватися на деяке, як здається програмісту, граничне значення учнів в класі. При цьому якщо реально учнів в класі менше цього граничного значення, то пам’ять ПК використовується неефективно. Якщо ж учнів більше – то таку програму використовувати взагалі неможна.
В таких задачах зручно використовувати структури (подібні до масивів) в яких кількість елементів може змінюватися. Такими структурами є зв’язані список. Зв’язаний список нагадує масив, в якому кількість елементів змінюється під час роботи програми.
Зв’язаний список можна побудувати використовуючи динамічні змінні. Динамічні змінні можна створювати під час роботи програми («на ходу») за допомогою так званих змінних-вказівників.
1.1          ЗМІННІ-ВКАЗІВНИКИ
Змінну-вказівник можна уявити як звичайну статичну змінну, але таку, в якій зберігається не деяке конкретне значення (наприклад типу integer, real, …), а адрес іншої змінної.
Змінна-вказівник (р) нагадує конверт, який містить лише адресу квартири Петрова, а не її вміст. Можна сказати, що змінна-вказівник р вказує на іншу змінну, яка знаходиться за адресою вул.. 1-го Травня, 58.
3. ЗВ’ЯЗАНИЙ СПИСОК. СТЕК
2Формування стеку.
Формувати список можна добавляючи елементи як на початок списку (стек), як в кінець (черга), так і в довільне місце списку.

Немає коментарів:

Дописати коментар