Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Розділ 1. Технологія створення програм

1.1 Етапи рішення прикладних задач з використанням комп'ютерів

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

Для розв'язання цих задач комп'ютер озброєний найрізноманітнішим програмним забезпеченням, яке поділяється на чотири великих категорії: операційні системи, системні утиліти, системи програмування, прикладне програмне забезпечення. Отже, користувач аналізує завдання, яке необхідно розв'язати, та обирає оптимально придатний програмний засіб, який є в арсеналі засобів його комп'ютера. Однак є велика кількість задач, для розв'язання яких не існує відповідного програмного забезпечення, або існуюче програмне забезпечення з певних причин не влаштовує. У цьому випадку користувач може самостійно написати програму для виконання поставленої задачі.

Розглянемо розв'язання прикладної задачі за допомогою комп'ютера:

Постановка (або формулювання) — це перший крок у розв'язанні будь-якої задачі. На цьому етапі слід чітко з'ясувати: що дано і що треба знайти. Тобто чітко уяснити суть задачі, необхідні початкові дані для її розв'язання, а також те, що можна вважати за очікуваний результат.

Наприклад, батьки вирішили відремонтувати квартиру. Отже, безпосередньо комп'ютер не може зробити ремонт. Але комп'ютер може допомогти не тільки розрахувати кількість потрібних матеріалів, вартість їх перевезень та вартість виконаних ремонтних робіт, а навіть запропонувати оптимальний варіант з кількох можливих, враховуючи всі вимоги до якості та до термінів ремонту, а також фінансові можливості родини.

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

У нашому прикладі математичною моделлю задачі буде:

• по-перше, розрахунок площі поверхні стін, що підлягає ремонту;

• по-друге, розрахунок необхідних матеріалів (з урахуванням площі шпалер, що знаходяться в рулоні, та додаткових шпалер, необхідних для
співпадання малюнків на стіні);

• по-третє, розрахунок вартості витратних матеріалів та вартості виконаних робіт.

 

Примітка: Ці формули отримати неважко, тому таке завдання можна дати учням безпосередньо на уроці або вдома.

Розробка алгоритму — третій крок у розв'язуванні задач. Алгоритм розробляється на основі побудованої математичної моделі. В ньому можна використати вже відомі методи розв'язування отриманих математичних співвідношень, причому за наявності кількох методів розв'язування, необхідно їх проаналізувати та обрати оптимальний. Якщо існуючими методами не можна розв'язати задачу, то треба розробити власний метод.

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

Останнім етапом у методі покрокової розробки є об'єднання окремих модулів у єдине ціле. Для цього між усіма модулями мають бути встановлені зв'язки, тобто узгоджена передача інформації від одних модулів до інших. Це дуже кропітка робота і від оптимальності вибору вхідних та вихідних параметрів окремих модулів залежить оптимальність роботи всієї програми.

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

Отже, мова програмування обрана, програма написана. Тепер програму необхідно налагодити та протестувати. Це наступний крок розв'язування задачі. Під налагоджуванням програми розуміють процес випробування роботи програми з виправленням виявлених при цьому помилок. Виправити помилки, пов'язані з правилами написання програм, допоможе середовище програмування, але логічні помилки виправити набагато важче. В цьому доможуть правильно підібрані тести.

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

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

Отже, підіб'ємо підсумки.

Основні етапи розв'язування задачі за допомогою комп'ютера такі:

• постановка задачі;

• побудова математичної моделі;

• розробка алгоритму;

• опис алгоритму мовою програмування;

• тестування та налагоджування програми;

• експлуатація програми.

 

1.2 Кроки роботи з програмою

