Контакти

Російська алгоритмічна мова. Алгоритмічні мови та програмування. Базова структура розгалуження

Міністерство освіти Російської ФедераціїПермський державний технічний університет

Кафедра інформаційних технологійта автоматизованих систем

Вікентьєва О. Л.

Конспект лекцій з курсу « Алгоритмічні мовита програмування» (Основи мови С++, I семестр)

Вступ

У першому семестрі розглядаються основні конструкції мови Сі та базова технологія програмування (структурне програмування).

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

1.1. Алгоритм та програма

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

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

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

1.2.Властивості алгоритму

1. Масовість: алгоритм повинен застосовуватися не до одного завдання, а до цілого класу подібних завдань (алгоритм для розв'язання квадратного рівняння має вирішувати не одне рівняння, а всі квадратні рівняння).

2. Результативність: алгоритм повинен призводити до отримання результату за конкретну кількість кроків (при розподілі 1 на 3 виходить періодичний дріб 0,3333(3), для досягнення кінцевого результату треба обумовити точність отримання цього дробу, наприклад, до 4 знаки після коми).

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

4. Дискретність – процес має бути описаний за допомогою неподільних

операцій, виконуваних кожному кроці (т. е. кроки не можна розділити більш дрібні кроки).

Алгоритми можна у наступних формах:

1) словесний опис алгоритму

2) графічне опис алгоритму.

3) за допомогою алгоритмічної мови програмування

1.2. Компілятори та інтерпретатори

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

ходу роботи, перекладаючи кожен оператор машинною мовою.

1.3. Мови програмування

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

Мови програмування високого рівняне враховують особливості конкретних комп'ютерних архітектур, тому створювані програмина рівні вихідних текстів легко переносяться інші платформи, якщо їм створено відповідні транслятори. Розробка програм мовами високого рівня набагато простіше, ніж машинними мовами.

Мовами високого рівня є:

1. Фортран – перша компілювана мова, створена в 50-ті роки ХХ століття. У ньому було реалізовано низку найважливіших понять програмування. Для цієї мови було створено величезна кількістьбібліотек, починаючи від статистичних комплексів і до управління супутниками, тому він продовжує використовуватися в багатьох організаціях.

2. Кобол – компілювана мова для економічних розрахунків та рішеннябізнес-завдань, розроблений на початку 60-х років. У Коболі було реалізовано дуже потужні засоби роботи з великими обсягами даних, що зберігаються на зовнішніх носіях.

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

4. Бейсік - створювався в 60-ті роки також для навчання програмуванню. Для нього є компілятори та інтерпретатори, є однією з найпопулярніших мов програмування.

5. Сі - був створений у 70-ті роки спочатку не розглядався як масова мова програмування. Він планувався для заміни асемблера, щоб мати можливість створювати такі ж ефективні та короткі програми, але не залежати від конкретного процесора. Він багато в чому схожий на Паскаль і має додаткові можливостідля роботи із пам'яттю. На ньому написано багато прикладних та системних програм, а також операційна система Unix.

6. Сі++ - об'єктно-орієнтоване розширення мови Сі, створене Б'ярном Страуструп в 1980р.

7. Java – мова, яка була створена компанією Sun на початку 90-х на основі Сі++. Він покликаний спростити розробку додатків на СІ + + шляхом виключення з нього низькорівневих можливостей. Головна особливістьмови – це те, що він компілюється над машинний код, а платформно-незалежний байт-код (кожна команда займає один байт). Цей код може виконуватися за допомогою інтерпретатора - віртуальної Java-машини (JVM).

2.Структура програми на Сі++

Програма мовою Сі має таку структуру: # Директиви препроцесора

. . . . . . . . .

#директиви препроцесора функція а ()

оператори функція в ()

оператори

void main() //функція, з якої починається виконання програми оператори

описи

присвоєння

функція порожній оператор

складовий

переходу

Директиви препроцесора – керують перетворенням тексту програми до її компіляції. Вихідна програма, підготовлена ​​на СІ у вигляді текстового файлу, проходить 3 етапи обробки:

