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

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

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

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

Добавлен: 29.03.2023

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

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

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

type

ProcА = procedure;

ProcB = procedure(var х,y: integer);

FuncF= function(x: real): real;

В первом случае объявлена процедура без параметров, во втором с двумя переменными целого типа и функция вещественного типа с одним параметром.[14] Затем следует ввести переменные для этих типов:

var

a: ProcА;

f: FuncF;

Следует соблюдать правило что переменная и подпрограмма совпадали по типам и числу формальных параметров для присваивания, а функции должны иметь одинаковый тип. В памяти процедурная переменная занимает 4 байта в которых размещен полный адрес подпрограммы. Процедурные переменные используются как переменные в выражения (в случае если переменная функция), может использоваться в виде оператора (если она процедура), как составная часть (компонента) других более сложных переменных или как параметр передаваемый в подпрограмму.[17] Эта идея единства подпрограммы и данных получила развитие в концепции объектно-ориентированного программирования.

Для Qbasic можно привести некое подобие процедурного типа в виде использования подпрограмм [10] на рисунке 14.

Рис. 14. Использование подпрограмм

2.14. Тип класс.

В С++ класс используется как элемент объектно-ориентированного программирования.[15] В уже описанных выше типе перечисления и типе структура они использовались как объекты для хранения неких данных заданных программистом. При внешнем сходстве с типом структура основным отличием класса является то, что он может не только содержать данные, но и некие функции (методы) которые будут работать с этими данными.[8]

В языке С++ все члены класса относятся к одной из областей доступа - public (доступный любым функциям), protected (доступный только собственным методам и методам производных классов), private (доступный только собственным методам).[16]

Приведем на рисунке 15 пример создания класса PrintKurs где он доступен любым функциям (public), kurs это метод (функция печати), PrintK Kurs будет объектом, а вызовом функции класса является Kurs.kurs

Рис. 15. Создание класса

При объявлении типа класс так же как и при объявлении структур не происходит выделение памяти т.к. для этого необходимо объявить какую либо переменную (объект) этого типа.

2.15. Тип файл

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


Например, зная размерность массива и тип его данных можно заранее выделить область памяти где он будет храниться. Если же это невозможно определить или необходимый объем будет меняться, то можно выделить некий тип, где все эти значения будут храниться последовательно не определять величину этой последовательности – это и будет файловый тип данных.[14]

Доступ к элементам этой последовательности может осуществляться последовательно (от первого ко второму и т.д.) и произвольно (для этого доступ осуществляется по номеру элемента).[2]

Рассмотрим работу с физическими файлами.

Pascal различает текстовые файлы, типизированные (последовательность элементов единого) типа и нетипизированные (последовательность элементов произвольного типа) файлы.[17] Доступ к ним происходит с помощью переменных файлового типа:

var

f1: file of char; (типизированный файл)

f3: file; (нетипизированный файл)

t: text; (текстовый файл)

Так же можно задать файловый тип в описании типов аналогичным образом как и в описании других уже рассмотренных типов.

Доступ к физическим файлам появляется только после того как переменная ассоциирована с файлом Assign (f,  ‘C:\file.txt’) – при этом надо иметь ввиду что имя файла это не только его имя, но и путь к нему и он является строковым типом. При этом надо иметь ввиду правила наименования файлов (правило 8.3 для DOS, ограничение длины пути и т.п.). Вместо имени на диске можно указать имя логического устройства.