Visual C ++ 2005 включає в себе безліч повністю інтегрованих інструментів, призначених для полегшення написання програм на C ++.
Список фундаментальних складових Visual C ++ 2005, що поставляються як частини IDE, включає в себе редактор, компілятор, компонувальник і бібліотеки. Це - основні інструменти, необхідні для написання і виконання програм C ++.
Редактор являє собою інтерактивну середу, в якій ви можете створювати і редагувати вихідний код C ++. Поряд зі звичайними засобами на зразок вирізання та вставки фрагментів, з якими ви напевно знайомі, редактор також забезпечує колірне виділення різних елементів мови. Редактор автоматично розпізнає ключові конструкції мови C ++ і забарвлює їх відповідно до їх значенням. Це не тільки допомагає зробити код більш читабельним, але також ясно вказує на помилки при введенні деяких слів.

Текстовий препроцесор:

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

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

наприклад,.EXE файл.

 

Компонування також може носити такі назви: зв'язування, збірка або лінковка.

Це останній етап процесу отримання виконуваного файлу, що складається з зв'язування воєдино всіх об'єктних файлів проекту.

Після компоновки у вас утворюється .EXE файл вашої програми.

1.3 Короткий огляд мов програмування

За останні 20 років з'явилися сотні мов програмування різних видів, які змінювали один одного на певних етапах розвитку технологій. У міру того, як розвивався Інтернет, почалася популяризація мов програмування, які орієнтуються на створення сайтів і веб-додатків. Популярність тієї чи іншої мови важко спрогнозувати навіть на найближчі 5-10 років. Десятки мов, які вважалися провідними в кінці 1990х, зараз повністю зникли або ж кардинально змінилися, аж до назви. Сьогодні ж є близько 10 мов, які міцно займають свої позиції в програмерському середовищі і без них неможливо уявити подальший розвиток комп'ютерів та Інтернету: Java, PHP, C / C ++, Python, Delphi, Visual Basic, Objective-C.

Мова: Бейсік (BASIC)

Рік: 1964
Кольорова графіка, між іншим! Універсальний код символічних інструкцій для початківців (Beginners All Purpose Symbolic Instruction Code) створений студентами (під керівництвом професорів) Дартмутського коледжу спеціально для спрощення вивчення мови для тих, хто не володіє особливими математичними та іншими технічними знаннями. Модифікована версія, написана Біллом Гейтсом і Полом Алленом, стала першим програмним продуктом компанії Microsoft. Вони продали його MITS для комп'ютера Альтаїр.

Integer BASIC використовувався на комп'ютері Apple II в 1977 році.

 

Приклад программи:

100 BEGIN101 GOTO 102102 PRINT "КАК НАСЧЕТ ПАРТИИ В ШАХМАТЫ?"103 END

 

 

Мова: Сі (C)

Рік: 1969

 

Логотип операційної системи ЛінуксСі був розроблений в період з 1969 по 1973 Деннісом Рітчі в Bell Labs для використання в операційній системі Unix. Він був названий «С», бо його особливості були взяті з більш раннього мови програмування під назвою «Бі».

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

На сьогоднішній день на C засноване ядро ​​Linux [4].

Приклад програми:

#include<iostream>using namespace std;int main(){ cout<< "С++ полезен, когда ваши познания в программировании намного выше средних" << endl; return 0;}

 

Мова: C ++

Рік: 1983

 

Б'ярн Страуструп модифікував мову C, отримавши тим самим C ++ і створив те, що багато хто вважає найкращою мовою програмування. C ++ в топі найкращих мов програмування з 1986 року і досяг місця в Залі слави в 2003 році.

Використовується в Microsoft Office, Adobe PDF Reader і в Firefox

Приклад програми:

#include<iostream>using namespace std;int main(){ cout<< "С++ полезен, когда ваши познания в программировании намного выше средних" << endl; return 0;}

 

Мова: Фортран (Fortran)

Рік: 1957

 

Логотип Національної метеорологічної служби СШАФортран (від FORmulaTRANslation [1]) - найстаріша мова програмування, що використовується на даний момент. Мову розробив Джон Бекус для виконання складних наукових, математичних та статистичних обчислень.

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

Також використовується Національною метеорологічною службою США.

Приклад програми:

