- •Лекція 0.1.
- •1. Вступ.
- •2. Програмування - що це? Наука, мистецтво, ремесло.
- •3. Мислення і властивості програміста
- •4. Загальні завдання курсу
- •5. Технології, методи і підходи до програмування
- •Імперативне програмування
- •6. Структурне програмування, як основа для вирішення більшості завдань
- •7. Завдання та мови для їх вирішення
- •Лекція 2. Основи алгоритмізації
- •Тема 4. Цикли
- •Відповідність між блок-схемами, алгоритмічною мовою,і лексичними конструкціями с.
- •Монітори з електронно-променевою трубкою (crt Cathode Ray Tube)
- •Основні характеристики електропроміневих моніторів
- •Рідкокристалічні дисплеї (tft lcd. Thin Film Transistor Liquid Crystal Display)
- •Основні характеристики рідкокристалічних дисплеїв
- •Переваги рідкокристалічних дисплеїв перед епт моніторами
- •Недоліки рідкокристалічних дисплеїв
- •Плазмові панелі (pdp Plasma Display Panel)
- •Головні недоліки плазмових панелей:
- •Сенсорні екрани (Touch Screen)
- •Застосування в багатьох областях:
- •Сенсорний екран складається з:
- •Переваги сенсорних екранів
- •Недоліки
- •Лазерні принтери
- •Світлодіодні принтери
- •Струменеві принтери
- •Матричні принтери
- •Тема 6.
- •Тема 6. Лекція №6.2 "Основи мови Сі"
- •Уведення-виведення
- •Пріоритети операцій
- •Лекція №7 " Оператори мови Сі і прийоми програмування " Оператори мови Сі
- •4.1. Оператор виразу
- •4.2. Порожній оператор
- •4.3. Складений оператор
- •4.4. Оператор іf
- •4.4.6. Оператор break
- •4.4.7. Оператор for
- •4.8. Оператор whіle
- •4.9. Оператор do whіle
- •4.10. Оператор contіnue
- •4.11. Оператор return
- •4.12. Оператор goto
- •Директиви Препроцесора
- •8.1. Директива #іnclude
- •8.2. Директива #defіne
- •8.3. Директива #undef
- •Лекція 3. "Процедури і функції"
- •Лекція 4. "Покажчики і Рекурсія"
- •12. Рекурсія
- •Лекція 13. Покажчики в c
- •Іспит На кінець місяця студенти повинні знати:
- •Уміти вирішувати завдання:
- •Лекція №14 "Символьних рядків"
- •Іспит На іспит студенти повинні знати:
- •Уміти вирішувати завдання:
- •Іспит На іспит студенти повинні знати:
- •Уміти вирішувати завдання:
- •Тиждень 3
- •Тиждень 4
- •Тиждень 1
- •Тиждень 2
- •Іспит На іспит студенти повинні знати:
- •Уміти вирішувати завдання:
6. Структурне програмування, як основа для вирішення більшості завдань
Структурне програмування - методологія розробки програмного забезпечення, в основі якої лежить уявлення програми у вигляді ієрархічної структури блоків. Запропоновано в 70-х роках XX століття Е. Дейкстри, розроблена і доповнена Н. Віртом.
У відповідності з цією методологією
Будь-яка програма являє собою структуру, побудовану з трьох типів базових конструкцій:
послідовне виконання - однократне виконання операцій в тому порядку, в якому вони записані в тексті програми;
розгалуження - однократне виконання однієї з двох або більш операцій, в залежності від виконання деякої заданої умови;
цикл - багаторазове виконання однієї і тієї ж операції до тих пір, поки виконується деяка задана умова (умова продовження циклу).
У програмі базові конструкції можуть бути вкладені одна в одну довільним чином, але ніяких інших засобів управління послідовністю виконання операцій не передбачається.
Повторювані фрагменти програми (або не повторюються, але представляють собою логічно цілісні обчислювальні блоки) можуть оформлятися у вигляді т. н. підпрограм (процедур або функцій). У цьому випадку в тексті основної програми, замість поміщеного в підпрограму фрагмента, вставляється інструкція виклику підпрограми. При виконанні такої інструкції виконується викликана підпрограма, після чого виконання програми продовжується з інструкції, наступної за командою виклику підпрограми.
Розробка програми ведеться крок за кроком, методом «зверху вниз».
Спочатку пишеться текст основної програми, в якому, замість кожного зв'язкового логічного фрагмента тексту, вставляється виклик підпрограми, яка буде виконувати цей фрагмент. Замість справжніх, працюючих підпрограм, в програму вставляються «заглушки», які нічого не роблять. Отримана програма перевіряється та налагоджується. Після того, як програміст переконається, що підпрограми викликаються в правильній послідовності (тобто загальна структура програми вірна), підпрограми-заглушки послідовно замінюються на реально працюючі, причому розробка кожної підпрограми ведеться тим же методом, що і основної програми. Розробка закінчується тоді, коли не залишиться жодної «затички», яка не була б видалена. Така послідовність гарантує, що на кожному етапі розробки програміст одночасно має справу з доступним для огляду і зрозумілим йому безліччю фрагментів, і може бути впевнений, що загальна структура всіх більш високих рівнів програми вірна. При супроводженні та внесення змін у програму з'ясовується, в які саме процедури потрібно внести зміни, і вони вносяться, не зачіпаючи частини програми, безпосередньо не пов'язані з ними. Це дозволяє гарантувати, що при внесенні змін та виправленні помилок не вийде з ладу якась частина програми, що знаходиться в даний момент поза зоною уваги програміста.
Теорема про структурне програмування:
Ця теорема була сформульована італійськими математиками К.Бомом і Дж.Якопіні в 1966 році і говорить нам про те, як можна уникнути використання оператора переходу goto.
Яку схему алгоритму можна представити у вигляді композиції вкладених блоків begin і end, умовних операторів if, then, else, циклів з передумовою (while) і може бути додаткових логічних змінних (прапорів).
Історія
Методологія структурного програмування з'явилася як наслідок зростання складності розв'язуваних на комп'ютерах завдань, і відповідного ускладнення програмного забезпечення. У 70-ті роки XX століття обсяги і складність програм досягли такого рівня, що «інтуїтивна» (неструктурована, або «рефлекторна») розробка програм, яка була нормою в більш ранній час, перестала задовольняти потребам практики. Програми ставали занадто складними, щоб їх можна було нормально супроводжувати, тому потрібна була якась систематизація процесу розробки та структури програм.
Найбільш сильній критиці з боку розробників структурного підходу до програмування піддався оператор GOTO (оператор безумовного переходу), наявний тоді майже у всіх мовах програмування. Неправильне і необдумане використання довільних переходів в тексті програми призводить до отримання заплутаних, погано структурованих програм (т.з. спагетті-коду), за текстом яких практично неможливо зрозуміти порядок виконання і взаємозалежність фрагментів.
Дотримання принципів структурного програмування зробило тексти програм, навіть досить великих, нормальних для читання. Серйозно полегшилось розуміння програм, з'явилася можливість розробки програм в нормальному промисловому режимі, коли програму може без особливих труднощів зрозуміти не тільки її автор, але й інші програмісти. Це дозволило розробляти досить великі для того часу програмні комплекси силами колективів розробників, і супроводжувати ці комплекси протягом багатьох років, навіть в умовах неминучих змін у складі персоналу.