1) препроцесорне перетворення тексту;

2) компіляція;

3) компонування (редагування зв'язків чи складання).

Після цих трьох етапів формується виконуваний код програми. Завдання препро-

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

1) #define – вказує правила заміни у тексті. #define ZERO 0.0

Означає, що кожне використання у програмі імені ZERO замінюватиметься

2) #include< имя заголовочного файла>- призначена для включення до тексту програми тексту з каталогу «Заголовних файлів», що поставляються разом з стандартними бібліотеками. Кожна бібліотечна функція Сі має відповідний опис в одному із заголовних файлів. Список заголовних файлів визначено стандартом мови. Вживання директиви include не підключає відповідну стандартну біб-

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

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

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

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

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

int y = 10; //іменована константа float x; //Змінна

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

Оператори - визначають дії програми на кожному кроці її виконання.

Приклад програми на Сі:

#include //Препроцесорна директива

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

1. З яких частин складається програма С++?

2. Чим визначення відрізняється від оголошення?

3. Перелічити етапи створення виконуваної програми мовою С++.

4. Що таке препроцесор?

5. Що таке директива препроцесора? Навести приклади директив препроцесора.

6. Скласти програму, яка друкує текст "Моя перша програма на С++"

2. Базові засоби мови СІ++ 2.1.Склад мови

У тексті будь-якою природною мовою можна виділити чотири основні елементи: символи, слова, словосполучення та речення. Алгоритмічна мова також містить такі елементи, тільки слова називають лексемами (елементарними конструкціями), словосполучення – виразами, речення – операторами. Лексеми утворюються із символів, вирази із лексем та символів, оператори із символів виразів та лексем (Рис. 1.1)

Мал. 1.1. Таким чином, елементами алгоритмічної мови є:

Ідентифікатори – імена об'єктів СІ-програм. В ідентифікаторі можуть бути використані латинські літери, цифри та знак підкреслення. Великі та малі літери різняться, наприклад, PROG1, prog1 і Prog1 – три різні ідентифікатори. Першим символом має бути буква або знак підкреслення (але цифра). Прогалини в ідентифікаторах не допускаються.

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

- Знаки операцій – це один або кілька символів, які визначають дію над операндами. Операції поділяються на унарні, бінарні та тернарні за кількістю операндів, що беруть участь у цій операції.

Константи – це незмінні величини. Існують цілі, речові, символьні та рядкові константи. Компілятор виділяє константу як лексему (елементарну конструкцію) і відносить її до одного з типів за її зовнішнім виглядом.

Розділювачі – дужки, крапка, кома пробільні символи.

2.1.1. Константи в Сі++

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

Константи діляться на 5 груп:

Цілі;

- речові (з плаваючою точкою);

Перераховані;

Символьні;

Рядкові.

Компілятор виділяє лексему і відносить її до тієї чи іншої групи, а потім вну-

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

Цілі константи можуть бути десятковими, вісімковими та шістнадцятковими. Десятична константа визначається як послідовність десяткових цифр, що починається не з 0, якщо це число не 0 (приклади: 8, 0, 192345). Восьмерична константа – це константа, яка завжди починається з 0. За 0 слідують восьмеричні цифри (приклади: 016 – десяткове значення 14, 01). Шістнадцяткові константи – послідовність шістнадцяткових цифр, яким передують символи 0х або 0Х (приклади: 0хА, 0Х00F).

У залежно від значення цілої константи компіляторпо-різному представить її

в пам'яті комп'ютера (тобто компілятор припише константі відповідний тип даних).

Речові константи мають іншу форму внутрішнього уявлення у пам'яті комп'ютера. Компілятор розпізнає такі константи на їхній вигляд. Речові константи можуть мати дві форми подання: з фіксованою точкою і плаваючою точкою. Вид константи з фіксованою точкою: [цифри]. [цифри] (приклади: 5.7, . 0001, 41.). ] (приклади: 0.5е5, .11е-5, ​​5Е3). У записі речових констант може опускатися або ціла, або дробова частини, або десяткова точка, або ознака експоненти з показником ступеня.