*C Hello World на Fortran 77C (строки должны начинаться отступами в 6 символов)*PROGRAM REELECTWRITE(UNIT=*, FMT=*)'I like Ike'END

 

Розділ 2. Робота в інтегрованому середовищі програмування (IDE)
MS Visual Studio C++

2.1 Склад і характеристика проектів IDE MS Visual Studio C++

Інтегроване середовище розробки, IDE (англ. Integrated development environment) - система програмних засобів, використовувана програмістами для розробки програмного забезпечення (ПО).

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

2.2 Створення програмного проекту

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

I етап. Створення будь-якої програми починається з постановки задачі. Спочатку завдання ставиться в термінах предметної області, і необхідно перевести її в терміни, більш близькі до програмування. Оскільки програміст рідко досконально розбирається в предметній області, а замовник - в програмуванні (простий приклад: потрібно написати бухгалтерську програму), постановка завдання може стати вельми непростим ітераційним процесом. Крім того, при постановці завдання замовник найчастіше не може чітко і повно сформулювати свої вимоги і критерії. В якості ілюстрації наведу карикатуру «Гойдалки» (рис. 3.1), яка з'явилася 1973 році в інформаційному бюлетені обчислювального центру Лондонського університету і відразу стала широко відомої, оскільки дуже точно відображала процес створення програми.
Постановка завдання завершується створенням технічного завдання, а потім зовнішньої специфікації програми, що включає в себе:

- опис вихідних даних і результатів (типи, формати, точність, спосіб передачі, обмеження);
-опис завдання, реалізованої програмою;

- спосіб звернення до програми;

- опис можливих аварійних ситуацій і помилок користувача.

Таким чином, програма розглядається як чорний ящик, для якого визначена функція.

II етап. Розробка внутрішніх структур даних. Більшість алгоритмів залежить від того, яким чином організовані дані, тому інтуїтивно ясно, що починати проектування програми треба не з алгоритмів, а з розробки структур, необхідних для представлення вхідних, вихідних і проміжних даних. При цьому беруться до уваги багато чинників, наприклад, обмеження на розмір даних, необхідна точність, вимоги до швидкодії програми. Структури даних можуть бути статичними або динамічними (динамічні структури розглядаються в наступному розділі).

Как было спроектировано Как было реализовано ведущим системным специалистом программистами

III етап. Проектування (визначення загальної структури та взаємодії модулей). На цьому етапі застосовується технологія спадного проектування програми, основна ідея якого теоретично проста: розбиття задачі на підзадачі меншої складності, які можна розглядати окремо. При цьому використовується метод покрокової деталізації. Можна уявити собі цей процес так, що спочатку програма пишеться на мові деякої гіпотетичної машини, яка здатна розуміти самі узагальнені дії, а потім кожне з них описується на більш низькому рівні абстракції, і так далі. Дуже важливою на цьому етапі є специфікація інтерфейсів, тобто способів взаємодії підзадач. Для кожної підзадачі складається зовнішня специфікація, аналогічна наведеної вище. На цьому ж етапі вирішуються питання розбиття програми на модулі, головний критерій - мінімізація їх взаємодії. Одна задача може реалізовуватися за допомогою декількох модулів і навпаки, в одному модулі може вирішуватися кілька завдань. На більш низький рівень проектування переходять тільки після закінчення проектування верхнього рівня. Алгоритми записують в узагальненій формі - наприклад, словесної, у вигляді узагальнених блок-схем або іншими способами. Якщо виникають труднощі із записом алгоритму, він, швидше за все, погано продуманий.
На етапі проектування слід враховувати можливість майбутніх модифікацій програми і прагнути проектувати програму таким чином, щоб вносити зміни було можливо простіше. Оскільки невідомо, які зміни доведеться виконати, це побажання нагадує створення «загальної теорії всього»; на практиці треба обмежитися розумними компромісами. Програміст, виходячи зі свого досвіду і здорового глузду, вирішує, які саме властивості програми може знадобитися змінити або вдосконалити у майбутньому.

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

