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

Задача. I. етап. Постановка задачі

Читайте также:
  1. Задача.
  2. Задача.
  3. Задача.
  4. Задача.
  5. Задача.
  6. Задача.
  7. Проф задача.
  8. Семинар по теме 1.2. Управление МК как практическая задача.
  9. Транспортная задача.
  10. Транспортная задача.

I. етап. Постановка задачі.

a. опис початкових|вихідних| даних і|та| результатів (типи, формати, точність, спосіб передачі, обмеження);

b. опис задачі;

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

II. етап. Розробка внутрішніх структур даних.

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

III. етап. Проектування (визначення загальної|спільної| структури і|та| взаємодії модулів).

Застосовується технологія низхідного проектування програми: розбиття завдання|задачі| на підзадачі меншої складності, які можна розглядати|розглядувати| окремо.

Дуже важливою|поважною| є специфікація інтерфейсів, тобто|цебто| способів взаємодії підзадач.

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

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

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

V. етап. Низхідне тестування.

Написанням набору тестів - перевірочних початкових|вихідних| даних і|та| відповідних їм наборів еталонних реакцій.


Задача.

Обчислити значення виразу а + b – c, де а, b, c - цілі числа.

1. Постановка задачі.

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

Вхідні дані: цілі числа а, b, c.

Вихідні дані: значення виразу.

2. Проектування (визначення загальної структури та взаємодії модулів).

Запишемо послідовність виконуваних програмою дій на псевдокоді. Це дозволить нам побачити, з|із| яких процедур складатиметься наша програма:

Комплекс програм повинен виконувати наступні дії:

1. Введення даних в пам'ять.

2. Обчислення суми перших двох чисел.

3. Обчислення різниці отриманої|одержувати| суми і третього числа.

4. Виведення даних на екран.

Воно здійснюватиметься на шкірному етапі (після формування результату кожної з функцій). Для цього створимо перевантажувану функцію, яка виводитиме на екран ті дані, які ми передаватимемо їй як параметри.

Для організації очищення|очистки| буфера екрану, скористаємося готовою функцією system ("cls").

Тепер присвоїмо|привласнимо| імена усім функціям:

Main //головна|чільна| функція

ClrScr //очищення|очистка| екрану

In_Digits //Введення вхідних даних

out_Digits //Виведення даних на екран

AddDigit //Вичислити суму чисел

SubDigit //Вичислити різницю

Структурна схема програми.

Main
ClrScr
AddDigit
out_Digits
SubDigit
out_Digits
out_Digits
In_Digits

Функції будуть розташовуватися в різних модулях в залежності від тих дій, які вони виконують:

Назва модуля Функції
Prog_01_main.cpp Main
Prog_02_operation.cpp AddDigit, SubDigit
Prog_03_in_out.cpp In_Digits, out_Digits

 

Основний модуль програми Prog_01_main.cpp

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

Програма-заглушка

 

// Програма обчислення|підрахунку| вираження|виразу| а1+в1-с2 (Add_Sub.asm)

// головна|чільна| процедура, що управляє усіма виконуваними діями.

//

#include <iostream.h>

//-------------------------------------------------------------

// прототипи функцій

//-------------------------------------------------------------

int main ()

{

int a1, b1, c2; //Вхідні дані

//

// очищення|очистка| екрану

// введення даних

// виведення введених|запроваджувати| значень на екран

// а1+в1

// виведення суми на екран

// (a1+b1)- c2

// вивод на екран остаточного результату

return 0;

}

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

Реалізація основного модуля програми

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

  TITLE Програма обчислення|підрахунку| виразу а1+в1-с2 (Prog_01_main.cpp) ... ;------------------------------------------------------------- ; прототипи використовуваних функцій void In_Digits (int &, int &, int &); void Out_Digits (int, int, int); void Out_Digits (int, int); void Out_Digits (int); int AddDigit (int, int); int SubDigit (int, int); ;------------------------------------------------------------- ...  

Прототипи бібліотечних функцій знаходяться в заголовних файлах iostream.h (для організації вводу-виводу|висновку|) і|та| windows.h для функції ClrScr.

Для прототипів функцій користувача створимо свій заголовний файл (headerfile) з|із| ім'ям AddSub.h.

Можна сказати, що заголовний файл ххх.h містить|утримує| інтерфейс для деякого набору функцій, а початковий|вихідний| файл ххх.срр містить|утримує| реалізацію цього набору.