Перераховані константи вводяться ключовим словом enum. Це звичайні цілі константи, яким приписані унікальні та зручні для використання позначення. Приклади: enum (one=1, two=2, three=3,four=4);

enum (zero,one,two,three) - якщо у визначенні констант, що перераховуються, опустити знаки = і числові значення, то значення будуть приписуватись за замовчуванням. При цьому лівий ідентифікатор отримає значення 0, а кожен наступний буде збільшуватися на 1.

enum (ten=10, three=3, four, five, six);

enum (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Satur-

Символьні константи – це один або два символи, укладені в апострофи. Символьні константи, що складаються з одного символу, мають тип char і займають у пам'яті один байт, символьні константи, що складаються з двох символів, мають тип int і займають два байти. Послідовності, що починаються зі знака \, називаються керуючими, вони використовуються:

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

\a - звуковий сигнал,

\b - повернення на один крок, \n - переклад рядка,

\t - горизонтальна табуляція.

- Для представлення символів: \ , , ? ” (\\, \' ,\? ,\”).

- Для представлення символів за допомогою шістнадцяткових або вісімкових кодів (073, 0хF5).

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

Усередині рядків також можна використовувати керуючі символи. Наприклад: "\nНовий рядок",

"\n\"Алгоритмічні мови програмування високого рівня \"" .

2.2. Типи даних у Сі++

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

1) внутрішнє представлення даних у пам'яті комп'ютера;

2) безліч значень, які можуть набувати величини цього типу;

3) операції та функції, які можна застосовувати до даних цього типу.

У Залежно від вимог завдання програміст вибирає тип для об'єктів програми. Типи Сі можна розділити на прості і складові. До простих типів відносять типи, що характеризуються одним значенням. У Сі ++ визначено 6 простих типів даних:

int (цілий)

char (символьний)

wchar_t (розширений символьний) bool (логічний) float (речовий)

double (речовий з подвійною точністю)

Існує 4 специфікатори типу, які уточнюють внутрішнє уявлення та діапазон стандартних типів

short (короткий) long (довгий) signed (знаковий)

unsigned (беззнаковий)

2.2.1. Тип int

Значеннями цього є цілі числа.

Розмір типу int не визначається стандартом, а залежить від комп'ютера та компілятора. Для 16-розрядного процесора під нього відводиться 2 байти, для 32-розрядного – 4 байти.

Якщо перед int стоїть специфікатор short, то під число відводиться 2 байти, а якщо специфікатор long, то 4 байти. Від кількості пам'яті, що відводиться під об'єкт, залежить безліч допустимих значень, які може приймати об'єкт:

short int - займає 2 байти, отже, має діапазон -32768. +32767;

long int - займає 4 байти, отже, має діапазон -2 147 483 648 .. +2 147 483 647

Тип int збігається з типом short int на 16-розрядних ПК і з типом long int на 32-розрядних ПК.

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

unsigned short int - займає 2 байти, отже, має діапазон 0..65536; unsigned long int – займає 4 байти, отже, має діапазон 0..+4 294 967

2.2.2. Тип char

Значеннями цього є елементи кінцевого впорядкованого безлічі символів. Кожному символу ставиться у відповідність число, яке називається кодом символу. Під величину символьного типу приділяється 1 байт. Тип char може використовуватися зі специфікаторами signed та unsigned. У даних типу signed char можна зберігати значення в діапазоні від -128 до 127. При використанні типу unsigned char значення можуть перебувати в діапазоні від 0 до 255. Для кодування використовується код ASCII (American Standard Code foe International Interchange). Символи з кодами від 0 до 31 відносяться до службових та мають самостійне значеннялише у операторах вводу-вывода.

Величини типу char також застосовуються для зберігання чисел із зазначених діапазо-

2.2.3. Тип wchar_t