IV етап. Структурне програмування. Процес програмування також організуєтся за принципом «згори донизу»: спочатку кодуються модулі самого верхнього рівня і складаються тестові приклади для їх налагодження, при цьому на місці ще не написаних модулів наступного рівня ставляться «заглушки» - тимчасові програми. «Заглушки» в простому випадку просто видають повідомлення про те, що їм передано управління, а потім повертають його в викликає модуль. В інших випадках «заглушка» може видавати значення, задані заздалегідь або обчислені за спрощеним алгоритмом.

Таким чином, спочатку створюється логічний скелет програми, який потім обростає плоттю коду. Здавалося б, більш логічно застосовувати до процесу програмування висхідну технологію - написати й налагодити спочатку модулі нижнього рівня, а потім об'єднувати їх в більш великі фрагменти, але цей підхід має ряд недоліків. По-перше, в процесі кодування верхнього рівня можуть бути розкриті ті або інші труднощі проектування більш низьких рівнів програми (просто тому що при написанні програми її логіка продумується більш ретельно, ніж при проектуванні). Наш подібна помилка виявляється в останню чергу, потрібні додаткові витрати на переробку вже готових модулів нижнього рівня.
По-друге, для налагодження кожного модуля, а потім більших фрагментів програми потрібно кожного разу складати свої тестові приклади, і програміст часто змушений імітувати те оточення, в якому повинен працювати модуль. Низхідна ж технологія програмування забезпечує природний порядок створення тестів - можливість низхідній налагодження, яка розглянута далі.
Рекомендації по запису алгоритмів на С ++ (більшість з цих рекомендацій справедливі і для інших мов високого рівня) наведені в попередньому розділі. Нагадаю, що головні цілі - читаність і простота структури програми Б цілому і будь-який з складових її функцій. При програмуванні слід відокремлювати інтерфейс (функції, модуля, класу) від його реалізації і обмежувати доступ до непотрібної інформації. Недбале навіть у дрібницях програмування може призвести до величезних витрат па пошук помилок па етапі налагодження.
Етапи проектування та програмування суміщені у часі: в ідеалі спочатку проектується і кодується верхній рівень, потім - наступний, і так далі. Така стратегія застосовується тому, що в процесі кодування може виникнути необхідність внести зміни, що відбиваються на модулях низького рівня.
V етап. Спадний тестування. Цей етап записаний останнім, але це не значить, що тестування не повинно проводитися на попередніх етапах. Проектування та програмування обов'язково повинні супроводжуватися написанням набору тестів - перевірочних вихідних даних і відповідних їм наборів еталонних реакцій.
Необхідно розрізняти процеси тестування та налагодження програми. Тестування - процес, за допомогою якого перевіряється правильність програми. Тестування носить позитивний характер, його мета - показати, що програма працює правильно і задовольняє всім проектним специфікаціям. Відладка - процес виправлення помилок у програмі, при цьому мета виправити всі помилки не ставиться. Виправляють помилки, виявлені при тестуванні. При плануванні слід враховувати, що процес виявлення помилок підчиняється закону насичення, тобто більшість помилок виявляється на ранніх стадіях тестування, і чим менше в програмі залишилося помилок, тим довше шукати кожну з них.
Для вичерпного тестування програми необхідно перевірити кожну з гілок алгоритму. Загальне число гілок визначається комбінацією всіх альтернатив па кожному етапі. Це кінцеве число, але воно може бути дуже великим, тому програма розбивається па фрагменти, після вичерпного тестування яких вони розглядаються як елементарні вузли більш довгих гілок. Крім даних, що забезпечують виконання операторів в необхідної послідовності, тести повинні містити перевірку граничних умов (наприклад, перехід але умові х> 10 повинен перевірятися для значень, більших, менших і рівних 10). Окремо перевіряється реакція програми на помилкові вихідні дані. Ідея низхідного тестування припускає, що до тестування програми приступають ще до того, як завершено її проектування. Це дозволяє раніше випробувати основні міжмодульні інтерфейси, а також переконатися в тому, що програма в основному задовольняє потреби користувача. Тільки після того як логічне ядро випробувано настільки, що з'являється впевненість у правильності реалізації основних інтерфейсів, приступають до кодування і тестування наступного рівня програми.
Природно, повне тестування програми, поки вона представлена у вигляді скелета, неможливо, проте додавання кожного наступного рівня дозволяє поступово розширювати область тестування.