Для работы с файлами используются различные процедуры - reset() открыть файл для чтения (переместится на первый элемент и в случае типизированного файла откроет его и для чтения и для записи) и в случае отсутствия файла сообщит об ошибке, close - закроет файл(это надо делать обязательно после завершения работы с файлом чтобы сохранить все что с ним делали, erase уничтожит, filesize(): longint возвратит количество элементов, seek(f, n); - сместит указатель на позицию n и т.д.

Особенностью работы с нетипизированными файлами заключается в том, что надо указать число байт которое будет считано или записано за 1 раз reset(f, size); – size это количество байт, blockread (f, x, size); - х количество блоков, size соответственно размер. Имеются некоторые различия при работе с разными типами файлов, например процедура открытия для записи APPEND применима только к текстовым файлам.[17] Помимо этого имеется множество тонкостей и особенностей, описание которых займет большой объем.

В Qbasic нетипизированный файл называется бинарным. Открытие файлов и создание (в сочетании APPEND) выполняется командой OPEN.[10]


OPEN "C:\text.txt" FOR INTPUT AS #1 - INPUT для открытия в режиме ввода, #1 – порядковый номер канала который работает с файлом. После завершения как и в Pascal файл надо закрыть командой CLOSE #1. Чтение осуществляется командой INPUT, а запись PRINT. Если файл объявлен двоичным - BINARY, то необходимо указывать длину записи в байтах. Для записи в конец файла используется APPEND. Помимо этого есть множество других команд для работы с типом файл.

Основной отличительной особенностью работы с файлами в С++ является то, что в нем нет операторов которые работают с файлами. Все действия с ними выполняются с использованием функций включенных в стандартные библиотеки.[16] Они оперируют не только с физическими файлами. Чтобы осуществлять действия с файлами имеются классы ifstream для файлового вывода, ofstream для ввода которые определены в fstream. Для реализации файлового ввода-вывода нужно включить в программу заголовочный файл include# <fstream>. Пример на рисунке 16. При этом надо помнить, что для

Рис. 16. Создание файла С++

Файлы можно открывать в различных режимах ios::in - для чтения, ios::out - для записи, ios::trunc - очистить файл и др. f1.open("text.txt", ios::app); и при этом режимы открытия файлов можно комбинировать с помощью поразрядной логической операции ИЛИ ( | ).

Произвольный доступ к файлу осуществляется с использованием методов seekg() и seekp() - ifstream &seekg(смещение, позиция); также имеются указатели определяющие в каком месте именно будет производиться следующая операция и многое другое.[15].

Все описанные методы и некоторые возможности работы с типом файл лишь малая часть возможностей.

Рассмотрев, описав и проанализировав типы файлов различных языков программирования и выяснены общие закономерности и различия. Приведены сравнительные характеристики базовых типов данных.

Приведены практические примеры некоторых методов работы с разными типами данных.

ЗАКЛЮЧЕНИЕ

Глубокий подход в изучении и понимание концепции типов данных используемых в языках программирования помогает отбирать из имеющихся возможных вариантов решения конкретных поставленных задач наиболее эффективные решения с применением современных методов работы с данными, реализации заложенных методов и возможностей. Уверенное знание функций, процедур, имеющихся приемов по работе с разными типами данными позволяет сформулировать и претворить в жизнь решения нестандартных задач при программированию. Рассматривая и сравнивая типы данных вплотную подошли к типам используемым в объектно-ориентированном программировании.


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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Белов М. П. Основы алгоритмизации в информационных системах: Учеб.пособие. - СПб.: СЗТУ, 2003. - 85 с.
  2. Введение в язык паскаль: учебное пособие. / В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова. – М.: КНОРУС, 2011. – 384 с.
  3. Волкова Т.И. Введение в программирование: учебное пособие. – М.; Берлин: Директ-Медиа, 2018. -138 с.
  4. Вылиток А.А., Матвеева Т.К. Динамические структуры данных. Задание практикума. Язык Паскаль: Учебно-методическое пособие. (издание второе, переработанное и дополненное). - М.: Издательский отдел Факультета ВМиК МГУ им. М.В. Ломоносова, 2015. – 54 с.
  5. Гусева А.И. Учимся программировать: PASCAL 7.0. задачи и методы их решения.– 2-е изд., испр. и дополн. – М.: Диалог-МИФИ, 2011. – 216 с.
  6. Жданова Т.А., Бузыкова Ю.С. Основы алгоритмизации и программирования: учеб. пособие.– Хабаровск: Изд-во Тихоокеан. гос. ун-та, 2011. – 56 с.
  7. Кадырова Г. Р. Основы алгоритмизации и программирования: Учебное пособие. – Ульяновск: УлГТУ, 2014. – 95 с.
  8. Макаров В.Л. Программирование и основы алгоритмизации. Учеб. пособие. - СПб.: СЗТУ, 2003. – 110 с.
  9. Марапулец Ю. В. Язык С++. Основы программирования. Издание второе, исправленное и дополненное. - Петропавловск-Камчатский: КамГУ им. Витуса Беринга, 2019. - 158 с.
  10. Мельникова О.И., Бонюшкина А.Ю. Начала программирования на языке QBasic: Учебное пособие. – М.: Издательство ЭКОМ, 2002. – 304 с.
  11. Основы алгоритмизации и программирования: Метод. указ. / Сост.: И.П. Рак, А.В. Терехов, А.В.Селезнев. - Тамбов: Изд-во Тамб. гос. техн. ун-та, 2004. - 24 с.
  12. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. / А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов и др.: - Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013. - 153 с.
  13. Рейзлин В.И. Язык С++ и программирование на нём: учебное пособие 2-е изд., переработанное Томский политехнический университет. – Томск: Издательство Томского политехнического университета, 2015. – 212 с.
  14. Рапаков Г. Г., Ржеуцкая С. Ю. Программирование на языке Pascal. - СПб.: БХВ-Петербург, 2004. — 480 с.
  15. Страуструп Б. Программирование: принципы и практика с использованием С++, 2-е изд.: Пер. с анг. – М.: ООО «И.Д. Вильямс», 2016. – 1328 с.
  16. Страуструп Б. Язык программирования C++. Специальное издание. Пер. с англ. - М.: Издательство Бином, 2011. -1136 с.
  17. Фаронов В.В. Турбо Паскаль 7.0 Начальный курс. Учебное пособие. – М.: Издательство «ОМД Групп», 2003. – 616 с.
  18. ISO/IEC 14882:2017 [ISO/IEC 14882:2017] Programming languages — C++ // International Organization for Standardization URL: https://www.iso.org/standard/68564.html (дата обращения: 22.12.2019).
  19. ISO/IEC/IEEE 24765:2017 [ISO/IEC/IEEE 24765:2017,ISO/IEC/IEEE 24765:2017] Systems and software engineering — Vocabulary // International Organization for Standardization URL: https://www.iso.org/standard/71952.html (дата обращения: 19.12.2019).
  20. TIOBE Programming Community Index Definition // TIOBE Software BV URL: https://www.tiobe.com/tiobe-index/programming-languages-definition (дата обращения: 19.12.2019).