Призначений для роботи з набором символів, для кодування яких недостатньо 1 байти, наприклад Unicode. Розмір цього типу, зазвичай, відповідає типу short. Рядкові константи такого типу записуються з префіксом L: L "String #1".

2.2.4. Тип bool

Тип bool називається логічним. Його величини можуть набувати значення true і false. Внутрішня форма уявлення false – 0, будь-яке інше значення інтерпретується як true.

2.2.5. Типи з плаваючою точкою.

Внутрішнє уявлення речового числа складається з 2 частин: мантиси та порядку. У IBM-сумісних ПК величини типу float займають 4 байти, у тому числі один розряд відводиться під знак мантиси, 8 розрядів під лад і 24 – під мантису.

Величини типів double займають 8 байтів, під порядок і мантису відводяться 11 і 52 розряди відповідно. Довжина мантиси визначає точність числа, а довжина порядку його діапазон.

Якщо перед ім'ям типу double стоїть специфікатор long, під величину відводиться байтів.

2.2.6. Тип void

До основним типу також відноситься тип void Безліч значень цього типу - пу-

2.3. Змінні

Змінна СІ++ - іменована область пам'яті, в якій зберігаються дані певного типу. У змінної є ім'я та значення. Ім'я служить для звернення до області пам'яті, де зберігається значення. Перед використанням будь-яка змінна має бути описана. Приклади:

Загальний вигляд оператора опису:

[клас пам'яті]тип ім'я [ініціалізатор];

Клас пам'яті може набувати значень: auto, extern, static, register. Клас пам'яті визначає час життя та область видимості змінної. Якщо клас пам'яті не зазначений явно, компілятор визначає його виходячи з контексту оголошення. Час життя може бути постійним протягом виконання програми або тимчасовим протягом блоку. Область видимості – частина тексту програми, з якої допустимий доступ до змінної. Зазвичай, область видимості збігається з областю дії. Крім того випадку, коли у внутрішньому блоці існує змінна з таким самим ім'ям.

Const – показує, що цю змінну не можна змінювати (названа константа). При описі можна надати змінній початкове значення (ініціалізація). Класи пам'яті:

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

extern - глобальна змінна, вона знаходиться в іншому місці програми (в іншому файлі або далі за текстом). Використовується для створення змінних, доступних у всіх файлах програми.

static - статична змінна, вона існує лише в межах того файлу, де визначено змінну.

register - аналогічні auto, але пам'ять під них виділяється у регістрах процесора. Якщо такої можливості немає, змінні обробляються як auto.

int a; //Глобальна змінна void main()(

int b; // локальна змінна

extern int x;//змінна х визначена в іншому місці static int c;//локальна статична змінна a=1;//привласнення глобальної змінної

int a; // локальна змінна а

a=2;//привласнення локальної змінної::a=3;//привласнення глобальної змінної

int x=4;// визначення та ініціалізація х

У прикладі змінна а визначена поза всіма блоками. Області дії змінної а є вся програма, крім тих рядків, де використовується локальна змінна а. Змінні b і с – локальні, область їхньої видимості – блок. Час життя по-різному: пам'ять під b виділяється при вході в блок (т. до. за умовчанням клас пам'яті auto), звільняється при виході з нього. Змінна з (static) існує, доки працює програма.

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

Ім'я змінної має бути унікальним у своїй галузі дії.

Опис змінної може бути виконано або як оголошення або як визначення. Оголошення містить інформацію про клас пам'яті та тип змінної, визначення разом із цією інформацією дає вказівку виділити пам'ять. У прикладі extern int x; - оголошення, інші – визначення.

2.4.Знаки операцій на Сі++

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

Унарні операції

& отримання адреси операнда

* Звернення за адресою (розйменування)

- унарний мінус, змінює знак арифметичного операнда

++ Збільшення на одиницю:

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

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

int a=(m++)+n; // a = 4, m = 2, n = 2

int b=m+(++n);//a=3,m=1,n=3

зменшення на одиницю:

префіксна операція - зменшує операнд до його використання.

постфіксна операція зменшує операнд після його використання.

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

має операнд