2.3 Засоби і методика відладки програм

Відладка - етап розробки комп'ютерної програми, на якому виявляють, локалізують і усувають помилки. Щоб зрозуміти, де виникла помилка, доводиться дізнаватися поточні значення змінних, з'ясовувати, яким шляхом виконувалася програма.

Існують дві взаємодоповнюючі технології налагодження:

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

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

Типовий цикл розробки, за час життя програми багато разів повторюється, виглядає приблизно так:

а) Програмування - внесення в програму нової функціональності, виправлення помилок в наявній.

б) Тестування (ручне або автоматизоване; програмістом, тестером або користувачем; «димове», в режимі чорного ящика або модульне...) - виявлення факту помилки.

в) Відтворення помилки - з'ясування умов, за яких помилка трапляється. Це може виявитися непростим завданням при програмуванні паралельних процесів і при деяких незвичайних помилках, відомих як Гайзенбаґ.

г) Налагодження - виявлення причини помилки.


Розділ 3. Формування навичок програмування з використанням алгоритмічної мови С++

3.1 Програмна реалізація алгоритмів лінійної структури

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

Скласти програму обчислення значення функції у =7х2 - 3х + 6 при будь-якому значенні х.

Вхідні дані:

х (будь-яке число). Дійсне число;

Вихідні дані:

y (значення функції). Дійсне число.

Алгоритм програми – лінійний (рис.3.1)

Рисунок 3.1 Блок-схема алгоритму. Текст програми: #include <iostream> #include <windows.h> #include <iomanip> using namespace std; void main() { int x,y; cin>>x; y=7*x*x-3*x+6; cout<<y<<endl; }

1. Знайти площу кільця, внутрішній радіус якого R1, а зовнішній - R2 (R2 > R1). Значення радіусів R1 і R2 задати за допомогою генератора випадкових чисел.

Вхідні дані:

- R1, внутрішній радіус; R2, зовнішній радіус. Дійсні числа.

Вихідні дані:

- Площа кільця. Дійсне число.

Розробка алгоритму.

Для знаходження площі кільця необхідно:

Алгоритм:

а) Вводимо зовнішній та внутрішній радіус кільця.

б) Від площі більшого круга віднімаємо площу меншого круга.

в) Виводимо площу кільця.

Текст програми:

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double pi=3.1415,R1,R2;

cout<<"Введіть внутрішній радіус:"<<endl;

cin>>R1;

cout<<"Введіть зовнішній радіус:"<<endl;

cin>>R2;

cout<<pi*R2*R2-pi*R1*R1<<endl;

}

Результат:

Введіть внутрішній радіус:

Введіть зовнішній радіус:

175.924

Для продолжения нажмите любую клавишу...

 

2. З тризначного числа х відняли його останню цифру. Коли результат розділили на 10, а до частного зліва приписати останню цифру числа x, то вийшло число 237. Знайти число х.

Вхідні дані:

Тризначне число. Ціле число.

Вихідні дані:

х. Ціле число.

Розробка алгоритму.

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

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int x;

cout<<"Введіть число"<<endl;

cin>>x;

cout<<(x%100%10)*100+(x/100)*10+(x/10)%10<<endl;

}

Результат:

 

Введіть число

Для продолжения нажмите любую клавишу...

 

 

3.2 Програмна реалізація алгоритмів розгалужених структур

