- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
13.3. Реализация программы: методы структурного
программирования и программирования «сверху-вниз»
Создание проекта консольного приложения
Выполнить этапы создания проекта и ввести имя проекта TPlab4_1.
Создается исходный файл TPlab4_1.cpp, который будет содержать всего одну пустую функцию main():
int t_main(int args, _TCHAR* argv[])
{return 0;}.
Создание и добавление исходных файлов в проект
Проект должен содержать файл заголовков TPlab4_1.h и файл кодов TPlab4_1.cpp.
Создать файл TPlab4_1.h, ввести текст файла и сохранить его:
//файл заголовков TPlab4_1.h
#ifndef TPlab4_1_h
#define TPlab4_1_h
#include <iostream>
using std::cout;
using std::cin;
using std::cerr;
using std::endl;
using std::ios;
#include <fstream>
using std::ofstream;
using std::ostream;
using std::fstream;
using std::istream;
#include <iomanip>
using std::setiosflags;
using std::resetiosflags;
using std::setw;
using std::setprecision;
#include <cstdlib>
struct tip_client
{
int nomer;
char fam[15];
char im[10];
float balance;
};
int menu();
void textfile(fstream &);
void dobzap(fstream &);
void zamzap(fstream &);
void udzap(fstream &);
void vyvod(ostream &, const tip_client &);
int vvod_nomer(const char * const);
enum option{TEXTFILE=1, DOBAVLENIE, ZAMENA,
UDALENIE, END};
#endif
Добавить в файл кодов Tplab4_1.cpp подключение файла заголовков и тексты функций():
//файл кодов TPlab4_1.cpp
#include "stdafx.h"
#include "TPlab4_1.h"
int _tmain(int argc, _TCHAR* argv[])
{
fstream inoutf("client.dat", ios::in|ios::out);
if(!inoutf)
{
cerr<<"File client.dat ne otkr."<<endl;
ofstream outf(“client.dat”, ios::out);
tip_client client0={0,””,””,0.0};
for(int i=0;i<100;i++)
outf.write((char *)&client0, sizeof(tip_client));
outf.close();
}
int vybor;
while((vybor=menu())!=END)
{
switch(vybor)
{
case TEXTFILE:
textfile(inoutf);
break;
case DOBAVLENIE:
dobzap(inoutf);
break;
case ZAMENA:
zamzap(inoutf);
break;
case UDALENIE:
udzap(inoutf);
break;
case END: break;
default:
cerr<<"Neprav. vybor\n";
break;
}
inoutf.clear();
}
return 0;
}
int menu()
{
cout<<"\nMENU\n"
<<"1-Sozdanie textfile-vyvod\n"
<<"2-Dobavlenie zap\n"
<<"3-Zamena zap\n"
<<"4-Udalenie zap\n"
<<"5-Konec\n\n"
<<"\nVash vybor: ";
int menuvybor;
cin>>menuvybor;
return menuvybor;
}
void textfile(fstream &readf)
{
ofstream outprintf("print.txt", ios::out);
if(!outprintf)
{
cerr<<"File ne otkr."<<endl;
exit(1);
}
cout<<setiosflags(ios::left)<<setw(10)
<<"Nomer"<<setw(16)<<"Familija"<<setw(11)
<<"Imja"<<resetiosflags(ios::left)
<<setw(10)<<"Balance"<<endl;
outprintf<<setiosflags(ios::left)<<setw(10)
<<"Nomer"<<setw(16)<<"Familija"<<setw(11)
<<"Imja"<<resetiosflags(ios::left)
<<setw(10)<<"Balance"<<endl;
readf.seekg(0, ios::beg);
tip_client client;
readf.read((char *)&client, sizeof(tip_client));
while(!readf.eof())
{
if(client.nomer !=0)
{
vyvod(cout, client);
vyvod(outprintf, client);
}
readf.read((char *)&client, sizeof(tip_client));
}
}
void dobzap(fstream &dobf)
{
int schet=vvod_nomer("Vvedite novyj nomer scheta: ");
dobf.seekg((schet-1)*sizeof(tip_client), ios::beg);
tip_client client;
dobf.read((char *) &client, sizeof(tip_client));
if(client.nomer==0)
{
cout<<"Vvedite familiju, imja, balance\n: ";
cin>>client.fam>>client.im>>client.balance;
client.nomer=schet;
dobf.seekp((schet-1)*sizeof(tip_client), ios::beg);
dobf.write((char *) &client, sizeof(tip_client));
}
else
cerr<<"Schet № "<<schet<<" imeetcja"<<endl;
}
void zamzap(fstream &zamf)
{
int schet=vvod_nomer("Vvedite nomer scheta zamenj: ");
zamf.seekg((schet-1)*sizeof(tip_client), ios::beg);
tip_client client;
zamf.read((char *) &client, sizeof(tip_client));
if(client.nomer!=0)
{
vyvod(cout, client);
cout<<"Vvedite rashod (+) ili doplatu (-): ";
float rasdop;
cin>>rasdop;
client.balance+=rasdop;
vyvod(cout, client);
zamf.seekp((schet-1)*sizeof(tip_client), ios::beg);
zamf.write((char *) &client, sizeof(tip_client));
}
else
cerr<<"Schet № "<<schet<<" ne imeet inf."<<endl;
}
void udzap(fstream &udf)
{
int schet=vvod_nomer("Vvedite nomer scheta udalenija: ");
udf.seekg((schet-1)*sizeof(tip_client), ios::beg);
tip_client client;
udf.read((char *) &client, sizeof(tip_client));
if(client.nomer!=0)
{
tip_client client0={0, "", "", 0.0};
udf.seekp((schet-1)*sizeof(tip_client), ios::beg);
udf.write((char *) &client0, sizeof(tip_client));
cout<<"Schet № "<<schet<<" udalen"<<endl;
}
else
cerr<<"Schet № "<<schet<<" pustoj"<<endl;
}
void vyvod(ostream &output, const tip_client &cl)
{
output<<setiosflags(ios::left)<<setw(10)
<<cl.nomer<<setw(16)<<cl.fam<<setw(11)
<<cl.im<<setw(10)<<setprecision(2)<<resetiosflags(ios::left)
<<setiosflags(ios::fixed | ios::showpoint)<<cl.balance<<endl;
}
int vvod_nomer(const char * const nom)
{
int schet;
do
{
cout<<nom<<" (1 - 100):";
cin>>schet;
}
while(schet<1 || schet>100);
return schet;
}
Контрольные вопросы
Перечислите методы процедурного программирования.
Какова модель построения программы процедурным методом?
Перечислите управляющие структуры для конструирования программ.
Объясните правила конструирования структурированных программ.
Что означает правило пакетирования?
Что означает правило вложения?