Файл: Сравнительный анализ описания данных для различных языков программирования (Определение языка программирования С++).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 291

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1.4 Сравнение указанных элементов языков согласно варианту

Задание: Файлы. Потоки. Стандартные и нестандартные.

1.4.1 Файлы и потоки в C++

Файлом называют способ хранения информации на физическом устройстве. Файл -- это понятие, которое применимо ко всему -- от файла на диске до терминала.

В C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т. д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.

Текстовый поток -- это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

Двоичный поток -- это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.

Организация работы с файлами средствами C

Объявление файла: FILE *идентификатор;

Пример: FILE *f;

Открытие файла: fopen (имя физического файла, режим доступа)

Режим доступа -- строка, указывающая режим открытия файла файла и тип файла

Типы файла: бинарный (b); текстовый (t)

Значения и описания:

r Файл открывается только для чтения

w Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан

a Файл открывается для записи в конец (для до записи) или создается, если не существует

r+ Файл открывается для чтения и записи.

w+ Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан

a+ Файл открывается для записи в конец (для до записи) или создается, если не существует

Например

f = fopen (s, «wb»);

k = fopen («h: ex. dat», «rb»);

Неформатированные файловый ввод-вывод:

Запись в файл: fwrite (адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);

Например: fwrite (& dat, sizeof (int), 1, f);

Чтение из файла: fread (адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);


Например: fread (& dat, sizeof (int), 1, f);

Закрытие файла: fclose (имя логического файла);

Форматированный файловый ввод-вывод

1) Функции fgetc () и fputc () позволяют соответственно осуществить ввод-вывод символа.

2) Функции fgets () и fputs () позволяют соответственно осуществить ввод-вывод строки.

3) Функции fscanf () и fprintf () позволяют соответственно осуществить форматированный ввод-вывод и аналогичный соответствующим функциям форматированного ввода-вывода, только делают это применительно к файлу.

Файловый ввод-вывод с использованием потоков

Библиотека потокового ввода-вывода: fstream

Связь файла с потоком вывода: ofstream имя логического файла;

Связь файла с потоком ввода: ifstream имя логического файла;

Открытие файла: имя логического файла. open (имя физического файла);

Закрытие файла: имя логического файла. close ();

1.4.2 Файлы и потоки в Delphi

Работа с файлами в Delphi.

Технология работы с файлами в системе Delphi требует определённого порядка действий:

Прежде всего файл должен быть открыт. Система следит, чтобы другие приложения не мешали работе с файлом. При этом определяется, в каком режиме открывается файл — для изменения или только считывания информации. После открытия файла в программу возвращается его идентификатор, который будет использоваться для указания на этот файл во всех процедурах обработки.

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

Файл закрывается. Теперь он опять доступен другим приложениям без ограничений. Закрытие файла гарантирует, что все внесённые изменения будут сохранены, так как для увеличения скорости работы изменения предварительно сохраняются в специальных буферах операционной системы.

В Delphi реализовано несколько способов работы с файлами. Познакомимся со классическим способом, связанным с использованием файловых переменных. Файловая переменная вводится для указания на файл. Делается это с помощью ключевого слова File:

var F: File;

Описанная подобным способом файловая переменная признается как типизированной, и дает возможность работать с файлами с неизвестной структурой. Сведения считываются и вносятся побайтно блоками, объем которых указывается при открытии файла, вплоть от 1 байт. Но чаще используются файлы, состоящие из последовательности одинаковых записей. Для описания такого файла к предыдущему описанию добавляется указание типа записи:


var F: File of тип_записи;

В качестве типа могут использоваться базовые типы, или создаваться свои. Важно только, чтобы для типа был точно известен фиксированный размер в байтах, поэтому, например, тип String в чистом виде применяться не может, а только в виде String[N].

Данные, считанные из файла или записываемые в файл, содержатся в обычной переменной, которая должна быть того же типа, что и файловая. Поэтому сначала в программе лично я описываю нужный тип, а затем ввожу две переменные этого типа — файловую и обычную:

Для текстовых файлов тип файловой переменной в этом случае TextFile, а тип обычной — String.

Для открытия файла нужно указать, где он расположен. Для этого файловая переменная должна быть ассоциирована с нужным файлом, который определяется его адресом. Адрес файла может быть абсолютным, с указанием диска и каталогов ('C: Мои документы Мои рисунки FileName. ini'), или относительным, тогда он создаётся в папке с. exe файлом программы. Для задания относительного адреса достаточно указать имя файла с нужным расширением. Делается это оператором AssignFile:

AssignFile (SaveF, 'C: Мои документы Мои рисунки FileName. ini');

AssignFile (SaveF, 'FileName. ini');

Теперь файл должен быть открыт.

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

Открытие файла оператором Reset откроет существующий файл к считыванию или записи данных, и его указатель будет установлен на начало файла:

Rewrite (SaveF);

Reset (SaveF);

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

Rewrite (SaveF, 1);

Reset (SaveF, 1);

Чтение файла производится оператором Read:

Read (SaveF, SaveV);

Запись в файл производится оператором Write:

Write (SaveF, SaveV);

При этом чтение и запись производится с текущей позиции указателя, затем указатель устанавливается на следующую запись. Можно проверить, существует ли нужный файл, оператором FileExists:

if FileExists ('FileName. ini')

then Read (SaveF, SaveV);