1. Обчислити значення логічного виразу при наступних значеннях логічних величин: А = Істина, В = Хибність, С = Хибність: не А і В;

Вхідні дані:

- A, B, C. Цілі числа.

Вихідні дані:

- ціле число.

Текст програми.

#include<iostream>

#include<windows.h>

#include<iomanip>

#include<math.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int A=1,B=0;

cout<<(!A&&B)<<endl;

}

Результат:

Для продолжения нажмите любую клавишу...

 

2. Записати умову, яка є істинною, коли кожне з чисел А і В більше 100;

Вхідні дані:

- A,B. Цілі числа.

Вихідні дані:

- Текстове повідомлення.

Розробка алгоритму.

Вводимо A і B і отримуємо повідомлення чи кожне з цих чисел більше 100.

Текст програми.

#include<iostream>

#include<windows.h>

#include<iomanip>

#include<math.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int A,B;

cin>>A>>B;

if(A>100&&B>100)cout<<"Істина"<<endl;

else cout<<"Хибність"<<endl;

}

Результат:

Істина

Для продолжения нажмите любую клавишу...

 

3. Записати умову, яка є істинною, коли точка з координатами (х, у) потрапляє в заштриховані ділянки.

Вхідні дані:

- x,y. Дійсні числа.

Вихідні дані:

- Текстове повідомлення.

Розробка алгоритму.

Вводимо x, y, програма аналізує задані значення і видає відповідне повідомлення.

Текст програми. (1)

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double x, y;

cin>>x>>y;

if(y<=1.5&&y>=-2)cout<<"Потрапляє"<<endl;

else cout<<"Не потрапляє"<<endl;

}

Результат:

Не потрапляє

Для продолжения нажмите любую клавишу...

 

Текст програми. (2)

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double x,y;

cin>>x>>y;

if(x>=-1&&x<=1&&y>=-1&&y<=1&&x<=y)cout<<"Потрапляє"<<endl;

else cout<<"Не потрапляє"<<endl;

}

Результат:

Потрапляє

Для продолжения нажмите любую клавишу...

4. Відомі дві відстані:- одна в кілометрах, друга - у футах (1 фут = 0,45 м). Яка з відстаней менше?

Вхідні дані:

- Відстані. Дійсні числа.

Вихідні дані:

- Текстове повідомлення.

Розробка алгоритму.

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

Текст програми

#include<iostream>

#include<windows.h>

#include<iomanip>

#include<math.h>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double km,fut;

cout<<"Введіть першу відстань в кілометрах, а другу - в футах:"<<endl;

cin>>km>>fut;

km=km*1000;

fut=fut*0.45;

if(km>fut)cout<<"Відстань в футах менша"<<endl;

else cout<<"Відстань в кілометрах менша"<<endl;

}

Результат

Введіть першу відстань в кілометрах, а другу - в футах:

Відстань в футах менша

Для продолжения нажмите любую клавишу...

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

Вхідні дані:

- Роки і номери місяців. Цілі числа.

Вихідні дані:

- Повні роки. Ціле число.

Розробка алгоритму.

Задаємо рік і номер місяця народження людини, програма аналізує ці дані і видає вік людини.

Текст програми

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int year_birth,month_birth,year_current=2015,month_current=3;

cout<<year_current<<endl<<month_current<<endl;

cout<<"Введіть рік: ";

cin>>year_birth;

cout<<"Введіть місяць: ";

cin>>month_birth;

if(month_birth<month_current) cout<<year_current-year_birth<<endl;

else cout<<year_current-year_birth-1<<endl;

}

Результат

Введіть рік: 1998

Введіть місяць: 4

Для продолжения нажмите любую клавишу...

Switch

1. Скласти програму, яка залежно від порядкового номера дня місяця (1, 2..., 12) виводить на екран його назву (січень, лютий,...грудень).

Вхідні дані:

- n. Ціле число.

Вихідні дані:

- назва місяця.

Розробка алгоритму.

