Програма

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

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

Але комп’ютер може виконати програму, тільки якщо вона представлена у машинному коді – послідовності чисел. Людині написати програму у машинному коді досить важко. Тому сьогодні всі програми створюються за допомогою мов програмування, які наближені до мови людини. Цих мов багато: Бейсік, Паскаль, Делфі, Сі та багато інших.

Один і той же алгоритм може бути записаний на будь-який мові програмування!

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

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

 

 

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

Базові структури алгоритмів (керуючі структури) – це способи керування процесом обробки даних.

Існує три базові структури алгоритмічної конструкції:

1. лінійні алгоритми (слідування)

2. умова (розгалуженя)

3. цикли (повторення)

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

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

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

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

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

- Цикл із параметром

Способи опису алгоритмів:

- Словесний

- Формульний

- Графічний

- Алгоритмічною мовою

Задача: знайти корені квадратного рівняння ах2+bх+с=0

Словесний:

1. Розпочати процес обчислень

2. Визначити a,b,c

3. Обчислити D =b2+ac

4. Якщо D >0, то перейти на крок 8 інакше на крок 5

5. Обчислити

6. Вивести на екран X 1 X2

7. Перейти на крок 9

8. Вивести повідомлення про те, що коренів немає.

9. Завершити процес обчислень.

Формульний

Графічний

 

1

Початок

 
 


2

a,b,c

так

D =b2+ac

4 5

D >0 так

8 ні

Рішень немає 6

Вивести х1­ х2

 
 


9

Кінець

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

           
 
Виконати дію А
 
Виконати дію В
 
Виконати дію N


.....

 

Умова(розвилка, розгалуження) – означає перевірку значення логічного виразу(ЛВ) та вибір одного з двох варіантів дій, залежно від значення ЛВ. В ЛВ можуть використовуватися логічні операції «НЕ» «І» «АБО». ЛВ може набувати одного з двох значень – істина чи хиба.

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

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

 

 

х<>0

 

так ні

 

y = 0

 

 

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

 
 


Ні

 
 


Так

 
 

 

 


Цикл означає повторення виконання тієї самої дії, або блока дії, що звуться тілом циклу, доти, поки певний ЛВ лишатиметься істинним.

  1. « цикл – поки», або цикл з передумовою,

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

На першому кроці перевіряється значення ЛВ. І< n

Якщо воно є істинним – виконується тіло циклу.

Потім на другому кроці знову перевіряється значення ЛВ s=s+a1

і якщо воно істинне знову виконується тіло циклу.

Цикл завершується, коли значення ЛВ стає помилковим. I=i+1

В тілі циклу повинні бути команди, які змінюють

значення величини, яка входить в ЛВ.В циклі

використовують лічильник циклів, який рахує кроки циклу.

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

 

2. « цикл – до», або цикл з післяумовою,

(умова перевіряється після виконанням циклу). s=s +a1

Це означає, що тіло циклу – добуде виконано .

принаймні один раз. « цикл – до» повторюється

доти, поки значення ЛВ є помилковим, і I = i + 1

завершується коли воно стає істинним.

I > n

 

 

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

  • лінійні;
  • розгалужені;
  • циклічні;
  • змішані.

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

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

  • проснутися;
  • зробити ранковий туалет;
  • одягнутися;
  • поснідати;
  • зібрати речі;
  • одягнути верхній одяг;
  • вийти до школи.

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

Тепер розберемось, що ж таке умова з точки зору виконавця. Умовою називається таке речення, на яке можна дати відповідь "так" чи "ні". Як правило, кажуть, що в першому випадку (коли ми відповіли на речення "так") умова являється істиною, а в другому хибною.
Виходячи з цього, речення "Якого кольору твій піджак?" не можна вважати умовою, а речення "Твоє волосся русяве?" - можна.
Примітка: На цьому етапі можна запропонувати дітям пограти і придумати речення, що можна вважати умовами, а потім перефразувати їх так, щоб вони стали помилковими і запропонувати дітям знайти помилки.
Дуже часто в житті ми змушені враховувати велику кількість найрізноманітніших умов. Наприклад, ми йдемо гуляти на вулицю, якщо "мама відпустила" та "гарна погода", а ще якщо "подруга покликала". Уроки ми робимо, якщо знов таки "мама примусила" або "тато лається" або "вчителька дуже сувора". Такі умови в інформатиці називаються складеними. Вони містять кілька простих умов і об'єднуються між собою словами "або" або "та".
Перше з цих слів ("або") використовується у тих випадках, коли необхідно виконання хоча б однієї з умов, тобто хоча б одна з умов являється істиною. Наприклад, діти залишаються вдома (не йдуть до школи), якщо "сьогодні вихідний" або "сьогодні канікули" або "сьогодні свято" або "дитина хвора". Ясно, що зовсім не обов'язково, щоб сьогодні були одночасно і канікули, і свято, і вихідний та ще й хвороба, щоб не піти до школи.
Друге слово ("та"), навпаки, використовується лише в тих випадках, коли тільки одночасне виконання всіх умов призводить до результату. Наприклад, тільки у випадку вже зроблених домашніх справ та виконаних домашніх завдань та гарної погоди у нас є надія, що мама дозволить погуляти з подругою.
Примітка: На цьому етапі уроку теж рекомендується дати відпочити дітям і пограти з ними в гру "Чи виконається подія, якщо?", запропонувавши кілька умов, що повинні виконуватися одночасно або по черзі.
Однак, навіть маючи в своєму арсеналі команду розгалуження, важко реалізувати алгоритми, що потребують багаторазового повторення деякої послідовності однакових дій. В цих випадках нас виручає циклічний алгоритм.
У нашому житті дуже часто зустрічаються алгоритми з повторами, причому чітко визначаються два типи повторів. В одному випадку ми чітко знаємо, скільки разів необхідно повторити задану послідовність команд, а в іншому - ні.
Наприклад, в першому класі вчителька дає завдання дітям: "Діти, напишіть, будь ласка, в зошитах десять цифр "1", а потім рядочок цифр "2". Чим відрізняються ці два завдання? В першому випадку дитина отримала чітку вказівку написати десять одиниць, а в другому - ця вказівка була не точною (рядочок двійок). Чому другий випадок не такий точний? Тому що кількість отриманих кожним учнем цифр буде залежати від їх власного почерку: одні учні пишуть охайно маленькими цифрами, інші - неохайно величезними кривулями.
В залежності від того, чи знаємо ми скільки разів необхідно повторювати якусь послідовність команд розрізняють цикли з лічильником (кількість повторень відома заздалегідь) та цикли з умовою (цикл робиться доки не виконається якась умова).
Примітка: Знов запропонуйте дітям пофантазувати і придумати ситуації, коли можна визначити кількість повторень, а коли не можна.
Крім того, в циклах з умовою теж можна виділити два різних випадки:

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

Мовою блок-схем обидва типи циклів виглядають наступним чином:

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

 

ІV. Поняття та типи констант

 

Строковийий міноносний має тип char[]

 

V. Проста змінна, ідентифікатор

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

Идентификатор - последовательность символов и цифр, служащая для обозначения переменных, новых имен типов и т.п. Допустимыми символами являются: 'A'-'Z', 'a'-'z','_', '0'-'9'. Цифра не может быть первым символом.

Идентификатор не может совпадать с ключевым словом или литералами. С одной стороны каждая реализация С++ имеет свой набор ключевых слов, отличающийся в основном расширенными возможностями. С другой стороны не все нововедения в стандарте С++ сразу же поддерживаются разработчиками компиляторов. Ниже приведен примерный список ключевых слов.

asm do if return try
auto double inline short typedef
bool dynamic_cast int signed typeid
break else long sizeof typename
case enum mutable static union
catch explicit namespace static_assert unsigned
char export new static_cast using
class extern operator struct virtual
const false private switch void
const_cast float protected template volatile
continue for public this wchar_t
default friend register throw while
delete goto reinterpret_cast true  

 

Переменная в языке си - это именованная область памяти, в которой содержится определенное значение.

тип имя переменной [= значение];

Рассмотри подробнее каждый элемент синтаксиса переменной:

1. тип: размер выделяемой памяти;

2. имя переменной: любое английское название;

3. значение: (необязательный параметр) можно сразу присвоить определенное значение для нашей переменной;

int a,b,c; /* Объявляем три переменные типа int без указания имени */

float d = 2.01, f; /* Одну переменную просто объявляем, а вторую инициализируем значением */