Принудительно установить указатель на нужную запись можно оператором Seek (SaveF, N), где N — номер нужной записи, который, как и почти всё в программировании, отсчитывается от нуля:

Seek (SaveF, 49); - установка указателя на 50-ю запись.

При последовательном чтении из файла рано или поздно будет достигнут конец файла, и при дальнейшем чтении произойдёт ошибка. Проверить, не достигнут ли конец файла, можно оператором EOF (аббревиатура End Of File), который равен true, если прочитана последняя запись и указатель находится в конце файла:


while (not EOF (SaveF)) do

Read (SaveF, SaveV);

Для текстовых файлов вместо Read и Write используются операторы Readln и Writeln, умеющие определять конец строки. В комментариях приведена процедура чтения текстового файла.

Оператор Truncate (SaveF) позволяет отсечь (стереть или, если хотите, удалить) все записи файла, начиная от текущей позиции указателя, и до конца файла.

В конце работы с файлом его необходимо закрыть. Это делается оператором CloseFile (SaveF);

Потоки в Delphi делают функцию имитации псевдопараллельной работы приложения. Как понятно, для организации многозадачности операционная система выделяет каждому приложению, выполняющемуся в настоящий момент, определённые кванты времени, длина и количество которых определяется его ценностью. Потому объём работы, который приложение может выполнить, определяется тем, сколько таковых квантов оно сумеет получить в единицу времени. Для операционной системы каждый поток является самостоятельной задачей, которой выделяются кванты времени на общих основаниях. Потому приложение Delphi, которое умеет сделать несколько потоков, получит больше времени операционной системы, и соответственно сумеет выполнить больший объём работы. Создать дополнительный поток в Delphi поможет объект TThread.

1. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток.

File -> New -> Other…

В результате будет создан модуль, содержащий заготовку кода, реализующего дополнительный поток Delphi.

2. Практическая часть

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

Игра аналог телевизионного шоу «Поле чудес».

программа паскаль си язык

2. 2 Спецификация программы

Программа написана при помощи пакета программ Borland Delphi 7 и Borland C++Builder 6. Для установки программы достаточно скопировать папку с программой в нужный вам каталог. Для запуска программы нужно запустить файл Pole. exe (для C++) или файл Pole. exe (для Delphi)

Тестировалась на компьютере: AMD® Phenom II ® X4 955 BE @ 3. 20GHz 3. 20 ГГц, 8. 00 ГБ ОЗУ

ОС Windows 10 Pro

2.3 Блок-схема алгоритма решения задачи


Так как состав модулей и подпрограмм на обоих языках совпадает, то схема иерархии модулей и инструкция пользователя совпадают и имеют единое отображении для обоих языков, а также состав и содержание модулей на С++ и на Delphi совпадают, различия заключаются только в синтаксических особенностях языков.

2.4 Схема иерархии модулей

2.5 Спецификации подпрограмм каждого модуля

Таблица 1- Таблица спецификаций модулй программы

Имя

Назначение

Тип п/п

Параметры

Тип результата

Zastavka

1

Button1Click

Вызов формы первого раунда

Процедура

-

-

2

Button2Click

Выдает сообщение, содержащее информацию о правилах игры

Процедура

-

-

3

Button3Click

Закрывает форму

Процедура

-

-

Round1, Round2, Round3

1

FormShow

Выбор вопроса раунда, автоматический выбор режима ввода букв вручную.

Процедура

-

-

2

FormClose

Вызов форм, уточняющей хотите ли вы выйти, перезапустить программу либо не совершать действий

Процедура

-

-

3

RadioButton2Click

Переход к режиму ввода слова целиком

Процедура

-

-

4

Button1Click — Button33Click

Реакция программы на выбор буквы, в зависимости от сгенерированного вопроса.

Процедуры

-

-

5

Button34Click

Очищение введенного значения при режиме ввода слова целиком {18, 'www.gugn.ru'}.

Процедура

-

-

6

Button35Click

Отправка введенного значения на проверку при режиме ввода слова целиком.

Процедура

-

-

Final

1

FormShow

Выбор вопроса раунда, автоматический выбор режима ввода букв.

Процедура

-

-

2

FormClose

Вызов форм, уточняющей хотите ли вы выйти, перезапустить программу либо не совершать действий

Процедура

-

-

3

Button1Click — Button33Click

Реакция на выбор буквы, в зависимости от сгенерированного вопроса.

Процедура

-

-

4

Button34Click

Очищение введенного значения.

Процедура

-

-

5

Button35Click

Отправка введенного значения на проверку.

Процедура

-

-

Net_bukvi

1

Button1Click

Вызов формы вращения барабана

Процедура

-

-

Est_bukva

1

Button1Click

Вызов формы вращения барабана

Процедура

-

-

Baraban

1

Button1Click

Закрытие вспомогательных форм, переход к раунду

Процедура

-

-

2

FormCreate

Присвоение переменной значения 0

Процедура

-

-

3

Timer1Timer

Организация анимации вращающегося барабана, и смену значений панели, на которой в итоге появится значение очков на кону

Процедура

-

-

4

Button2Click

Отключение таймера, присвоение определенного значения очкам на кону

Процедура

-

-

5

FormShow

Включение таймера

Процедура

-

-

Viigriw

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-

Porajenie

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-

Spros

1

Button1Click

Закрывает приложение

Процедура

-

-

2

Button2Click

Запускает приложение сначала

Процедура

-

-