Читайте также: |
|
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;
}
Функція 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<<endl<<endl;
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<<endl<<endl;
return;
}
Тепер внесемо зміни в модуль Prog_01_main.cpp
Модуль Prog_01_main.cpp – остаточний варіант
// Програма обчислення виразу а+в-с
// головна|чільна| функція, що управляє усіма виконуваними діями.
//
//-----------------------------------------------------------------
#include "AddSub.h"
int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int a, b, c; //Вхідні дані
system ("cls");
cout<<setw(h_2)<<' '<<"Програма обчислення виразу а+в-с \n\n";
//-----------------------------------------------------------Ввод чисел--------
In_Digits(a, b, c);
cout<<endl;
cout<<setw(h_1)<<' '<<"Ви ввели числа:";
Out_Digits(a, b, c);
//---------------------------------------------------------обчислення суми--
int sum=Add_Digit(a, b);
cout<<setw(h_1)<<' '<<"Сума чисел =";
Out_Digits(sum);
cout<<"\n";
//---------------------------------------------------------обчислення різниці
int sub=Sub_Digit(sum, c);
cout<<setw(h_0)<<' '<<"Результат обчислення виразу =";
Out_Digits(sub);
cout<<"\n";
return 0;
}
Дата добавления: 2015-04-26; просмотров: 95 | Поможем написать вашу работу | Нарушение авторских прав |