має дві форми

sizeof вираз

sizeof(float)//4

sizeof(1.0)//8, т. к. речові константи за умовчанням

Алгоритмічна мова –це система позначень та правил для одноманітного та точного запису алгоритмів та їх виконання. Алгоритмічна мова - це засіб для запису алгоритмів в аналітичному вигляді, проміжному між записом алгоритму природною (людською) мовою та записом мовою ЕОМ (мові програмування).

Між поняттями «алгоритмічна мова» та «мови програмування» є різниця. Перш за все, програма, записана алгоритмічною мовою, не обов'язково призначена комп'ютеру. Практична ж реалізація алгоритмічної мови – окреме питання у кожному конкретному випадку.

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

Алгоритм, записаний алгоритмічною мовою, повинен мати назву. Назву бажано вибирати так, щоб було зрозуміло, розв'язання якого завдання описує даний алгоритм. Для виділення назви алгоритму перед ним записують службове слово АЛГ (АЛГоритм). За назвою алгоритму (зазвичай з нового рядка) записують його команди. Для вказівки початку та кінця алгоритму його команди укладають у пару службових слів НАЧ (ПОЧАТОК) та КОН (Кінець). Команди записують послідовно.

АЛГ – назва алгоритму

серія команд алгоритму

Наприклад, алгоритм, що визначає рух виконавця-робота, може мати вигляд:

АЛГ - в_склад

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

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

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

АЛГ – рух

рух

Алгоритми, при виконанні яких порядок проходження команд визначається залежно від результатів перевірки деяких умов, називають розгалуженими.Для їх опису в алгоритмічній мові використовують спеціальну складову команду – команду розгалуження.Стосовно виконавця-роботу умовою може бути перевірка знаходження робота біля краю робочого поля (край/не_край); перевірка наявності об'єкта в поточній клітці (є/ні) та деякі інші:

ЯКЩО умова ЯКЩО умова ЯКЩО край

ТО серія1 ТО серія ТО праворуч

Інакше серія2 все інакше вперед

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

За умови 1: серія 1

За умови 2: серія 2

За умови N: серія N

Інакше серія N+1

Алгоритми, у виконанні яких окремі команди чи серії команд виконуються неодноразово, називають циклічними. Для організації циклічних алгоритмів алгоритмічною мовою використовують спеціальну складову команду циклу. Вона відповідає блок-схем типу «ітерація» і може набувати наступного вигляду:

Поки що умова НЦ

серія ДО умова

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

Назва "алгоритм" походить від латинської форми імені середньоазіатського математика аль-Хорезмі - Algorithmi. Алгоритм - одне з основних понять інформатики та математики.

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

Виконавця характеризують:

елементарні дії;

система команд;

Середа (або обстановка) - це "місце проживання" виконавця. Наприклад, для виконавця Робота зі шкільного підручника середовище - це нескінченне клітинне поле. Стіни і зафарбовані клітини теж частина середовища. А їх розташування та положення самого Роботу задають конкретний стан середовища.

Кожен виконавець може виконувати команди лише з деякого строго заданого списку - системи команд виконавця. Для кожної команди повинні бути задані умови прийнятності (в яких станах середовища може бути виконана команда) та описані результати виконання команди. Наприклад, команда Роботи "вгору" може бути виконана, якщо вище Роботи немає стіни. Її результат - зміщення Робота на одну клітинку вгору.

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

Відмови виконавця виникають, якщо команда викликається при неприпустимому для неї стані середовища.

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

У інформатиці універсальним виконавцем алгоритмів є комп'ютер.

Основні властивості алгоритмів такі:

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

Дискpетність (перервність, роздільність) - тобто. Алгоритм повинен представляти процес вирішення завдання як послідовне виконання простих (або раніше визначених) кроків (етапів).

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

Результативність (або кінцівка). Ця властивість полягає в тому, що алгоритм повинен призводити до вирішення задачі за кінцеве число кроків.

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

Насправді найбільш поширені такі форми представлення алгоритмів:

словесна (записи природною мовою);

графічна (зображення із графічних символів);

псевдокоди (напівформалізовані описи алгоритмів умовною алгоритмічною мовою, що включають як елементи мови програмування, так і фрази природної мови, загальноприйняті математичні позначення та ін);

програмна (тексти мовами програмування).

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

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

Алгоритм може бути наступним:

задати два числа;

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

визначити більше із чисел;

замінити більше з чисел різницею більшого та меншого з чисел;

повторити алгоритм із кроку 2.

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

Словесний спосіб не має широкого поширенняза наступних причин:

такі описи строго не формалізуються;

страждають на багатослівність записів;

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

Графічний спосіб представлення алгоритмів є компактнішим і наочним порівняно зі словесним.

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

Таке графічне уявленняназивається схемою алгоритму чи блок-схемою.

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

У таблиці 1 наведені найчастіше вживані символи.

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

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

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

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

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

Він займає проміжне місце між природною та формальною мовами.

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

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

Прикладом псевдокода є шкільна алгоритмічна мова у російській нотації (шкільний АЯ), описаний у підручнику А.Г. Кушніренко та ін. "Основи інформатики та обчислювальної техніки", 1991. Цю мову надалі ми називатимемо просто "алгоритмічна мова".

Основні службові слова

Загальний вид алгоритму:

алг назва алгоритму (аргументи та результати)

дано умови застосування алгоритму

треба мета виконання алгоритму

нач опис проміжних величин

| послідовність команд (тіло алгоритму)

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

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

Приклади пропозицій алг:

алг Об'єм і площа циліндра (арг речей R, H, рез речей V, S)

алг Коріння КвУр(арг речей а, b, c, різ речей x1, x2, рез літ t)

алг Виключити елемент(арг цілий N, арг рез речей таб А)

алг Діагональ(арг цілий N, арг цілий таб A, рез літ Otvet)

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

алг Заміна (арг літ Str1, Str2, арг рез літ Text)

дано | довжини підрядків Str1 та Str2 збігаються

треба | скрізь у рядку Text підрядок Str1 замінено на Str2

алг Число максимумів (арг цілий N, арг речей таб A, рез цілий K)

дано | N>0

треба | К – число максимальних елементів у таблиці А

алг Опір (арг речей R1, R2, арг цілий N, рез речей R)

дано | N>5, R1>0, R2>0

треба | R - опір схеми

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

Алгоритми можна як деякі структури, які з окремих базових (тобто. основних) елементів.

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

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

Логічна структура будь-якого алгоритму може бути представлена ​​комбінацією трьох базових структур:

слідування,

розгалуження,

Характерною особливістю базових структур є наявність у них одного входу та одного виходу.

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

Для вивчення основ алгоритмізації застосовується так званий Російська алгоритмічна мова(Шкільна алгоритмічна мова), що використовує зрозумілі школяреві слова російською мовою.

Алголо-подібна алгоритмічна мова з російським синтаксисом була введена у вжиток академіком А. П. Єршовим у середині 1980-х років, як основа для «безмашинного» курсу інформатики.

Основні службові слова алгоритмічної мови

Опис алгоритму

  • алг(алгоритм)
  • арг(аргумент)
  • рез(Результат)
  • поч(початок) - початок алгоритму
  • кін(кінець) - кінець алгоритму
  • дано- Вихідні дані в довільній формі
  • треба- Мета алгоритму

Типи даних:

  • ціл(цілий)
  • речей(речовий)
  • цим(символьний)
  • літ(літера) - рядок
  • лог(логічний)
  • таб(Таблиця) - для позначення масиву
  • довжин(довжина) - кількість елементів масиву

Позначення умов

  • якщо
  • інакше
  • вибір
  • знач

Позначення циклів

  • нц(початок циклу)
  • кц(кінець циклу)
  • поки що

Логічні функції та значення для складання виразів

Ввід вивід

  • введення
  • висновок

Загальний вид алгоритму

1
2
3
4
5
6

