Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

Как уже было сказано, в С++ переменные можно объявлять, в отличие от Delphi, прямо в теле программы, что упрощает процесс понимания исходного кода, а также добавляет удобства программисту. Типы данных в С++ и Delphi похожи, в большей степени зависят от версии компилятора. Фирма Borland старается как можно более унифицировать типы данных в компиляторе С++ и Delphi Оба языка являются объектно-ориентированными (опять же, это зависит от компилятора). Оба языка поддерживают большие объемы данных, например, массивы с большим количеством элементов.

  1. по описанию основных операторов

Если взять, например операторы ввода-вывода на экран, то мы уже тут увидим принципиальное различие между этими двумя языками. В Паскале ввод-вывод максимально упрощается, предлагая программисту основные операции (чтение-вывод строки, чисел и т.д.). В Си же операции ввода-вывода являются скорее универсальным, чем удобным инструментом, ориентированным скорее на профессионала, чем на новичка.

  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, умеющее создать несколько потоков, получит больше времени операционной системы, и соответственно сможет выполнить больший объём работы.

Создать дополнительный поток в Delphi поможет объект TThread.

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

File -> New -> Other...

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

Глава 2. Практические аспекты выбора среды программирования

В данной работе нами показан практический пример, каким образом выбор среды программирования влияет на итоги реализации проекта. Данные проект является стратегическим планом реально существующей компании, которая столкнулась с проблемой выбора языка реализации программ для инди-игр.

Резюме проекта

Наименование предприятия

ООО «Nord-development»

Направление деятельности организации

Создание компьютерных игр

Стоимость инвестиционного проекта, тыс. руб.

3 900

Срок окупаемости

Местонахождение проекта

Российская Федерация, Республика Саха (Якутия), г. Якутск

Количество дополнительно создаваемых новых рабочих мест в рамках проекта

4

Наименование игр, которые планируется создать

«The Last Sword», «Mischief»

Модель распространения

Pay-to-play

Описание проекта

Суть проекта заключается в создании компании-производителя инди-игр для персональных компьютеров с операционной системой Windows.