Файл AddSub.h:

 

//Заголовний файл програми AddSub(AddSub.h)

#include <iostream.h>

#include <windows.h>

//-------------------------------------------------------------

//прототипи використовуваних функцій

void In_Digits (int &, int &, int &);

void Out_Digits (int, int, int);

void Out_Digits (int, int);

void Out_Digits (int);

int AddDigit (int, int);

int SubDigit (int, int);

 

Створюється в Visual Studio в папці Header Files також, як і cpp файли.

Для створення загальних|спільних| відступів при виведенні інформації додамо|добавлятимемо| в заголовний файл AddSub.h наступні|такі| константи і|та| заголовні файли:

const int h_0=2; // 0 - рівень

const int h_1=10; // 1 – рівень

const int h_2=15; // 2 – рівень

Додамо ці інструкції до файлу AddSub.h. Тепер програма заглушка має вигляд.

Програма-заглушка

 

//Програма обчислення|підрахунку| вираження|виразу| а1+в1-с2 (Prog_01_main.cpp)

//головна|чільна| процедура, що управляє усіма виконуваними діями.

//

//-----------------------------------------------------------------

 

#include "AddSub.h"

int main ()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

//-----------------------------------------------------------------

int a, b, c; //Вхідні дані

//-----------------------------------------------------------------

system ("cls");

// In_Digits(a, b, c);

// Out_Digits (a, b, c);

// (a1+b1)- c2

// вивод на екран остаточного результату

return 0;

}

Помістимо цей код у файл Prog_01_main.cpp


Модуль Prog_02_operation.cpp

Функція AddDigit

 

//Функція AddDigit Модуль proc_02_operation.cpp

//Обчислює|вичисляє| суму двох цілих чисел

//-------------------------------------------------------------

//Вхідні дані: цілі числа а і|та| b

//Повертає: суму чисел

//-------------------------------------------------------------

#include <C:\C_WORK\AddSum\AddSub.h>

 

int Add_Digit(int a, int b)

{

cout<<setw(h_0)<<' '<<"!!! Працює програма складання двох чисел\n\n";

cout<<setw(h_1)<<' '<<"Вхідні дані:";

Out_Digits (a, b);

return a+b;

}

Функція SubDigit

// Процедура віднімає від суми чисел a і b число c

 

// Функція AddDigit Модуль proc_03_add.cpp

//Обчислює різницю двох цілих чисел

//-------------------------------------------------------------

//Вхідні дані: два цілі числа

//Повертає: різницю чисел

//-------------------------------------------------------------

#include <C:\C_WORK\AddSum\AddSub.h>

 

int Sub_Digit(int s, int c)

{

cout<<setw(h_0)<<' '<<"!!! Працює програма віднімання двох чисел\n\n";

cout<<setw(h_1)<<' '<<"Вхідні дані:";

Out_Digits (s, c);

return s - c;

}

 

 


Модуль Prog_03_in_out.cpp

Він складатиметься з|із| двох функцій: In_Digits та Out_Digits.

Функція In_Digits

 

//Функція In_Digits Модуль proc_02_In_Out_Digits.cpp.

//-------------------------------------------------------------

//Вводить|запроваджує| три цілі числа

//Повертає: три цілі числа (передача параметрів по посиланню|засланню|)

//-------------------------------------------------------------

#include <C:\C_WORK\AddSum\AddSub.h>

 

void In_Digits (int &a, int &b, int &c){

 

cout<<setw(h_0)<<' '<<"!!! Працює програма введення цілих чисел\n\n";

cout<<setw(h_1)<<' '<<"Введіть|запроваджуйте| число a:";

cin>>a;

cout<<setw(h_1)<<' '<<"Введіть|запроваджуйте| число b:";

cin>>b;

cout<<setw(h_1)<<' '<<"Введіть|запроваджуйте| число c:";

cin>>c;

return;

}

Функція Out_Digits з одним параметром

 

//Функція Out_Digits Модуль proc_02_In_Out_Digits.cpp.

//-------------------------------------------------------------

////Вхідні параметри: три цілі числа

////Повертає: нічого

//-------------------------------------------------------------

void Out_Digits(int a, int b, int c)

{

cout<<setw(h_0)<<' '<<a;

cout<<'\t'<<b;

cout<<'\t'<<c;

cout<<endl<<endl;

return;

}


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.013 сек.)