Спочатку вводиться порядковий номер місяця, потім програма аналізує це значення і виводить відповідне текстове повідомлення.

 

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

int n;

cout<<"Введіть номер місяця: ";

cin>>n;

switch(n)

{

case 1: cout<<"Січень"<<endl;break;

case 2: cout<<"Лютий"<<endl;break;

case 3: cout<<"Березень"<<endl;break;

case 4: cout<<"Квітень"<<endl;break;

case 5: cout<<"Травень"<<endl;break;

case 6: cout<<"Червень"<<endl;break;

case 7: cout<<"Липень"<<endl;break;

case 8: cout<<"Серпень"<<endl;break;

case 9: cout<<"Вересень"<<endl;break;

case 10: cout<<"Жовтень"<<endl;break;

case 11: cout<<"Листопад"<<endl;break;

case 12: cout<<"Грудень"<<endl;break;

default: cout<<"Введенно непрвильне значення"<<endl;break;

}

}

 

Результат:

Введіть номер місяця: 5

Травень

Для продолжения нажмите любую клавишу...

 

2. Дата деякого дня характеризується двома натуральними числами: m (порядковий номер місяця) і n (число). По заданих m і n визначити дату попереднього дня (прийняти, що m і n не характеризують 1 січня). Рік не є високосним.

Вхідні дані:

- n,m.Натуральні цілі числа.

Вихідні дані:

- натуральні цілі числа.

Розробка алгоритму.

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

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

short int month, day;

cout<<"Введіть місяць та день: ";

cin>>month>>day;

switch(month)

{

case 1:if(day==1&&day>31){cout<<"error"<<endl;return;} else day=day-1;;break;

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:if(day==1){month=month-1;day=30;}else if(day>31){cout<<"error"<<endl;return;}else day=day-1;;break;

case 4:

case 6:

case 9:

case 11:if(day==1){month=month-1;day=31;}else if(day>30){cout<<"error"<<endl;return;}else day=day-1;;break;

case 2:if(day==1){month=month-1;day=31;}else if(day>28){cout<<"error"<<endl;return;}else day=day-1;;break;

default:cout<<"error"<<endl;

}

cout<<" "<<day<<'.'<<month<<endl<<"(День-місяць)"<<endl;

}

Результат:

Введіть місяць та день: 5

6.5

(День-місяць)

Для продолжения нажмите любую клавишу...

3.3 Програмна реалізація алгоритмів циклічних структур

Циклом називають послідовність дій(операторів), яку записують у тексті програми один раз але вона може виконуватися понад один раз.

1. Надрукувати "стовпчиком" всі цілі числа від а до b (значення а і b вводяться з клавіатури; b >= а).

Вхідні дані:

- а (будь-яке число). Дійсне число;

- b (будь-яке число). Дійсне число.

Вихідні дані: цілі числа від а до b.

Розробка алгоритму.

Вводимо числа a і b й за допомогою циклу виводимо числа від а до b "стовпчиком".

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

int a, b;

cin>>a>>b;

for(;a<=b;a++)

{

cout<<a<<endl;

}

}

 

Результат:

Для продолжения нажмите любую клавишу...

 

2. Знайти добуток всіх цілих чисел від а до b (значення а і b вводяться з клавіатури; b > а).

Вхідні дані:

- а (будь-яке число). Дійсне число;

- b (будь-яке число). Дійсне число.

Вихідні дані: добуток всіх цілих чисел від а до b.

Розробка алгоритму.

Вводимо числа a і b й за допомогою циклу виводимо добуток всіх цілих чисел від а до b.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

int a, b,dob=1;

cin>>a>>b;

for(;a<=b;a++)

{

dob=dob*a;

}

cout<<dob<<endl;

}

 

Результат:

Для продолжения нажмите любую клавишу...

 

3. Обчислити і вивести на екран у вигляді таблиці значення функції F на інтервалі від Хнач. до Хкон. з кроком dX.

