ЗМІСТ
Введення
.Алгорітм рішення
.Опис програми
.Інструкція користувачеві
Приклади роботи програми
Висновок
Список літератури
Додаток (лістинг програми)
ВСТУП
Мова Сі - це універсальна мова програмування, для якого характерні економічність вирази, сучасний набір операторів і типів даних. Мова Сі не є ні мовою дуже високого рівня raquo ;, ні великим мовою, і не призначається для деякої спеціальної області застосування, але відсутність обмежень і спільність мови роблять його для багатьох завдань більш зручним і ефективним, ніж мови, ймовірно більш потужні. Операційна система, компілятор з мови Сі і по суті всі прикладні програми системи ДЕМОС написані на Сі. Мова Сі не пов'язаний з якими-небудь певними апаратними засобами або системами, і на ньому легко писати програми, які можна пропускати без змін на будь ЕОМ, що має Сі-компілятор.
Мова Сі є універсальною мовою програмування. Він спочатку з'явився в операційній системі UNIX, і розвивався як основну мову систем, сумісних з ОС UNIX. Сама мова, однак, не пов'язаний з якою-небудь однією операційною системою або машиною; і хоча його називають мовою системного програмування, так як він зручний для написання операційних систем, він може використовуватися для написання будь-яких великих обчислювальних програм, програм для обробки текстів і баз даних.
Мова Сі - це мова щодо низького рівня raquo ;. Це означає, що Сі має справу з об'єктами того ж виду, що й більшість ЕОМ, а саме, з символами, числами і адресами. Вони можуть об'єднуватися і пересилатися за допомогою звичайних арифметичних і логічних операцій, здійснюваних реальними ЕОМ.
У мові Сі відсутні операції, що мають справу безпосередньо зі складовими об'єктами, такими як рядки символів, множини, списки або з масивами, які розглядаються як ціле. Тут, наприклад, немає ніякого аналога операціях PL/1, які оперують з масивами і рядками. Мова не надає ніяких інших можливостей розподілу пам'яті, окрім статичного визначення і механізму стеків, забезпечуваного локальними змінними функціями. Сам по собі мова Сі не забезпечує ніяких можливостей вводу-виводу. Всі ці механізми високого рівня повинні забезпечуватися явно викликаються функціями.
Аналогічно, мова Сі пропонує тільки прості, послідовні конструкції управління: перевірки, цикли, групування і підпрограми, але не мультипрограмування, паралельні операції, синхронізацію або співпрограми.
Утримання мови в скромних розмірах дає реальні переваги. Так як Сі відносно малий, він не вимагає багато місця для свого опису і може бути швидко вивчений.
Компілятор з Сі може бути простим і компактним. Це забезпечує високу ступінь мобільності мови. Оскільки типи даних і структури управління, наявні в Сі, безпосередньо підтримуються більшістю існуючих ЕОМ, бібліотека, необхідна під час прогону ізольованих програм, виявляється дуже маленькою. На СМ - 4, наприклад, вона містить тільки програми для 32-бітового множення і ділення і для упрятиванія і відновлення регістрів при вході у функцію. Звичайно, кожна реалізація забезпечує вичерпну, сумісну бібліотеку функцій для виконання операцій введення-виведення, обробки рядків і розподілу пам'яті, але так як звернення до них здійснюється тільки явно, можна, якщо необхідно, уникнути їх виклику; ці функції можуть бути компактно написані на самому Сі.
Знову ж через те, що мова Сі відображає можливості сучасних комп'ютерів, програми на Сі виявляються досить ефективними, так що не виникає спонукання писати натомість програми на мові асемблера. Хоча Сі відповідає можливостям багатьох ЕОМ, він не залежить від будь-якої конкретної архітектури машини і в силу цього без особливих зусиль дозволяє писати стерпні програми, тобто програми, які можна пропускати без змін на різних апаратних засобах.
Мова Сі не є мовою до строгих типами даних в сенсі Паскаля або Алгола - 68. Він порівняно поблажливий до перетворення даних, хоча і не буде буйно перетворювати типи даних подібно до мови PL/1. Компілятор не передбачає ніякої перевірки індексів масивів, типів аргументів і т.д. під час виконання програми.
У тих ситуаціях, коли бажана сувора перевірка типів, використовується спеціальна програма lint. Програма lint не генерує машинного коду, а робить дуже строгу перевірку всіх тих сторін програми, які можна проконтролювати під час компіляції і завантаження. Вона визначає невідповідність типів, несумісність аргументів, невикористані або очевидним чином неініціалізовані змінні, потенційні труднощі переносимості і т.д.
З за того, що в мові відсутні засоби введення/виводу і т.п., при програмуванні н...