Порядок выполнения работ




Тема: Внешний интерфейс

(Обработка данных в файле, пакетный режим)

1. Цель работы:

· Получение представления внешнего интерфейса;

· Освоение работы с пакетным режимом;

· Закрепление навыков работы с файлом.

Обеспечение

· Инструментальная система, поддерживающая TurboPascal.

· Инструментальная система, поддерживающая C или C++.

 

3. Продолжительность выполнения работы:

Продолжительность выполнения работы определяется объемом задачи:

1. Если задание выполняется на базе предыдущей работы (тема «Несвязанные динамические структуры»), то продолжительность работы составляет 2 академических часа.

2. Если выдается новое задание, то продолжительность работы составляет 4 академических часа.

4. Задание:

Разработать программу с использованием внешнего интерфейса. Работу выполнить на базе практической работы «Несвязанные динамические структуры», в соответствии с индивидуальным заданием.

Требование к заданию

5.1. Входные данные должны вводиться из файла.

5.2. Выходные данные должны выводиться в файл.

5.3. Входной и выходной файлы - текстовые.

5.4. С клавиатуры вводится только имена файлов.

5.4. Обеспечить в программе многовариантную обработку данных, т.е. во входном файле должны находиться не один вариант данных, а любое количество вариантов данных..

5.5. В выходном файле должны находиться все варианты данных в соответствии с входным файлом.

5.6. Выходной файл должен быть оформлен в виде протокола, т.е. в нем должны быть представлены:

- наименование программы;

- дата и время запуска программы;

- входные данные;

- промежуточные данные (в случае необходимости);

- выходные данные в формализованном виде;

- время работы программы (в крайнем случае, время окончании работы программы);

- каждый вариант данных должен быть разделен от другого варианта разделителем.

5.7. Имена файлов задаются из вне: в командной строке.*

5.8. Если в командной строке не указаны имена входного и/или выходного файла, то имена файлов устанавливаются по умолчанию.*

*-

Порядок выполнения работ

1) Анализ задания;

2) Разработать тесты;

3) Разработать алгоритм программы;

4) Разработать программу на исходном языке программирования;

5) Отладить программу;

6) Проверить работу программы по тестам;

7) Оформить отчет;

8) Защитить работу.

 

7. Содержание отчета:

1) Тема работы;

2) Цель работы;

3) Обеспечение;

4) Задание этой работы и индивидуальное задание;

5) Требования к программе;

6) Тесты;

7) Блок-схема программы;

8) Текст программы;

9) Содержимое входного файла с указанием имени файла.

10) Содержимое выходного файла с указанием имени файла.

 

8. Теоретическая часть

8.1. Стандартная поддержка определения даты и времени:

В модуле time.h содержат определение типа time_t:

Typedef long time_t

и структуры tm, которая объявлена следующим образом:

struct tm

{

int tm_sec; //секунды

int tm_min; //минуты

int tm_hour; //часы (0-23)

int tm_mday; //дата (1-31)

int tm_mon; //месяц (0-11)

int tm_year; //год (тек.год -1900)

int tm_wday; // день недели (0-6; воскр =0)

int tm_yday; // день в году ()

int tm_isdst; //

};

Функции работы с датой и временем:

Asctime Преобразует время и дату из формата структуры типа tm в символьную строку
Ctime Преобразует время и дату из формата time_t в символьную строку
difftime Вычисляет интервал между двумя заданными временными параметрами
localtime Преобразует дату и время из формата time_t в формат структуры tm
Mktime Преобразует дату и время в календарный формат

Примеры:

А)

struct tm *ptr;

time_t lt;

lt=time(NULL);

ptr=localtime(&lt);

printf(asctime(ptr));

Б)

#include <io.h>

int main(void)

{

time_t tt;

tm *pMyTime;

tt = time(Null);

pMyTime = localtime(&tt);

cout << “Текущее время: ”;

cout << asctime(pMyTime);

pMyTime;

return;

}

8.2. Стандартная поддержка реализации ввода данных в командной строке (Пакетный режим).

Иногда бывает полезно, а то и просто необходимо передать данные в программу через командную строку, для этого в языках программирования имеется инструментальная поддержка:

  Pascal
    int main(int argc, char *argv[],char **env[])
Количество параметров командной строки содержится ParamCount (стандартная переменная, ее не надо описывать) Argc (аргумент функции main)
Параметры командной строки.   ParamStr() (стандартная переменная, ее не надо описывать) argv[] (аргумент функции main)
Задание параметров не выходя из интегрированной среды RUN/Arguments. RUN/Arguments.

Примеры чтения данных с командной строки:

А) на языке программирования С:

#include <stdio.h>

int main(int argc, char *argv[],char **env[])

{

int i;

printf("\nколичество аргументов в командной строке = %d",argc);

printf("\nаргументы командной строки:");

for(i=0; i<argc; i++) printf("\n%d. %s",i,argv[i]);

return(i);

}

Б) на языке программирования Pascal:

Var

I: Word;

begin

Writeln('Количество параметров командной строки =', ParamCount);

Writeln('Параметры командной строки:');

for I:= 0 to ParamCount do

Writeln(I,'. ',ParamStr(I));

Setbuf();

end.

Работа с файлами

 

Обобщенный алгоритм работы файлом:

1. Открытие файла

2. Обработка в соответствии с задачей,

3. Закрытие файла

 

Таблица стандартных функций работы с файлами в Pascal и C/С++.

  Pascal C С++
Описание файловой переменной F: text; F: file of data; F: file; FILE *fp;  
Открытие файла: Assign(F,’FILE1.DAT’) Reset (var F [size: word]) (чтение) Rewrite (var F [size: word]) (запись) Append (var F: Text) (добавление) fp = fopen (filname,””). FILE *fp; режим обработки и вид файла(t b), параметры режимы: r- w-a-  
Закрытие файла. Close(f) fclose (fp)  
Функции последовательного доступа: чтение из файла, запись в файл.    
А) поэлементная обработка Read([var F: Text;] [v1,v2,…,Vn]) Write([var F:Text;] [V1,V2,…Vn]) Getc(FILE *fp) Puts(int ch, FILE *fp) Возвращает int fgets () fputs() и т.д.  
Б) поблочная обработка BlockRead (file,Buf,N,Result) BlockWrite(file,Buf,N,Result) file - файловая переем. buf – Памяти обмена информации, n - число компонентов, result - число обработанных компонентов fread(buf,c,bytes,fp) fwrite(buf,c,bytes,fp) buf - указатель на область памяти, откуда будет проис-ходить обмен информацией c - сколько единиц записи bytes - Длина каждой единицы записи в байтах fp - указатель файла  
В) Форматный ввод/вывод См. А fscanf(FILE *fp,const char * string) fprintf (FILE *fp,const char * string)
Функции произвольного доступа    
Переустановка файлового указателя. seek () Точка отсчета, всегда начало файла. fseek (FILE *fp, long, int to) кол/ байт от точки отчета, где to – точка отсчета: SEEK_SET; SEEK_END; SEEK_CUR  
Определения отступа указателя от начала файла   Ftell(FILE *fp)  
Размер файла. Filesize(f) fseek (FILE *fp, long, int to)  
Определение конца файла Eof(f) feof(fp) EOF  
Отсекание информация от файлового указателя до конца файла Truncate(f)    
               

 


Примеры

9.1 Пример программы на языке программирования С

 

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include <time.h>

void main()

{

int ch;

time_t t;

char filename[100];

int *a,i,n;

float sr,disp;

FILE *file;

randomize();

clrscr();

//Открытие файла

printf("Imya faila: "); scanf("%s", &filename);

file = fopen(filename, "rt");

if (file==NULL) {

printf("Fail ne nayden");

exit(1);

}

//Выделение памяти

fscanf(file,"%d",&n);

a=(int*)malloc(n*sizeof(int));

if (!a) {

printf("Nedostatochno Pamyati!!");

getch();

exit(1);

}

//Считывание данных из файла

for (i=0;i<n;i++) fscanf (file,"%d",(a+i));

fclose(file);

//Вычисления

sr=0;

for (i=0;i<n;i++) sr+=*(a+i);

sr=sr/n;

disp=0;

for (i=0;i<n;i++) disp=disp+(*(a+i)-sr);

//Вывод результата на экран

for (i=0;i<n;i++) printf ("X[%d]=%d\n",i+1,*(a+i));

printf ("\n");

printf ("X srednee=%f\n",sr);

printf ("D=%f\n",disp);

//Запись результата в файл

printf("Vvedite imya faila dlya zapisi resultata: ");

scanf("%s", &filename);

file = fopen(filename, "wt");

if (file==NULL)

{

printf("ne poluchilos sozdat fail\n");

exit(1);

}

fprintf (file,"Programma dla rascheta Xsr i dispersii dx,zadannogo massiva\n");

for (i=0;i<n;i++) fprintf (file,"X[%d]=%d\n",i+1,*(a+i));

fprintf (file,"X srednee=%f\n",sr);

fprintf (file,"Dispersia=%f\n",disp);

t=time(NULL);

fprintf (file,"%s",ctime(&t));

fclose(file);

free (a);

}

Типовые ошибки

1) Ввод данных осуществляют с клавиатуры, затем записывают в файл. Что не соответствует требованиям к заданию.

2).Реализуется один вариант данных в файле. Что не соответствует требованиям к заданию.

11. Контрольные вопросы

1) Представить доказательства выполнения каждого требования к заданию.

2) Расскажите как реализовать пакетный режим (ввод данных в программу с командной строки) в языках программирования.

3) Сравните реализацию пакетного режима в Си и Pascal.

4) Стандартные подпрограммы обработки файлов в C и Pascal.

5) Сравнить обработку файлов в C и Pascal.

6) Стандартные подпрограммы, поддерживающие определение времени и даты.

7) Что такое внешний интерфейс?

8) В каком случае рекомендуется хранить данные в файле?

9) В каком случае рекомендуется задавать данные только с клавиатуры?

10) Когда следует хранить данные в текстовом файле, а когда -в бинарном?

11) Стандартные подпрограммы обработка времени и даты.

 

Литература

1. Г.С.Иванова «Основы программирования»(издание второе) издательство «МГТУ имени Н.Э.Баумана» 2002

2. Минакова Н.И. И др. “Методы программирования” Москва Изд-во “Вузовская книга”, 1999, Стр 280

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


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