алгназва алгоритму (аргументи та результати)
| даноумови застосування алгоритму
| требамета виконання алгоритму
почопис проміжних величин
| послідовність команд (тіло алгоритму)
кін

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

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

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

Основні алгоритмічні структури

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

| якщоумова
| | тодії
| всі

Повна розвилка

1
2
3
4
5

| якщоумова
| | тодії 1
| | інакшедії 2
| всі

Розгалуження

1
2
3
4
5
6
7
8

| вибірпараметр
| | при значзначення 1
| | | дії 1
| | при значзначення 2
| | | дії 2
| | інакше
| | | дії за умовчанням
| всі

Цикл із передумовою

| нц покиумова
| | дії
| кц

Цикл із постумовою

Найчастіше інструкції складають у вигляді запису алгоритмічною мовою. Він необхідний для точних розпоряджень всіх кроків та їх виконання. Між шкільною алгоритмічною мовою та мовами програмування є явні відмінності. Як правило, як виконавець у першому варіанті виступає не тільки комп'ютер, але й інший пристрій, який здатний виконувати роботу. Будь-яка програма, написана алгоритмічною мовою, не обов'язково повинна здійснюватися технікою. Реалізація всіх інструкцій практично є суто окремим питанням. Нижче також буде розглянуто опис алгоритму алгоритмічною мовою. Воно допоможе розібратися із пристроєм даної системи.

Вивчення у школі

Найчастіше в школах вивчається алгоритмічна мова, найбільш відома як навчальна. Він набув масштабного поширення завдяки тому, що в ньому використовуються максимально зрозумілі для будь-якого учня слова. Подібна мова з синтаксисом російською була введена давно, а саме в середині 1980-х років. Його застосовували для того, щоб дати основу школярам та викладати їм без комп'ютера курс інформатики. Опубліковано дана мовабув у 1985 році в одному з підручників. Також його передрукували кілька разів і для спеціальних книг, які призначалися для навчання у 9 та 10 класах. Загальний тираж видання становив 7 млн ​​екземплярів.

Послідовність запису алгоритму

Насамперед необхідно записати буквосполучення АЛГ. Далі слідує назва алгоритму. Потім після НАЧ слід описати серію команд. Оператор КОН означає кінець програми.

Опис алгоритму алгоритмічною мовою:

АЛГ Компанія

НАЧ

поворот на 90 градусів вліво

КОН

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

Складання алгоритмів

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

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

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

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

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

E-практикум

Для того, щоб удосконалити вивчення теорії з граматичної мови, професіонали мехмата МДУ в 1985 створили спеціальний компілятор. Він отримав назву "E-практикум". З його допомогою можна було вводити, змінювати та виконувати програми. Наступного року було випущено певний комплект виконавців. Мова йдепро «Роботу», «Кресляря», «Двоногом», «Всюдиході». Це дозволило легко і легко реалізовувати алгоритми. Цей компілятор набув великого поширення, був використаний на деяких комп'ютерах. Досить довгий часця мова програмування допрацьовувалась і змінювався. У 1990 році його пізніший варіант з'явився в підручнику.

Кумир

Зараз шкільна алгоритмічна мова переживає своє друге народження, після того, як було розроблено спеціальний пакет «Кумир» для Windows та Linux. Система функціонує із кількома виконавцями. Класичними серед них є «Робот», «Креслярник». Цей же пакет входить до інсталяційний файл Linux "Шкільний". Ця системарозроблено було спеціально на замовлення Російської Академії наук. Вона поширюється безкоштовно та вільно. Останні кілька років мову, що описується, активно пропонують використовувати в ЄДІ як одну з

Призначення мови

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

Відмінності машинної та алгоритмічної мов

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

Стандартні функції

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

  • абсолютний модуль abs(X);
  • корінь квадратний sqrt (X);
  • натуральний та ln(X), lg(X);
  • мінімум та максимум min (X,Y), max (X, Y);
  • тригонометричні функції sin(X), cos(X), tg(X), ctg(X).

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



Сподобалася стаття? Поділіться їй