Використання вказівників та посилань для передачі параметрів.

Алгоритми.

Алгоритм-це скінченна кількість дій,або правил,виконання яких забезпечує розв’язування задачі конкретного класу за скінченну кількість кроків.Існує 3 способи подання алгоритмів:1)вербальний ,або описовий(у ньому правила задаються реченнями);2)схематичний (у вигляді блок-схеми);3)програмною або алгоритмічною мовою. Схематично для запису певного алгоритму використовують блок-схеми,які складаються з блоків і з’єднань між собою.Блоки визначають певні операції а з’єднання-послідовність їх виконання.1Використовуються наступні блоки:овал,прямокутник-означає введення даних,ромб,прямокутник з хвилястою лінією в кінці-означає виведення даних.

 

Оператори розгалуження.

Алгоритмами(програмами)з розгалуженнями наз.алгоритми,в яких деяка частина дій викон.або невикон.в залежності від виконання додаткових умов.В мові С існує три типи розгалуження:оператори умовної дії(спочатку іде умова,потім дія),послідовність дій можна записати в одному рядку,або в декількох рядках,кожен оператор завершується;.В мові С всі програмні ключові слова пишуться прописними буквами.Умова if в операторах задається будь-яким логічним бульовим виразом.При цьому false-умова не виконується,true-умова виконується.Оператори альтернативного виконання використ.у випадках,коли за перевіркою деякої умови потрібно виконати одну з двох можливих дій.22.Вкладені розгалуження.У випадках,коли потрібно здійснити послідовно декілька умовних перев.використовують вкладені оператори if,якщо в програмі є вкладені альтернативні розгалуження то можуть статися алгоритмічні помилки логічного типу,бо компілятор завжди відносить конструкцію else до найближчого оператора if,який не завжди може співпадати.Для виконання розгалуження з вкладеними операторами if використовують дужки які стосуються певного блоку.

Технологія роботи з папками і файлами.

До директив припроцесора відносяться:директива підключення допоміжних файлів#include<file>.Допоміжні файли бувають 2 типів:програмні і заголовні файли.Заголовні файли-спеціальні файли,які здійснюють зв'язок з бібліотеками.Основні заголовні файли які ми використовуємо для роботи:stdio.h-файли операцій вводу-виводу, conio.h-допоміжні операції вводу-виводу, math.h-файли для математичних операцій.Препроцесор-програма,яка опрацьовує текстовий файл перед компіляцією.

 

 

Цикли.

Циклічними наз.алгоритми (програми), в яких деяка група операторів може повторюватись послідовно.Розрізняють три типи циклів:цикли з початковою умовою. Умова задається математичним виразом з результатом бульового типу:true або false. Результат може бути цілого типу. Умова та дія повинні бути зв’язані між собою так, щоб на кожному кроці циклу умова не виконувалась ,інакше цикл не закінчиться і програма зависне. В циклах з попередньою умовою можливі ситуації, коли оператори циклу не виконуються жодного разу, тоді використовують цикли з кінцевою умовою. Умова теж задається результатом бульового типу . Дія і умова повинні бути пов’язані між собою так, що на деякому кроці програми умова з повторенням перестає виконуватись, інакше програма зависає. Універсальний цикл:у багатьох програмах використовується так званий цикл з лічильником. Він дозволяє пронумерувати кроки цикла і виконувати їх послідовно від початкового до кінцевого значення в спадному (зростаючому) порядку. Оператори,які формують структуру універсального цикла діляться на 4 групи:група ініціалізації,група умов,група дій керування циклом,група дій циклу.Перші дві групи складаються з операторів,розділених комою.Група дій циклу склад.з декількох операторів,розділених ; якщо більше одного оператора то її виділяють блоком.

 

Масиви.

Масивом називається група однотипних даних з компактним розміщенням ,спільною назвою та пронумерованими елементами.К-ть змінних називається розміром масива. Порядковий номер елемента називають індексом. Нумерація елементів здійсн. Цілими числами,починаючи з 0.В мові С не відбув.автоматична перевірка індексів,тому адресація елементів при алгоритм.може привести до порушення «чужої» памяті. Окремий елемент в масиві задається назвою масива та його поточним індексом. Індекс визначається числовим значенням, значенням іменованої константи,значенням змінної.. Організація циклів для введення і відображення одновимірних масивів. В деяких задачах з масивами їх розмір заданий наперед,тобто є фіксованим,тоді розміри та цикли обробки можна задавати безпосередньо числами.Якщо при різних запусках програми можливі різні розміри реальних масивів то розмір під час опису задається за макс. очікуваним значенням,а для визначення реального поточного розміру вводиться додаткова змінна.Введення масиву можна здійснити в декількох режимах :а)просте введення елем. масиву, б)діалоговий режим введення елементів-використовується для заповнення масиву поелементно. Введення 1 елем.складається з запиту та відповіді.printf та scanf .Відображення елем масиву здійснюється в одному рядку,групами по декілька в рядок і по одному елементу в рядок. Якщо масив дуже великий і не поміщається в один рядок то він сегментується по рядках, інколи помилково.

