Основы алгоритмизации и языки программирования: Практикум на С++ (Система программирования С++. Процедурное программирование. Объектно-ориентированное программирование), страница 5

  return;

}

main()

{

  int k,k1,k2;

  float a1[nmax],a2[nmax];

  float a[nmaxr];

  clrscr();

  cout<<"Введите кол-во элементов 1-го массива:";

  cin>>k1;

  vvod(k1,a1);

  sort(k1,a1);

  cout<<"Введите кол-во элементов 2-го массива:";

  cin>>k2;

  vvod(k2,a2);

  sort(k2,a2);

  k=k1+k2;

  slijanie(k1,a1,k2,a2,a);

  vyvod(k,a);

  getch();

}      

1.3. Этапы разработки программ

Разработка программы задачи состоит из следующих этапов:

 - проектирование структурной схемы программы;

- программировние функций верхнего уровня схемы;

- программирование функций нижнего уровня схемы.

Условие задачи.

Имеются данные о рабочих: фио, зарплата. Определить рабочих, у которых зарплата меньше величины, задаваемой по запросу.

Требования к программе: обработка массивов в ОП.

Пример практического занятия №3

Цель работы (этап 1):  приобретение практических навыков  по проектированию структурной схемы  программы,   программирова-нию функций верхнего уровня схемы программы (главной функции и  функций меню).

Структурная схема программы и форма меню:

 main

                    |                        1 Ввод данных

                menu                    2 Вывод результатов

                  /  \                       0 Выход

 vvod1  vyvod

 vvod2

 Предусмотреть программирование  двух способов управления меню: по идентификатору опции и по выделенному цвету опции (в нашем примере - по идентификатору опции).

//файл заголовков lab2.hpp

#define zaglushka(st) gotoxy(2,23); cprintf("%*s",60," "); \

gotoxy(2,23); cprintf("%s",st); getch();

#include <conio.h>

#include <iostream.h>

#include <iomanip.h>

const int max_rab=100;  //определение именной константы

const int col=25;

void vvod1(int n,char m1[][20]);//прототип функции

void vvod2(int n,float m2[]);   //прототип функции

void vyvod(int n,char m1[][20],float m2[]);//прототип функции

char menu();

//файл кодов lab2_f1.cpp, функции main и menu

#include "lab2.hpp"

main()

{

char selector;

clrscr();

do

{

selector=menu();

}

while (selector!='0');

}

char menu()

{

char ch;

char fio[max_rab][20];

float zarp[max_rab];

int kol;

clrscr();

gotoxy(col,10);

cout<<" МЕНЮ";

gotoxy(col,12);

cout<<"1 Ввод данных";

gotoxy(col,14);

cout<<"2 Вывод результатов";

gotoxy(col,16);

cout<<"0 Выход";

gotoxy(col,20);

clreol();

cout<<"Ваш выбор:";

cin>>ch;

switch (ch)

{

case '1':clrscr();

             cout<<"Введите количество рабочих:";

             cin>>kol;

             vvod1(kol,fio);

             vvod2(kol,zarp);

             break;

case '2':vyvod(kol,fio,zarp);

             break;

case '0':break;

}

return(ch);

}

//файл кодов lab2_f2.cpp, функции vvod1,vvod2,vyvod с заглушками

#include “lab2.hpp”

void vvod1(int n,char m1[][20])

{ zaglushka("Вызвана функция vvod1, нажмите <Enter>"); }

void vvod2(int n,float m2[])

{ zaglushka("Вызвана функция vvod2, нажмите <Enter>"); }

void vyvod(int n,char m1[][20],float m2[])

{ zaglushka("Вызвана функция vyvod, нажмите <Enter>"); }

Пример практического занятия №4

Цель работы  (этап 2):  приобретение практических навыков по программированию функций нижнего уровня схемы программы  (функций ввода, обработки, вывода).

//файлы lab2.hpp и lab2_f1.cpp без изменений

//файл кодов lab2_f2.cpp

#include "lab2.hpp"     //вкл. файла заголовков

void vvod1(int n,char m1[][20])//определение функции, n-принимае-

{                              //мый параметр,m1[]-возвращаемый

clrscr();

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

{

cout<<"Фио раб.N%"<<i+1<<':';

cin>>m1[i];

}

return;

}

void vvod2(int n,float m2[])//определение функции,n-принимаемый

{                           //параметр,m2[]-возвращаемый

clrscr();

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

{

cout<<"Зарплата раб.N%"<<i+1<<':';

cin>>m2[i];

}

return;

}

void vyvod(int n,char m1[][20],float m2[])//определение функции,

{          //n,m1[],m2[] - принимаемые параметры

float min;

clrscr();

cout<<"Минимум:";

cin>>min;

gotoxy(25,3);

cout<<"Фио            Зарплата";

int k=0;

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

if (m2[i]<min)

{

k++;

gotoxy(15,k+4);

cout<<m1[i];

gotoxy(40,k+4);

cout<<setw(8)<<setprecision(2)<<m2[i];

if (k==10)

{

gotoxy(10,24);

cout<<"Нажмите <Enter>";

getch();

k=0;

clrscr();

gotoxy(25,3);

cout<<"Фио            Зарплата";

}

}

gotoxy(10,24);

cout<<"Конец вывода,нажмите <Enter>";

getch();

}

Лабораторная работа №2

Выполнить последовательно  два  этапа  разработки программы, используя пункты лабораторной работы №1.

Глава 2

ПРОЦЕДУРНОЕ   ПРОГРАММИРОВАНИЕ

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

Изучение метода  построено на разработке программы мини-системы управления и содержит практические занятия №5,6 и лабораторные работы №3,4,5,  соответствущие последовательности этапов разработки программ. Работа студента заключается в последовательном, согласно иерархии, программировании, отладке и выполнении функций пользовательского интерфейса, файловой обработки и управления базой данных мини-системы управления.

Пример задания

Разработать мини-систему   управления  картотекой  служащих. Картотека содержит следующие  реквизиты:  табельный  номер,  фио, должность, оклад. Создать базу данных с индексной организацией.

2.1. Проектирование  структуры программы и интерфейсов

функций. Программирование главной функции и функций меню.

Пример практического занятия №5