Вхідні дані:

- а (будь-яке число). Дійсне число;

- b (будь-яке число). Дійсне число.

- с (будь-яке число). Дійсне число.

- х нач. (будь-яке число). Дійсне число.

- х кон. (будь-яке число). Дійсне число.

- dX (крок).Дійсне число.

Вихідні дані: значення функції F.

Розробка алгоритму.

Вводимо числа a, b, с, х нач., х кон., dX за певного значення х виконується одне з рівнянь які ми задаємо в умовному операторі. Результат виводиться на екран.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

int x_nach,x_kon,dx,a,b,c,x;

cin>>x_nach>>x_kon>>dx>>a>>b>>c;

while(x_nach<=x_kon)

{

x=x_nach;

if(x<5&&c!=0) cout<<(-a*x*x-b)<<endl;

else if(x>5&&c==0) cout<<(x-a)/x<<endl;

else cout<<-x/c<<endl;

x_nach=x_nach+dx;

}

}

 

Результат:

-10

-40

Для продолжения нажмите любую клавишу...

 

4. Обчислити суму

Вихідні дані: сума дробів.

Розробка алгоритму.

За допомогою циклу формуються дроби і рахується їх сума.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

double sum=0;

for(int i=2;i<=10;i++)

{

sum=sum+(float)i/(i+1);

}

cout<<sum<<endl;

}

Результат:

7.48012

Для продолжения нажмите любую клавишу...

5. Задано натуральне число n і дійсні числа а1, а2..., аn. Визначити середнє арифметичне дійсних чисел.

Вхідні дані:

- n (будь-яке число). Дійсне число;

- а1, а2..., аn (будь-яке числа). Натуральні числа.

Вихідні дані: середнє арифметичне дійсних чисел.

Розробка алгоритму.

Вводимо к-сть чисел, після чого за допомогою циклу вводимо дійсні числа, а потім виводимо їх середнє арифметичне.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

 

double n,a=0,sum=0;

int k=0;

cin>>n;

for(int i=1;i<=n;i++)

{

cin>>a;

sum=sum+a;

k=k++;

}

cout<<sum/k<<endl;

}

 

Результат:

5.33333

Для продолжения нажмите любую клавишу...

 

6. Дана непорожня послідовність додатних цілих чисел a1, а2,..., що закінчується нулем. Отримати послідовність a1, a12, a123,..., 0.

Вхідні дані:

- а (додатнє ціле число);

Вихідні дані: послідовність a1, a12, a123,..., 0.

Розробка алгоритму.

Вводимо додатні цілі числа до тих пір доки не введемо нуль.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

 

int a=1,k=1;

while(a!=0)

{

cin>>a;

k=k*a;

cout<<k<<endl;

}

}

 

Результат:

Для продолжения нажмите любую клавишу...

 

7. Одноклітинна амеба кожні 3 години ділиться на 2 клітки. Визначити, скільки кліток буде через 3, 6, 9,..., 24 години, якщо спочатку була одна амеба.

Вхідні дані:

- початкова к-сть клітин (додатнє ціле число);

Вихідні дані: вихідна к-сть клітин (додатнє ціле число).

Розробка алгоритму.

Вводимо початкову к-сть клітин потім за допомогою циклу вираховуємо кінцеву к-сть клітин яку й виводим.

Текст програми.

#include <iostream>

#include <windows.h>

#include <iomanip>

using namespace std;

void main()

{

int kletki=1;

for(int i=0;i<=24;)

{

kletki=kletki*2;

cout<<kletki<<endl;

i=i+3;

}

}

Результат:

Для продолжения нажмите любую клавишу...

 




Дата добавления: 2015-09-12; просмотров: 131 | Поможем написать вашу работу | Нарушение авторских прав

<== предыдущая лекция | следующая лекция ==>
Мастерство публичных выступлений.| Цикли вложені

lektsii.net - Лекции.Нет - 2014-2025 год. (0.28 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав