Файл: Основы программирования на языке Pascal (Типы данных Pascal).pdf

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

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

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

Добавлен: 29.03.2023

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

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

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

Введение

Во всех вычислительных системах память принадлежит к ресурсам, которых зачастую не хватает. Управлять памятью – самая основная забота разработчиков ПО, в связи с тем, что для нее необходимо создавать программы, которые отлично употребляют память.

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

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

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

Объектом работы выступают ссылочные типы языка программирования Pascal.

Предмет работы – создание ссылочных типов в ящыке программирования Pascal.

Цель исследования – найти значимость использования ссылочных типов в языке программирования Pascal при разработке программ.

В согласовании с поставленной целью были определены последующие задачи работы: найти и провести изучение нужной литературы по теме исследования; выделить теоретические базы использования ссылочных типов; на практических заданиях разглядеть механизмы работы со ссылочным типом; сделать заключения по совершенной работе.

Базу для написания работы составили работы таковых создателей, как Фаронов В.В., Шпак Ю.А., Меженный О.А., Немнюгин С.А., внесших большой вклад в исследовании этой темы.


Глава 1. Основы работы со ссылочным типом в языке программирования Pascal

1.1 Типы данных Pascal

Паскаль (англ. Pascal) — один из более узнаваемых языков программирования, употребляется для обучения программированию в старших классах и на первых курсах высших учебных заведений, является базой для ряда остальных языков.

Pascal – язык с серьезной типизацией переменных. Это означает, что мы непременно должны тип каждой , и не можем переменной 1-го значение другого (если лишь не равнозначны).

В примера возьмем программы, вычисляющей круга по радиусу:

S := r*r*3.14;

Если укажем, что у S целочисленный тип, будет работать правильно, в связи с , что результатом r*r*3.14 будет дробь, и целочисленной переменной значение мы можем.

Очередной . Программа складывает 2-ух переменных:

a:=5; b:=4; c := a+b;

мы укажем, a, b и c являются числами, полностью разумно , что после программы значение c равно 9-ти. что будет, a и b являются не , а ординарными знаками, а c – ?

a:=‘5’; b:=‘4’; c := a+b;

В данном случае не можем математически два (ну правда, же не математически сложить буквы), и знаки подставятся друг к , другими словами c будет равно ‘54’.

считая этого, пуска программы каждой переменной в выделяется некое байт, которое от типа переменной. И значения, может принять , ограничены этим байт. Например, с типом данных выделяется 1 байт , и она может значения от 0 255, всего 256, что числом вариантов, можно закодировать байтом. Если мы укажем переменной тип , но присвоим значение, например, 1000, работать не .

Переменная целочисленного может принимать какое целое из спектра этого типа. того, является типом.

Таблица 1- целочисленного типа

Тип

Длина (байт)

Диапазон

byte

1

0..255

shortint

1

-128..127

integer

2

-32768..32767

word

2

0..65536

longint

4

-2147483648..2147483647

К типу относят числа и числа с запятой. Тем менее, мы присвоить вещественному целое значение.

2- Вещественные типы

Тип

Длина (байт)

Диапазон

single

4

1.5*10-45 - 3.4*1038

real

6

2.9*10-39 - 1.7*1038

double

8

5*10-324 - 1.7*10308

extended

10

3.4*10-4932 - 1.1*104932


3- Символьный тип

Тип

Длина (байт)

Диапазон

char

1

Любой символ кодировки ASCII

типа char присвоить любую , цифру, или другой символ кодировки. Также порядковым типом.

char - это один символ,  строка - это символов. Строкой быть, к примеру, , состоящее из букв. Также относят к структурным .

Таблица 4- Строковый

Тип

Длина (байт)

Диапазон

string

256

255 символов кодировки ASCII

Переменная логического может принимать два значения: или false ( или ложь). порядковым типом.

5- Логический тип

Тип

Длина (байт)

Диапазон

boolean

1

true, false

тип указывает, переменная может значения от значения, до . К примеру, мы , что переменная принимать значения от 5 до 25. можем объявить тип так: a: 5..25;

1.2 Организация работы с ссылочного типа

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

В роль указателя меньше, но, же, которые разработчики ПО усваивать базисный работы с ними того, чтоб осознать внутренние обработок и выполнения компьютерных программ.

переменных – это первого байта памяти, которые них отводятся. этого структурного (массива и записи) адресом является первых байтов частей. В Turbo имеется возможность доступа к хоть байтам оперативки ее адресам помощи определенного в system массива , MemW и MemL, информации либо ее сходу ячейки памяти (1, 2 4 байта). Это опасное действие, они исключаются в 32- системе программирования [9].

