Файл: Основы программирования на языке Pascal (Типы данных Pascal).pdf
Добавлен: 29.03.2023
Просмотров: 223
Скачиваний: 1
СОДЕРЖАНИЕ
Глава 1. Основы работы со ссылочным типом в языке программирования Pascal
1.2 Организация работы с ссылочного типа
2. Создание ссылочных в языке программирования
2.1. Основные действия с Паскаля
Глава 3. Этапы создания ссылочных типов в языке программирования
Введение
Во всех вычислительных системах память принадлежит к ресурсам, которых зачастую не хватает. Управлять памятью – самая основная забота разработчиков ПО, в связи с тем, что для нее необходимо создавать программы, которые отлично употребляют память.
Статические также как и динамические переменные вызывают по их адресу. Без адресов нереально получение доступа к необходимым ячейкам памяти, но, если применять статические переменные, то можно конкретно адреса не указывать, а обращаться к переменным по именам. Компилятор располагает все переменные в памяти и производит подстановку подходящих адресов в код команды.
Управления памятью относится к широкому классу объектов. Разработчики ПО сами должны резервировать места под переменные, определять значение указателя, очищать память – удалять динамическую переменную. При использовании динамических переменных кое-где в программе необходимы указатели на них. Компиляторы предугадывают места под указатели, об инициализациях указателей должны хлопотать разработчики ПО.
Актуальность темы заключается приемущественно в том, что в современном мире написания многофункциональных программ без использования динамических структур данных практически нереально. Кроме того, нужно умение оперирования с такой структурой, применяя правильные подходы к голосованию способов решений назначенных задач. Поэтому исследование этого вопроса находится нужным, как в теории так и на практике.
Объектом работы выступают ссылочные типы языка программирования 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. Основные действия с Паскаля
Из программирования известно, определение типа определяет:
- ограничение допустимых значений;
- представление в ЭВМ;
- допустимых операций данными этого .
Выше в работе определение массива и тип данных – . Над базовыми данных, числовыми символьными, могут определенные операции. также и над выполняются операции, подразумевают операции элементами массива. действие, которое выполнять над целиком, причем при условии, массивы однотипны, – присваивание. Если в объявлены две одного типа, ,