Введення в програмування мовою Сі
Назва роботи: Введення в програмування мовою Сі
Предметна область: Інформатика, кібернетика та програмування
Опис: Вступ Ласкаво просимо у світ мови програмування Сі, яка за час свого існування – близько 40 років – вже встигла стати класичною, проте її актуальність безсумнівна й донині. Мова Сі популярна як серед професіоналів.
Дата завантаження: 2012-11-18
Розмір файлу: 33.45 KB
Роботу завантажили: 10 чол.
Ласкаво просимо у світ мови програмування Сі, який за час свого існування – близько 40 років – вже встиг стати класичним, проте його актуальність безсумнівна і донині. Мова Сі популярна як серед професіоналів, які розробляють комерційне програмне забезпечення, так і серед програмістів-аматорів, для яких програмування - це улюблене хобі. Мова програмування Сі була створена в 1972 році і спочатку призначалася для розробки програм під операційною системою UNIX. Поступово ця мова поширилася і на інші операційні системи, набувши широкої популярності завдяки своїй спрямованості на вирішення практично важливих завдань, тоді як, наприклад, Pascal або Basic служили в основному навчальним цілям.
Чому ж мова Сі з роками не втратила своєї актуальності? Одна з причин полягає в тому, що синтаксичні конструкції багатьох інших сучасних мов програмування, що з'явилися пізніше, дуже сильно нагадують синтаксис мови Сі. Тут йдеться про такі мови, як Java, C#, PHP та ін. Ще одна улюблена і використовувана багатьма мова C++ отримана з Сі з додаванням до неї засобів об'єктно-орієнтованого програмування. Таким чином, вивчення мови Сі може виявитися однією з перших сходинок на шляху до розуміння мистецтвапрограмування. Освоївши його, можна сміливо приступати до освоєння цих мов, вже маючи в запасі багато необхідних знань.
Мова Сі - це мова середнього рівня, що поєднує в собі як деякі елементи високорівневих мов, так і низькорівневі операції. Зокрема, він дозволяє легко оперувати з байтами та бітами, а також працювати з пам'яттю безпосередньо, використовуючи покажчики. Крім того, мова Сі легко переноситься, тобто написаний під одну операційну систему код може бути відкомпільований в інший. Розглянуті та інші переваги роблять мову Сі підходящим засобом розробки низки додатків, наприклад, компіляторів.
Однак виправлення всіх синтаксичних помилок це далеко не все: існують ще й алгоритмічні помилки, при виправленні яких компілятор не помічник. Алгоритмічна помилка - це ситуація, коли програма запускається, але робить не те, що потрібно. Такі помилки програмісти називають багами (англ. bug, помилка, дефект, блоха). Причому добре, якщо програміст бачить, що програма працює не так. Найчастіше трапляється, що помилки можуть бути приховані і спливуть у невідповідний момент. Виправляти такі помилки можна лише, аналізуючи алгоритм, згідно з яким написана програма. Процес виправлення помилок називається налагодженням. Фраза "Виправити помилку" англійською мовою звучить як "to fix a bug", тому програмісти часто говорять фіксувати або фіксувати баги. У програмуванні взагалі багато подібних жаргонних фраз, оскільки більшість нововведень прийшли до нас з-за кордону.
Програмування стає по-справжньому захоплюючим, коли програміст відчуває, що комп'ютер виконує саме те, що від нього хоче людина. Мова програмування - це засіб, що дозволяє донести до машини наші думки,але не більше. Будь-який з нас зустрічав людину, яка знає українську мову і говорить багато, але зрозуміти її ми не можемо, оскільки викладені нею думки плутаються. Ми відчуваємо, що людина погано продумала свою мову, тому треба спочатку думати, а потім говорити. Аналогічно і в програмуванні: якщо перед вами стоїть завдання написати програму, потрібно попередньо продумати (у голові або на папері) алгоритм цієї програми. Поганий той програміст, який, отримавши завдання, відразу ж починає написання програми без попереднього обмірковування.
Вивчати мову програмування, не маючи уявлення про алгоритми, неможливо, проте надто глибоке занурення в цю тему також ускладнить засвоєння матеріалу. З цієї причини ми постараємося дотриматися балансу між вивченням мови Сі у чистому вигляді та розглядом фундаментальних алгоритмів і структур даних. Будуть розглянуті найважливіші речі, які у тому чи іншому вигляді зустрічаються у багатьох практично значущих програмах.
Отже, всі приготування закінчені, і настав час приступати до захоплюючої справи програмування мовою Сі.
Навіщо потрібне програмування?
Одне з головних призначень комп'ютера - це звільнення людей від трудомісткої та рутинної роботи, яка щоразу виконується однаково з відмінностями тільки у вхідних даних. Передача такої роботи від людини комп'ютера називається автоматизацією. Розглянемо кілька прикладів.
- приймав гроші;
- заносив їх у основу;
- видавав чек.
В даний час роль оператора виконує банкомат, куди вбудований комп'ютер, що обробляє вхідні дані. Комп'ютер отримує вигляд платежу, суму та інші параметри, а потім заносить зміни до бази даних і друкує чек. Ці дії відбуваються тому,що вбудований в банкомат комп'ютер має програму (написану деякою мовою програмування), яку він виконує.
Приклад 3. Зберігання на електронних носіях. Нині інформація, наприклад, у банках, зберігається над картотеках, а базах даних, розміщених на електронних носіях. У цьому випадку оператор звільняється від прочісування картотеки вручну: йому достатньо ввести параметри пошуку у вказані поля, а всю чорнову роботу виконає комп'ютер.
Ось ще кілька прикладів:
- електронні підручники, які замінюють вчителі;
- тренажери для навчання їзді автомобілем;
- купівля товарів через інтернет;
- електронні каталоги у бібліотеках;
- автоматизація складних обчислень;
- автоматичне підведення годинників у Windows;
- автоматичні конвеєри на виробництві.
Які переваги люди одержують від автоматизації? Головним чином, перевага полягає в надійності та швидкості: комп'ютер швидко обчислює і є більш передбачуваним, ніж людина. Ми часто виправдовуємо виникнення аварійних ситуацій так званим людським фактором, який може виражатися у стомленні до кінця робочого дня, лінощів, хвороб і т.д. Комп'ютеру такі проблеми незнайомі. Звичайно, і машина може дати збій, але в добре налагодженому механізмі його ймовірність дуже мала порівняно з ймовірністю виникнення проблем, пов'язаних із людиною.
Програма - це набір інструкцій, які дозволяють комп'ютеру виконувати завдання, що стоять перед ним без допомоги людини. Сукупність програм, призначених для обробки інформації, називається програмним забезпеченням. Самі ж програми складаються з команд, які є елементарними кроками, що ведуть вирішення конкретної задачі.
Незважаючи на свої переваги, комп'ютер гірший за людину, принаймні, в одному він не здатний самостійно вирішити якусь проблему. Людина, стикаючись із проблемою, може вигадати, як її вирішити, але комп'ютер «думати» не вміє. Більше того, він здатний виконувати лише команди, розписані досить докладно: йому потрібно все розжовувати та чітко вказувати кроки, необхідні для вирішення завдання.
Послідовність кроків (дій), внаслідок виконання яких вирішується певне завдання, називається алгоритмом . Як правило, алгоритм має одну точку входу та одну точку виходу . На вході до алгоритму можуть надходити вхідні дані, а на виході він виробляє вихідні дані. Поняття алгоритму пов'язане як з програмуванням: ми неявно стикається з алгоритмами щодня. Наприклад, для приготування чаю можна використовувати наступний алгоритм:
- Закип'ятити воду.
- Заварити чай.
- Налити чай у чашку.
Алгоритми можуть відрізнятися за ступенем подробиці. Зокрема, «Закип'ятити воду» можна розглянути як окреме завдання та скласти алгоритм її розв'язання:
- Налити воду у чайник.
- Увімкнути чайник.
- Дочекатися, доки чайник закипить.
Деталізацію можна продовжити, наприклад, розгорнувши крок «Налити воду в чайник»:
- Взяти посудину, на якій написано Braun.
- Піднести посуд до раковини.
- Повернути ручку із синім кружечком.
- Піднести посудину до струменя води.
- Дочекайтеся, поки кулька підніметься до рівня «MAX».
Мови високого, середнього та низького рівня
Цей приклад повинен підштовхнути вас до відмінності рівня команд. Команди можна умовно поділити на команди високого, середнього та низького рівня. Наприклад, команда «Побудуватибудинок» Це команда високого рівня. Команди «Закласти фундамент», «Побудувати поверхи з 1 по 16» та «Спорудити дах» - це команди середнього рівня. Зрештою, команди «Викопати яму», «Забити палі», «Покласти цеглу», «Вставити скло» – це команди низького рівня. Розподіл команд на рівні досить умовний і залежить від вихідного завдання. Наприклад, якщо вихідним завданням є «Поліпшити житлові умови молодих учених», то завдання «Збудувати будинок» може виявитися командою середнього чи низького рівня.
Відповісти на запитання «Мови якого рівня краще?» неможливо, точніше, таке питання поставлене некоректно, оскільки кожна мова призначена для вирішення певних завдань. Давайте проведемо аналогію. Ви можете відповісти на запитання «Який автомобіль краще: хороший позашляховик чи хороший спортивний автомобіль?» Для відповіді це питання потрібно знати, куди ми збираємося їхати.
При розробці великих додатків зазвичай використовуються високорівневі мови, оскільки їх головною перевагою є те, що вони дозволяють скоротити розмір коду. Низькорівневі мови та мови середнього рівня використовуються тоді, коли необхідно покращити продуктивність програми чи окремих її елементів. Таким чином, корпоративні програми зазвичай пишуться мовами Java, C#, С++, у той же час для розробки компіляторів або обчислювальних програм використовуються мови Асемблер, Сі та Fortran. Тим не менш, по-справжньому оцінити переваги різних мов можна лише, маючи певний досвід розробки.
Для кращого розуміння переваг та недоліків мов високого та низького рівнів проведемо ще одну аналогію. Припустимо, що хочемо попросити когось купити хліба. Ми можемо дати високорівневу команду «Сходи за хлібом». Перевага цього підходу полягає в тому, що миобійшлися однією короткою командою. Недолік полягає в тому, що ми не уточнюємо, куди йти за хлібом: можливо, людина поїде за хлібом в інше місто. У разі алгоритм короткий, але продуктивність може бути поганий. Якщо ж ми докладно пояснимо, в який магазин йти, о котрій дорозі, то на пояснення витратимо більше часу, але людина принесе хліб швидше. Тому деякі високорівневі мови підтримують низькорівневі вставки для того, щоб поліпшити продуктивність певного фрагмента програми.
Як розробляти програму, яка вирішує поставлене завдання? Досить часто виникають ситуації, коли ми не знаємо, з чого почати, щоби щось зробити. Так само може статися і при написанні комп'ютерних програм. Одним із найбільш ефективних підходів до розробки програм та програмного забезпечення є так звана низхідна розробка або низхідне програмування. Працюючи над великими проектами використовується низхідне проектування (хоча перед написанням програми будь-якого розміру слід провести проектування, навіть подумки).
Низхідна технологія у тому, що рішення поставленої завдання розбивається кілька великих частин. Потім кожна з цих частин сприймається як окреме завдання і також розбивається кілька подзадач. Цей процес деталізації триває до того часу, поки крайні подзадачи стануть простими і зрозумілими для програміста. Таким чином, виходить дерево, коренем якого є розв'язуване завдання, вершинами проміжні завдання, а листям елементарні кроки. Починаючи з теми, присвяченої функціям, ми розглядатимемо приклади, які демонструють таку розробку.