В индексов в данном используются адреса, в виде, который в DOS: сегменты: относительно начал . Данный типичный записей адресов с тем, что в системах DOS размер памяти на сегменты, которых менее 64 . Для получений адресов из сектор: смещение добавляет к секторам шестнадцатеричные нули ( 4 нуля в двоичной ), а позже складывает со смещениями. методом быть адресовано 1 Мбайт .


Еще есть из методов к оперативки – применять слово absolute время описания . В таком случае будут размещаться по тем в оперативки, которые после absolute. служебное слово настолько же , как и обращаться к при помощи массива. Однако, можно применять и поболее неопасный , позволять совмещение в 2-ух переменных с именованием. В языке имеется особая для получения на переменные ( процедуры) – она как @. Есть эквивалентная ей addr [11]. К примеру, @x addr(х) – адрес х.

Есть и обратная , чтоб получать переменных по адресам, обозначаемых ^. К примеру, р^ – переменная с р.

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

В имеется два вида указателя: и нетипизированный. Типизированные – это указатели переменные определенных , к примеру, целый, либо тип . Нетипизированные указатели – адреса первых областей памяти, в могут располагаться дынные вне от их .

Описание этих указателей делается -различному:

var a1: ^; {указатель на целого типа}

a2: ^; {указатель на }

a3 pointer; {нетипизированный }

Подчеркнём, что pointer совместимый с каким иным указателя.

Все располагаются в секторах либо в стеках ( они объявлены в ) и занимают там 4 б. Это дополнительные « траты» памяти. потому обыденную изредка делают и динамическим образом, эту возможность большой совокупности .

Чем больший имеет динамическая , тем наименьшую имеют накладные . К примеру, для в динамической памяти огромного размера 4 байта, которые на указатели, .

Типизированные указатели (ссылаются) на определенных типов. их объявления знак ^, который перед надлежащими данных. К примеру:

massiv = array[1..100] integer;

Var a1 : ^;

a2 : ^massiv;

В данном a1 является ссылкой () на целое , a2 – ссылкой на из 100 целых . Сейчас для к данным по адресу необходимо : a1^, a2^. Другими словами, a1 – адрес, а a1^ – то, по данному размещается.

Для участков динамически памяти (кучи) с расположения там данных употребляют функцию New (a), a – указатель.

После таковых команд выделены блоки нужных размеров ( расположения тех , на которые указатель a), а сам a приобретает значение этого выделенного памяти. К примеру, выполнения команд:

(a1);

New (a2);

будут два непрерывных в куче, 1-ый 2 б (т.к. целые числа 2 б в оперативки), 2-ой – 400 (100 * 4 б для каждых 100 целых чисел).

выполнения данных указатели a1 и a2 получают значения. Потому адресу, на они указывают, расположить конкретное соответственного типа. К ,

a1^ := 52;

a2^[1] := 8;

Если во выполнения процедуры в куче не непрерывных участков подходящего размера, программа окончит с сообщением «Out Memory». Для размеров доступных в динамически распределяемой (куче) необходимо функцию MaxAvail, возвращает размер непрерывного участка в на этот времени.


При динамической памяти процедура Dispose (a), a – указатель. К примеру:

(a1);

Dispose (a2);

После этой команды , которая до была связана с , ворачивается назад в (и быть может применена уже иных сведений). значение указателей меняется, т.е. в нем и остается адрес «несуществующего» (переданного в кучу) блока . Поэтому обращения к после реализации Dispose время времени приводит к .

В языке Паскаль константа Nil – указатель. Значение можно присвоить какому указателю, к :

a2 := nil;

Все реализация этого до вызовов Dispose (a2) приведет к , что указатель a2 сумеет ссылаться на один участков динамической , но сами в памяти остаются, т.е. участок не возвращенным в кучу. плохо по причине, что выполнении серий команд большая динамической памяти занятой, но будет применена.

указатель не с любым определенным данных. При описании употребляют тип Pointer. К : Var a : pointer;

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

выделений памяти обычную функцию (a, size), где a указателем, переменной Pointer, size – выделяемых участков , выражением типа (целочисленным типом). одном обращении к GetMem можно менее 65521 б памяти ( значение типа ) [6].

При освобождении и возврате ее в употребляют обычную FreeMem (a, size), a является указателем, типа Pointer, – размером освобождаемого в памяти, выражением Word.

Константа быть может и при работе с указателем.

Вначале, учете чрезвычайно размеров оперативки, тип употреблялся того, чтоб в программе опять один и тот участок оперативки. В технике это не значительным. , беря во особенность архитектуры типа IBM, применяется для в программах большых данных (превосходящих 64 ), необходимо применять структуры данных.

2. Создание ссылочных в языке программирования

2.1. Основные действия с Паскаля

Из программирования известно, определение типа определяет:

  • ограничение допустимых значений;
  • представление в ЭВМ;
  • допустимых операций данными этого .

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