Використання вказівників та посилань для передачі параметрів.

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

 

Алгоритми.(лінійного пошуку,половинного поділу і золотого перерізу). Процеси пошуку конкретного значення у великих масивах інформації вик.в багатьох задачах обліку,аналізу, прогноз, диспетчерських задачах. Ефективність алгоритмів безпосередньо впливають на швидкість,або оперативність обробки даних. Застосування різних алгоритмів пошуку залежить від типу збереженої інформації та її попередньої обробки. До пошуку даних відносять процес визначення чи у збереженому масиві існує елем. з конкретним значенням,а якщо існує, потрібно визначити на якій позиції в масиві він розміщений. Нариклад в масиві до пошуку даних відносять процес визначення того чи у масиві існує елемент з конкретним значенням і якщо він є то зясувати на якій позиції він розміщений. У впорядкованому масиві можна знаходити такий елемент поділивши масив на дві частини і проходячи їх,порівнюючи значення. Такий алгоритм наз.алгор. половинного поділу .У випадку коли масив великого розміру ,а операцію пошуку ми застосовуємо багато разів ефективність алгор. зменшується. Ефективність можна покращити за рахунок нерівномірного розбиття. а:а+b=b:а-алгоритм золотого перерізу

Поняття впорядкування масивів.Процес перестановки елементів в масиві називається впорядкуванням ,або сортуванням. Класифікація проводиться за кількістю операцій порівняння та присвоєння при сортуванні масивів однакового розміру. Розглядають повільні «жадібні» та швидкі алгоритми впорядкування. Повільні, або звичайні алгоритми впорядкування прості для реалізації ,не вимагають додаткових ресурсів,але при цьому к-ть операцій порівняння та присвоєння має порядок N, де N-розмір масива. До них відносять сортування методом бульбашки,метод перестановки максим. або мінім.елемента та метод вставки (зсуву)елементів. Впорядкування вибором полягає у пошуку максим . елемента в поточній ділянці масиву,та його перестановки з останнім елементом ділянки. Аналіз ефективності: алгоритми впорядкування можна покращити 2 методами: 1)замінити внутрішній for на while (тобто зсувати поточний елемент вліво поки не виконається умова)2) замість зсуву елемента знайти його місце і зробити вставку.

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

 

 

Передача параметрів у функціях. Параметри значення та параметри адреси. При зверненні до ф-ї вказ. тільки назва ф-ї і перелічуються фактичні параметри, які реально передаються ф-ї як вхідні значення.Формальні та фактичні параметри передаються за значенням та за адресою. Якщо в прототипі формальні параметри відповідають скалярним значенням, то при зверненні відповідними фактичними параметрами можуть бути :безпосередні числові,або текстові дані, іменовані константи,змінні,математичні вирази. Параметри значення використовуються тільки у внутрішніх обчисленнях ф-ї,параметри адреси-використовуються для повернення додаткових значень у ф-ю,яка викликається. У мові С будь-які масиви передаються за адресами.

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

 

Дерева.Бінарні дерева.Інформаційна структура»дерево» подібно до списку склад.з інформ.ел.що містить інформаційну частину та систему зв’язків ,але система зв’язків специфічна.Кожний інформаційний елемент зв’язаний з попереднім елем.»вхідним» зв’язком і зв’язаний з декількома елем.наступного рівня.Стартовий показ.на 1 елем.дерева,поточний-на поточни елем. в дереві.Дерево складається з:коріння дерева-стартовий вказівник,вузол-елем. в якому хоча б 1 вихідний зв'язок непорожній,листя-елем.,в якому всі вихідні вказ. порожні.Деревовидні ієрарх.структури даних здійсн.для швидкого пошуку інформації.Найбільш розповсюджені-бінарні дерева,в яких кожен елемент пов'язаний вхідним зв’язком з елементами попер. Рівня та 2-ма зв’язками з елем. наступного рівня.

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

 

 

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

12.Файлова інформація.Засоби С для обробки файлів.Якщо об’єми інформації великі а робота програми передбачає багатократне введ.інформ.то стандартне введ.-виведення стає малоефективним.В таких випадках обмін інформації між програмою і користувачем здійснюється через зовнішні файли.Тобто,файл-означає систему впорядкованих записів.Єтакі види файлів:за типом-виконавчі файли,за формою обробки програм-логічні і фізичні файли. Стандартними засобами С для роботи програм з текстовими файлами:Мова С не виділяє окремо файлів прямого і послідовного доступу. Стандартна бібліотека для файлів stdio.У цій бібліотеці є засоби які виконують тільки послідовний доступ. Взаємодія програми з текстовими файлами склад. з 3 кроків:опис файлового дискриптора ,здійснення зв’язків між дескриптором і фізичним файлом. Назва файлу складається з:розширення, прямої назви,та шляху розміщення. Текстовий файл-файл,який містить послідовності символів. Графічні файли-містять інформацію про зображення , володіють власним форматом.