Инфоурок Информатика Другие методич. материалыМетодическое пособие по дисциплине Основы программирования Типы данных языка программирования Pascal

Методическое пособие по дисциплине Основы программирования Типы данных языка программирования Pascal

Скачать материал
библиотека
материалов

hello_html_m10072df1.png

ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ, НАУКИ И МОЛОДЕЖНОЙ ПОЛИТИКИ

ВОРОНЕЖСКОЙ ОБЛАСТИ

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВОРОНЕЖСКОЙ ОБЛАСТИ

«СЕМИЛУКСКИЙ ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ»






Костюкова Е.В.






методическое пособие

на тему «Типы данных языка программирования Pascal»

по дисциплине «Основы программирования»

для обучающихся 2 курса

(специальность 09.02.03 Программирование в компьютерных системах)




hello_html_11adb95.jpg



Семилуки

2018

ДЕПАРТАМЕНТ ОБРАЗОВАНИЯ, НАУКИ И МОЛОДЕЖНОЙ ПОЛИТИКИ

ВОРОНЕЖСКОЙ ОБЛАСТИ

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВОРОНЕЖСКОЙ ОБЛАСТИ

«СЕМИЛУКСКИЙ ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ»







Костюкова Е.В.






методическое пособие

на тему «Типы данных языка программирования Pascal»

по дисциплине «Основы программирования»

для обучающихся 2 курса

(специальность 09.02.03 Программирование в компьютерных системах)





hello_html_11adb95.jpg


Семилуки

2018

Рекомендовано методическим советом «СПК»

Автор-составитель: Костюкова Е.В.













В данном методическом пособии изложены основные положения по разделу «Типы данных» дисциплины «Основы программирования», входящей в профессиональный учебный цикл. Методическое пособие предназначено для обучающихся 2-го курса специальности 09.02.03 Программирование в компьютерных системах.















© Костюкова Е.В., 2018г.

©Семилукский политехнический колледж

СОДЕРЖАНИЕ




ВВЕДЕНИЕ


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

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

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

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

Рекомендуется для обучающихся 2-го курса специальности 09.02.03 Программирование в компьютерных системах..


Язык программирования Pascal

НЕМНОГО ИСТОРИИ



Первыми языками программирования высокого уровня были Фортран, Ко­бол и Алгол, появившиеся в 50-е годы XX века. Первые два из них «здравству­ют» и поныне — это языки-долгожители, а Алгол стал родоначальником целого семейства языков, в числе которых и Паскаль. В настоящее время насчитывается несколько тысяч языков программирования, большая часть из которых имеет довольно узкую специализацию.



hello_html_61e384.jpg

Рисунок 1. История создания языков программи­рования.

Первая версия языка АЛГОЛ появилась в 1958 году. Одним из разработчиков АЛГОЛа был «отец» ФОРТРАНа Джон Бэкус. Название языка ALGorithmic Language под­черкивает то обстоятельство, что он предназначен для записи алгоритмов.

В 1967 году швейцарский ученый Никлаус Вирт создал свою версию — АЛГОЛ W. Это было связано с необходимостью найти такой язык программирования, который можно было бы использовать для обучения студентов методам разработки программ, таким как «программирование сверху вниз», «структурное программирование» и т. д. Вирту не понравился ни один из существовавших в то время языков, и в 1968 году он приступил к разработке своего собственного.

В 1970 году в мире программирования произошли по крайней мере два вели­ких события — появились операционная система UNIX и новый язык программирования.

Вирт назвал его в честь великого французского математика и рели­гиозного философа XVII века Блеза Паскаля. Паскаль изобрел вычислительное устройство, именно поэтому новому языку было присвоено его имя.

Благодаря своей четкости, логичности и другим особенностям Паскаль на­долго занял свою нишу, являясь прекрасным языком для обучения программи­рованию. Паскаль использовался и для разработки серьезных программ-прило­жений. Шутили, что Вирт разработал игрушку, но многие отнеслись к ней слишком серьезно. В 1975 году вновь два события стали вехами в истории про­граммирования — Билл Гейтс и Пол Аллен заявили о себе, разработав свою версию Бейсика и Йенсен выпустили описание языка «Pascal User Manual and Report».

Впоследствии появились различные версии языка и его расширения. Наиболее известным расширением стал пакет Турбо Паскаль фирмы Borland, появившейся в 1983 году. В начале 1984 году он был перенесен в среду MS-DOS и стал очень популярным. С тех пор появилось несколько версий Турбо Паскаля.

Фирма Borland/Inprise завершила линию продуктов Турбо Паскаль и перешла к выпуску системы визуальной разработки для WindowsDelphi.



Данные и величины



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

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

hello_html_m1c3ecd2.gif



Главные элементы программы:

  • Переменная – ячейка (или несколько ячеек) оперативной памяти компьютера, которой присвоено имя. Содержимое ячейки может меняться в ходе выполнения программы. Вид информации, содержащейся в ячейке определяется типом переменной.

  • Константа – содержимое этой ячейки памяти фиксировано и не изменяется в ходе выполнения программы.

  • Операторы – (составные и простые) задают ход дальнейших действий.

Типы данных



Турбо Паскаль характеризуется большим разнообразием типов данных, представленных на схеме:

hello_html_5e428666.jpg


Рассмотрим каждый тип подробнее:

Простые типы данных

Целый тип

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


Таблица 1. – Целочисленные типы данных.


Область изменения данных

Занимаемый размер в байтах

Integer

-32768…32767 (-215…215-1)

2

Shortint

-128 … 127

1

Longint

-2147483648…2147483647 (-231… 231-1)

4

Byte

0 … 255

1

Word

0 … 65535 (0 … 216-1)

2

Longword

0 … 4294967295

4


Примечание: В классичесоком Turbo Pascal тип Integer занимает в памяти 2 байта, но в версии PascalABC диапазон данного типа расширен и составляет от -2147483648 до 2147483647 и занимает 4 байта в памяти.

Пример:

Для переменных х, y, z, описанных в разделе объявления переменных, как

Var x: integer;

y: byte;

z: word;


операторы у:= 256; z:= -2; будут некорректными, так как значения данных переменных не попадают в заданный интервал изменения данных. При компиляции подобной программы, Turbo Pascal обнаружит ошибку «Error 256: Constant out of range», что означает «Выход за границы диапазона». Необходимо изменить тип переменных или значение.


Для величин целого типа существуют стандартные процедуры и функции, а также арифметические операции, которые приведены в таблице 2.


Операции бывают унарными и бинарными. Унарная операция одна: изменение знака – (число).



Таблица 2. – Стандартные процедуры и функции целочисленного типа.


Пример


Арифметические операции над целочисленными данными

+

сложение

целый

х:=2; y:=5; z:=x+y;

z =7

-

вычитание

целый

х:=2; y:=5;

z:=y-x;

z =3

*

умножение

целый

х:=2; y:=3; z:=x*y;

z =6

/

деление

вещественный

х:=6; y:=3; z:=x/y;

z=2,0

div

деление нацело, без остатка

целый

х:=5; y:=3;

z:=x div y;

z =1

mod

вычисление остатка от целочисленного деления

целый

х:=5; y:=3;

z:=x mod y;

z =2



Продолжение таблицы 2

Пример


Операции отношения

=

равенство

логический

х:=2; y:=5; x=y; false

<, >

меньше, больше

логический

х:=2; y:=5; x>y; false

<>

неравно

логический

х:=2; y:=5; x<>y; true

<=, >=

меньше или равно, больше или равно

логический

х:=2; y:=5; x<=y; true

Стандартные процедуры

dec(x, N)


N – целого типа

Уменьшает значение переменной Х на 1 (если второй параметр отсутствует) или на N

целый

Dec(5) = 4

Dec(5,4) = 1

inc(x, N)


N – целого типа

Увеличивает значение переменной Х на 1 (если второй параметр отсутствует) или на N

целый

Inc(5) = 6

Inc(5,4) = 9

Стандартные функции

abs(x)


Возвращает модуль х

целый

x:= -3; a:=abs(x);

a=3

arctan(x)

Арктангенс Х (радианы)

вещественный

x:=3; y:=arctan(x);

y = 1,249

cos(x)


Возвращает косинус x

(х в радианах)

вещественный

x:=45; y:=cos(x);

y = 0,5253

sin(x)


Возвращает синус x

(х в радианах)

вещественный

x:=45; y:=sin(x);

y = 0,8509

exp(x)


Возвращает еx (экспоненту)

вещественный

x:=2; y:=exp(x);

y = 7,3891

ln(x)



Возвращает натуральный логарифм x

вещественный

x:=3; y:=ln(x);

y = 0,6931

odd(x)

Проверка аргумента на нечетность: возвращает true, если аргумент нечетный, и false – если четный.

логический

x:=3; y:=odd(x);

y = true





Продолжение таблицы 2

Пример


succ(x)


Возвращает следующее целое число (х+1)

целый

x:=3; y:=succ(x);

y = 4


pred(x)


Возвращает предыдущее число (x-1)

целый

x:=3; y:=pred(x);

y = 2

chr(x)


Возвращает символ ASCII, код которого равен х

строковый

x:=85; y:=chr(x);

y = U



Вещественный тип

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

Вещественные значения могут изображаться в форме с фиксированной точкой, например 7.32, 456.72 или 0.015 (дробная часть отделяется не запятой, а точкой!), а также в форме с плавающей точкой, т. е. парой чисел вида <мантисса>E<порядок>.

Числа из предыдущего примера в форме с плавающей точкой будут записаны так: 7.32Е+00, 4.56721Е+02, 1.5Е-02.

Вещественный тип в стандарте языка Pascal называется REAL. В современных реализациях языка определены еще пять стандартных вещественных типов. Каждый тип характеризуется областью изменения возможных значений (см. таблицу 3).

Таблица 3. – Вещественный тип данных.


Кол-во значащих цифр

Real

2.9E-39…1.7E+38

или другой вид записи диапазона

2,9*10-39…1,7*1038

6

11 – 12

Single

1.5E-45…3.4E+38

или

1,5*10-45…3,4*1038

4

7 – 8

Double

5.0E-324…1.7E+308 или

5*10-324…1,7*10308

8

15 – 16

Extended

3.4E-4932…1.1E+4932

или

3,4*10-4932…1,1*104932

10

19 – 20



Продолжение таблицы 3




Comp

-2E+63 +1...2E+63 -1 или

-2*1063+1 … 2*1063-1

8

19 – 20

Currency

-922337203685477.5808… 922337203685477.5807

8

19 – 20


Примечание: В классичесоком Turbo Pascal тип Real занимает в памяти 6 байт, но в версии PascalABC диапазон данного типа расширен и составляет от 5.0∙10-324 до 1.7∙10308 и занимает 8 байт в памяти.

Типы Single, Double и Extended употребляются в программах, написанных на языке Pascal, только в том случае, если ПК снабжен сопроцессором «плавающей арифметики» (для процессоров IBM PC, начиная с Intel-80486 и старше, это условие всегда выполняется).

Тип Comp фактически является целым типом расширенного диапазона, но при этом не считается порядковым (т.е. к переменным типа Comp нельзя применять процедуры и функции, определенные только для порядковых типов – Inc, Dec и т.д.).

Бинарные арифметические и логические операции над значениями вещественного типа такие же, как операции над целыми числами, кроме div и mod (см. Таблицу 2).

В таблице 4 представлены стандартные функции вещественного типа.

Таблица 4. – Стандартные функции вещественного типа.

abs(x)


Возвращает модуль х

вещественный

x:= -3.89; a:=abs(x);

a=3.89

arctan(x)

Арктангенс Х (радианы)

вещественный

x:=3.89;

y:=arctan(x);

y = 1,31918

cos(x)


Возвращает косинус x

(х в радианах)

вещественный

x:=45.5; y:=cos(x);

y = 0,05307

sin(x)


Возвращает

синус x

(х в радианах)

вещественный

x:=45.5;

y:=sin(x);

y = 0,99859



Продолжение таблицы 4

exp(x)


Возвращает еx (экспоненту)

вещественный

x:=2.83; y:=exp(x);

y =16,94546

ln(x)


Возвращает натуральный логарифм x

вещественный

x:=3.04; y:=ln(x);

y = 1,11186

Sqr(x)

Возвращает квадрат числа х

вещественный

x:=3.04; y:=sqr(x);

y = 9,24160

Sqrt(x)

Возвращает квадратный корень числа х

вещественный

x:=25.48; y:=sqrt(x);

y = 5,04777

Round(x)

Преобразует x в целое число путём округления до ближайшего целого

вещественный

x:=25.58;

y:=round(x);

y = 26

Trunc(x)

преобразует x в целое число путём отбрасывания дробной части

вещественный

x:=25.58;

y:=trunc(x);

y = 25

Int(x)

Возвращает целую часть аргумента х

вещественный

x:=25.58; y:=int(x);

y = 25

Frac(x)

Возвращает дробную часть аргумента х

вещественный

x:=25.58; y:=frac(x);

y = 0.58




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



Тип широко применяется в логических выражениях и выражениях отношения.

Данные логического типа (Boolean) могут принимать одно из двух значений: True или False. Переменная или константа логического типа занимает 1 байт, в который записывается 1, если переменная или константа имеет значение True, и 0 – если значение False.

Между значениями True и False имеют место следующие отношения:


False < True Ord(False) = 0

Succ(False) = True Ord(True) = 1

Pred(True) = False






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


Символьный (литерный) тип char определяется множеством значений кодовой таблицы ЭВМ. Каждому символу присваивается целое число в диапазоне от 0 до 255. Для кодировки используется код ASCII. Переменная или константа символьного типа занимает в памяти 1 байт. Значение символа заключается в апострофы: ‘З’, ‘g’, ‘а’.

Над данными символьного типа определены следующие операции отношения: =, < >, >, <, <=, >=, вырабатывающие результат логического типа.

Для данных символьного типа определены следующие стандартные функции:

chr(x) – преобразует выражение типа byte в символ и возвращает значение символа (например, s:=Chr(128); переменной s символьного типа присвоится значение ‘А’);

ord(s) – преобразует символ s в его код типа byte и возвращает значение кода (например, x:=Ord(159); переменная х = ‘Я’);

pred(ch) – возвращает предыдущий символ, ch – переменная литерного типа (s:=pred(‘b’); переменная символьного типа s = ‘a’);

succ(ch) – возвращает следующий символ, ch – переменная литерного типа (s:=succ(‘b’), переменная s = ‘c’);



Приоритет операций

Pascal допускает использование сложных выражений, в которых могут объединяться, арифметические, логические и другие операции. В этом случае необходимо учитывать порядок выполнения операций, который определяется приоритетом операций. В таблице 5 приведены приоритеты операций.

Таблица 5. – Приоритет операций.

Операции с равным приоритетом обычно выполняются слева направо.

Перечисляемый и интервальный типы


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


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

Определенное имя типа затем используется для описания переменных. Например:

Type

Weak =(sun, mon, tues, wen, thurs, frid, sat);

Var day: weak;

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

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


К переменным перечисляемого типа применяются следующие функции:

Ord(значение из списка) – возвращает целое число, которое показывает, какое положение занимает это значение в списке.

Например: ord(mon) возвращает значение 1.

ord(sat) возвращает значение 6.

Pred(значение из списка) - возвращает значение, предшест-вующее аргументу порядкового типа.

Например: pred(mon) возвращает значение sun.

pred(sat) возвращает значение frid.

Succ(аргумент порядкового типа) - возвращает значение, следующее за аргументом порядкового типа.

Например: succ(mon) возвращает значение tues.

succ(thurs) возвращает значение frid.



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

Например: Type mark = 1..5;

Alf = ‘A’..’Z’;

Var lit, math: mark;

Letter: alf;

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


Пример программы:

uses crt;

type

weak=(sun,mon,tues,wen,thurs,frid,sat);

var i:integer;

day:weak;

begin

for i:=0 to 6 do

begin

writeln('номер по порядку ',ord(day));

if day=sun then writeln('Ура! Воскресенье!!!!!!!!!!!');

day:=succ(day);

end;

readln

end.


Результат работы программы:

hello_html_68187c6e.jpg

Структурированные типы данных

Массивы

Массивом называется упорядоченная по номерам (индексам) последовательность данных одного типа.

К каждому элементу массива доступ осуществляется через имя массива и порядковый номер элемента.

Длинной массива называется количество элементов, содержащихся в нем.

Номер элемента называется его индексом. Индекс может быть любого дискретного типа, кроме longint.

Вектор – это пример массива, в котором элементы нумеруются одним индексом.

Массивы бывают одномерными, n-мерными.

Описание массива объявляется в разделе var с использованием конструкции:

hello_html_m127f7a74.gif

hello_html_m54b39848.gif: :





Пример описания одномерного массива:

а: array [1..10] of integer; т.е. массив с именем а может содержать 10 элементов целого типа.

Пример описания двумерного массива:

b: array [1..5,1..5] of integer; т.е. массив с именем b может содержать 25 элементов целого типа, 5 в строке и 5 в столбце.


При описании переменных в программе, их типы можно указывать сразу в разделе описания переменных, либо предварительно ввести специальный пользовательский тип и в дальнейшем пользоваться им (см. стр.16):

Пример:

Type

ar = array[1..10] of integer;

Var

b,c : ar;


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

При обращении к элементу массива указывается имя массива и индекс (порядковый номер) элемента: а[5].


В группе n-мерных массивов очень часто используются двумерные массивы (n=2). Обращение к элементу такого массива следующее: b[3,2].

Двумерные массивы представляют собой плоские таблицы или матрицы.

hello_html_m4583f273.gif

В данном случае – это квадратная матрица размерностью 3х3 будет представлена на языке программирования Turbo Pascal следующим образом:


a: array[1..3,1..3] of «тип элементов»;


Действия над массивом как единым целым:


Такие действия допустимы лишь в двух случаях:

  • Присваивание значений одного массива другому;

  • Операции отношения «равно», «не равно».

В обоих случаях массивы должны иметь одинаковые типы (тип индексов и тип элементов).

Пример:

Var f, s: array [1..5] of real;

Begin

.

f:=s;

..

При выполнении операции присваивания f:=s; все элементы массива f станут равны соответствующим элементам массива s.


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


Пример заполнения двумерного массива с клавиатуры:

Var d: array [1..5,1..10] of char; {массив d, размерностью 5х10, содержит элементы символьного типа, т.е. один элемент – это буква}

Begin

For i := 1 to 5 do {внешний цикл повторяется 5 раз}

For j := 1 to 10 do {внутренний цикл повторяется 10 раз}

Readln(d[i,j]) {ввод пользователем буквы}

End.


Пример вывода одномерного массива на экран:

Var d: array [1..5] of char; {массив d, размерностью 5 элементов, т.е. букв в массиве}

Begin

For i := 1 to 5 do {цикл повторяется 5 раз}

Writeln(d[i]) {вывод буквы на экран}

End.



Строки


Строка – это последовательность символов. Каждый символ занимает 1 байт памяти (код ASCII). Количество символов составляет длину строки, которая может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными.


Строковая константа – это последовательность символов, заключенных в апострофы. Например:

методическое пособие’

доброе утро’

Строковая переменная описывается в разделе описания переменных:

Var имя строки: string [максимальная длина строки]


Например:

Var name: string[30]; т.е. строковая переменная name может содержать 30 символов.


Параметр длины может и не указываться в описании, таким образом длина строки будет равна 255 символов – максимальной величине (т.е. Var name: string;).

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


Символы внутри строки нумеруются от единицы (name[3] или name[i] – обращение к третьему и i-му символу строки name соответственно).


Тип string и стандартный тип char совместимы. Строки и символы могут использоваться в одних и тех же выражениях. Строковые выражения строятся из строковых констант, переменных, функций и знаков операций.


В таблице 6 приведены операции, процедуры и функции строковых выражений.

Таблица 6. – Операции, процедуры и функции строкового типа данных.


ЭВМ’+’ IBM’+’ PC

рез.: ‘ЭВМ IBM PC

=,

<>,

<,

>,

<=,

>=

сравнение двух строк происходит слева направо до первого несовпадающего символа

Логический (true, false)

ЭВМ’=’IBM’ рез. False

ЭВМ’<>’IBM’ рез. True

Стандартные функции

Copy(S,poz,N)

S – string

Poz, N – целые

Выделяет из строки S подстроку длиной в N символов, начиная с позиции Poz

строка

S:=’Computer’

Copy(S,2,3)

Результат: ‘omp’

Concat(S1,S2,..Sn)

Сцепление (конкатенация) строк S1,S2,..Sn в одну строку

строка

Concat(‘AA’,’BB’)

Результат: ‘AABB


Length(S)

Определяет текущую длину строки S

целый

S=’IBM PC’

Length(S) = 6


Pos(S1,S2)

Определяет начальную позицию подстроки S1 в строке S2

целый

S2=’Computer’

S1=’Com’ Pos(S1,S2) = 1

S1=’AA’

Pos(S1,S2) = 0


Стандартные процедуры

Delete(S,poz,N)

S – string

Poz, N – целые

Удаление N символов из строки S, начиная с позиции Poz

строка

S:=’Computer’

Delete (S,2,3)

Результат: ‘Cuter’


Insert(S1,S2,Poz)

S1, S2 – string

Poz – целый

Вставка строки S1 в строку S2, начиная с позиции Poz

строка

S1:=’ter’

S2:=’Compu’

Insert (S1,S2,6)

Результат: ‘Computer’


Продолжение таблицы 6

Str(X,S)

X – целое или вещественное

S - строка

Преобразует числовой тип в строковый

строка

X:= 5236;

S: string

Str(x,s)

S = ‘5236’

Val(S,V,Code)

S – string

V – целое или вещественное

Code - целое

Преобразует строковый тип в числовой

Число V

См. листинг программы под таблицей


hello_html_m5ca77e85.jpg


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

Применяя процедуру удаления подстроки из строки мы, тем самым, уменьшаем текущую длину строки. Процедура вставки увеличивает длину строки.



Множества

Множеством называется совокупность однотипных элементов, рассматриваемых как единое целое.


Множество может содержать от 0 до 255 элементов, которые не пронумерованы и не упорядочены. Каждый отдельный элемент не идентифицируется и с ним нельзя выполнить какие-либо действия. Действия выполняются только над множествами в целом.

Тип элементов множества называется базовым, который может быть любым скалярным, за исключением типа Real.

Переменные множественного типа описываются так:

Var <идентификатор>: set of <базовый тип>

Конкретные значения множества задаются в виде списка в квадратных скобках. Любое множество может быть пустым, т.е. [].

Примеры:

[3,4,7,9,12] – множество из пяти целых чисел

[1..100] – множество целых чисел от 1 до 100

[‘a’,’b’,’c’] – множество из трех букв


Type

Number = set of ‘0’ ..’9’;

Ch = set of 0..9;

Color = set of (green, black, white);


Var chis : set of 0..9;


Не имеет значения порядок записи элементов множества, т.е. [1,2,3] и [3,2,1] эквивалентные множества. Каждый элемент в множестве учитывается только один раз, поэтому множество [1,2,3,4,2,3,4,5] эквивалентно [1..5].


Нельзя вводить значения во множественную переменную оператором ввода и выводить оператором вывода. Записать значение в множественную переменную можно с помощью присваивания: А:=[50,100,150].


Операции над множествами представлены в таблице 7. Результаты операций над множествами подчиняются правилам алгебры множеств.


Таблица 7. Операции над множествами.


Операции отношения используются для сравнения множеств (см. таблицу 8). Результат отношения является логическая величина. Операции < и > не применимы для множеств. Предполагается, что множества А и В содержат элементы одного типа.

Таблица 8. Отношения для сравнения множеств.


Операция вхождения устанавливает связь между множеством и скалярной величиной, тип которой совпадает с базовым типом множества. Если х – такая скалярная величина, а М – множество, то операция вхождения записывается так:

х In M

Результат - логическая величина true, если значение х входит в множество М, и false – в противном случае.


Пример: М=[1,6,7,9,10]

5 in M – false

6 in M – true.

Файлы


В Паскале определены текстовые файлы, типизированные и нетипизированные. Файл, не содержащий ни одного элемента, называется пустым.

В Pascal понятие файла употребляется в двух смыслах:

  • как поименованная информация на внешнем устройстве (внешний файл);

  • как переменная файлового типа в Pascal-программе (внутренний файл);


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


Файловый тип переменной – это совокупность однотипных элементов, количество которых заранее (до исполнения программы) не определено.

Описание файловой переменной:


Var <имя переменной>: file of <тип элемента>;


Тип элемента может быть любым, кроме файлового.

Пример: var f: file of byte;

Fi : file of integer;

A : file of char;


Файл можно представить как последовательную цепочку элементов, пронумерованных от 0 , заканчивающуюся специальным кодом, называемым маркером конца.

Количество элементов, хранящихся в данный момент в файле, называется его текущей длиной. Существует специальная ячейка памяти, которая хранит адрес элемента файла, предназначенного для текущей обработки (записи или чтения). Этот адрес называется указателем или окном файла.

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

Rewrite(f)

где f – имя файловой переменной. При этом указатель устанавливается на начало файла. Если в файле была уже записана информация, то она удаляется и файл «готов» принять новые данные.


Запись в файл осуществляется процедурой

Write(f, s);

где s – переменная того же типа, что и f. Запись происходит туда, где установлен указатель. Сначала записывается значение, затем указатель смещается в следующую позицию. Если новый элемент вносится в конец файла, то сдвигается маркер конца.


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

Reset(f);

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


Чтение из файла осуществляется процедурой

Read(f, s);

где s – того же типа, что и f. Значение текущего элемента файла записывается в переменную s, указатель смещается к следующему элементу.


Доступ к элементам файла в стандартном Pascal последовательный, т.е. для того, чтобы прочитать n-ю запись файла, сначала необходимо прочитать все предыдущие записи с 1-ой по (n-1)-ю.


Функция Eof(f) проверяет маркер конца файла (end of file). Это логическая функция, которая получает значение true, если указатель установлен на маркер конца, в противном случае – false.

Внешние файлы. На магнитном диске могут создаваться файлы любых типов, которые используются как в режиме чтения, так и в режиме записи. Идентифика­тор файла состоит из имени и типа файла:

<имя файла>.<тип файла>


Имя содержит от 1 до 8 латинских букв и (или) цифр; тип — необязательный элемент (от 0 до 3 символов), указывающий на характер информации, хранимой в файле.

Пример:

program.pas — в файле текст программы на Паскале;

number.dat — файл числовых данных;

names.тхт — текстовый файл.


Для организации связи между файловой переменной и внешним файлом в Турбо Паскале используется процедура назначения:


Assign(<имя файл. переменной>,<идентификатор внешнего файла>);


Здесь <идентификатор внешнего файла> - строковая вели­чина (константа или переменная).


Пример: Assign(Fi,'Number.dat');


После выполнения процедур Assign и Rewrite создается но­вый внешний файл, имя которого заносится в директорию.

Если файл открывается для чтения (Assign и Reset), то в указанном каталоге уже должен содержаться указанный внешний файл. В противном случае будет обнаружена ошибка.

Работа с файлом в программе завершается его закрытием с помощью процедуры


Close(<имя файловой переменной>)


Пример: Close(F)


Подведем итог. Для создания и заполнения файла требуется следующая последовательность действий:

1. Описать файловую переменную.

2. Описать переменную того же типа, что и файл.

3. Произвести назначение (Assign).

4. Открыть файл для записи (Rewrite).

5. Записать в файл данные (Write).

6. Закрыть файл (close).


Текстовые файлы. Текстовый файл — наиболее часто употребляемая разновидность файлов. Немагнитные внешние устройства (логические) работают только с тек­стовыми файлами. В программе файловая переменная текстового типа описывается следующим образом:

Var <идентификатор>: text;


Текстовый файл представляет собой символьную последовательность, разделенную на строки. Каждая строка заканчивается специальным кодом – маркером конца строки. Весь файл заканчивается маркером конца строки. Каждый символ представлен во внутреннем коде (ASCII) и занимает 1 байт.


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

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


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

Readln(f, <список ввода>);


Читает строку из файла с именем f, помещая прочитанное в переменные из списка ввода.

Writeln(f, <список ввода>);

Записывает в файл f значения из списка ввода, после чего выставляет маркер конца строки.


Для обнаружения конца строки в текстовом файле используется функция (End of line – конец строки).

Eoln(f)

Это логическая функция, которая принимает значение true, если указатель файла достиг маркера конца строки и false — в противном случае. Употребление процедуры WriteLn без списка вывода обозначает вывод пустой строки (в файле выставляется маркер конца строки).

Процедура ReadLn может использоваться без списка ввода. В этом случае происходит пропуск текущей строки в читаемом файле.


Для последовательного чтения данных из файла требуется вы­полнить следующие действия:

1. Описать файловую переменную.

2. Описать переменную того же типа.

3. Выполнить назначение (Assign).

4. Открыть файл для чтения (Reset).

5. В цикле читать из файла (Read).

6. Закрыть файл (Close).


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

Установка указателя на нужный элемент файла осуществляется процедурой

Seek(f, n);

F - имя файловой переменной, n – порядковый номер элемента.



Записи


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

Определение типа запись начинается с ключевого слова Record и заканчивается словом End. Между этими словами заключен список компонентов, называемых полями с указанием идентификаторов и их номерами.

Пример: type

person=record

name: string[15];

pol: char;

adres: string[50];

end;

var student: person;


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

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


Для облегчения обращения к полям переменной типа запись можно использовать оператор with в следующем виде:

With <имя переменной> do <оператор>


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

Тип запись может содержать вариантную часть, т.е. поля, которые в зависимости от некоторого условия, в разных ситуациях могут иметь разные типы. Определяющим условием является значение некоторого поля. Вариантная часть всегда располагается в конце перечисления всех полей и может быть только одна. Она начинается с ключевого слова case, после которого указывается имя поля и его тип, причем тип задается всегда идентификатором, после типа ставится слово of: case <поле> : <тип> of


Пример: type

Season = (spring, summer, autumn, winter);

Rec = record

Date: byte;

Case time: season of

Spring: (flower: string[10]);

Summer: (tree: string[15]);

Autumn: (list: char);

Winter: (temper: real);

End;

Здесь вначале определяется перечисляемый тип Season, который затем используется в описании вариантной части записи. Тип rec представляет собой запись, которая состоит из фиксированной и вариантной части.


Пример решения задачи с массивом записей:

Используя тип массив записей, составить программу для учета и обработки данных о машинах. Вывести на экран информацию о моделях, цена которых не превышает 3 тыс. y.e.


const n=5;

type avto = record

model: string[15];

year: 1900..2500;

price: real

end;

var sklad:array[1..n] of avto;

i:integer;

begin

for i:=1 to n do

with sklad[i] do

begin

write('Введите модель машины №',i,' ');readln(model);

write('год выпуска ');readln(year);

write('цена, у.е. ');readln(price);

end;

writeln;

writeln('Фирма предлгает такие машины: ');

for i:=1 to n do

with sklad[i] do writeln(model:15,year:6,' ',price:5:2,' y.e.');

writeln;

writeln('информация о моделях, цена которых не превышает 3 тыс. y.e.');

for i:=1 to n do

with sklad[i] do if price<=3000 then writeln(model:15,year:6,' ',price:5:2,' y.e.');

end.



Указатели


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

New(имя переменной)


Под каждую переменную независимо от ее способа создания выделяется место в оперативной памяти. Этот адрес может быть получен при помощи унарной операции @.


Пример: var I: integer;

Тогда операция @I позволяет получить адрес того байта, начиная с которого в памяти располагается переменная i. Выведем на экран этот адрес: writeln (@i);

Получим на экране: $1477617C


Пусть в программе присутствуют операторы

NEW (P1); NEW (P2); NEW (PM);


После их выполнения в динамической памяти оказывается выделенным место под три величины (две скалярные и один массив), которые имеют идентификаторы

P1^, P2^, PM^


При работе с указателями существует обратная операция получения значения переменной через ее адрес: i := p^ ;


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


Пример: Если переменной P1^ нужно присвоить значение 25, переменной P2^ присвоить значение символа ‘W’, а массив PM^ заполнить по порядку целыми числами от 1 до 100, то это делается так:

P1^: =25;

P2^: =’W’;

For I: = 1 To 100 Do PM^[I]: =I;


В качестве ссылочного выражения можно использовать:

  • указатель;

  • ссылочную функцию (т. е. функцию, значением которой является указатель);

  • константу Nil.


Nil – это зарезервированная константа, обозначающая пустую ссылку, т. е. ссылку, которая ни на что не указывает. При присваивании базовые типы указателя и ссылочного выражения должны быть одинаковы. Константу Nil можно присваивать указателю с любым базовым типом.

До присваивания значения ссылочной переменной (с помощью оператора присваивания или процедуры NEW) она является неопределенной.


В Паскале имеется стандартная процедура, позволяющая освобождать память от данных, потребность в которых отпала. Ее формат:

DISPOSE(<указатель>);


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

Особенно существенным становится эффект экономии памяти при удалении больших массивов.


Пример решения задачи с использованием указателей:

Разместить массив случайных чисел в динамической памяти, найти сумму чисел и удалить массив из памяти.

Type Item = Real;

DinArr = array[1..$FFF0 div SizeOf(Item)] of Item;

DinPrt = ^DinArr;

Var Arr: DinPrt;

I,N: integer; S:real;

Begin

Write('Введите количество элементов массива: '); Readln(N);

GetMem(Arr,N*SizeOf(Item));

Writeln('Массив случайных чисел:');

For i:=1 to N do begin

Arr^[i]:=random(1000)-500;

Write(Arr^[i]:8:2)

End;

Writeln; S:=0;

For i:=1 to N do S:=S+Arr^[i];

Writeln('Результат: Сумма = ',S);

dispose(Arr) End.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ


  1. Семакин И.Г. Основы алгоритмизации и программирования: учебник для студ. учреждений сред. проф. образования / И.Г. Семакин, А.П. Шестаков. – М.: Издательский центр "Академия", 2013. — 304 с.

  2. Немнюгин C.А. Turbo Pascal учебник для вузов. – СПб.: Питер, 2002. - 496с.: ил.

  3. Немнюгин С.А. Turbo Pascal: практикум. – СПб.: Питер, 2002. – 256 с.: ил.

  4. Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования: Учеб. Пособие. – М.: ФОРУМ: ИНФРА-М, 2002. – 432 с. – (серия «Профессиональное образование»).

  5. Pascal. Основные типы данных. [Электронный ресурс] URL: http://www.pascal.su/osnovnye-tipy-dannyh/
































методическое пособие

на тему «Типы данных языка программирования Pascal»

по дисциплине «Основы программирования»

для обучающихся 2 курса

(специальность 09.02.03 Программирование в компьютерных системах)

Автор-составитель: преподаватель Костюкова Е.В.

Компьютерный набор верстка

Костюковой Е.В.

  • Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
    Пожаловаться на материал
Курс профессиональной переподготовки
Учитель информатики
Курс повышения квалификации
Скачать материал
Найдите материал к любому уроку,
указав свой предмет (категорию), класс, учебник и тему:
также Вы можете выбрать тип материала:
Краткое описание документа:

В данном методическом пособии изложены основные положения по разделу «Типы данных» дисциплины «Основы программирования», входящей в профессиональный учебный цикл. Методическое пособие предназначено для обучающихся 2-го курса специальности 09.02.03 Программирование в компьютерных системах. Программист должен уметь применять все типы данных, понимать отличие типов друг от друга и знать, какой тип когда использовать.

Проверен экспертом
Общая информация
Учебник: «Информатика (базовый уровень)», Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

Номер материала: ДБ-190957

Скачать материал

Вам будут интересны эти курсы:

Курс повышения квалификации «Табличный процессор MS Excel в профессиональной деятельности учителя математики»
Курс повышения квалификации «Информационные технологии в деятельности учителя физики»
Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
Курс профессиональной переподготовки «Информатика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Облачные технологии в образовании»
Курс повышения квалификации «Развитие информационно-коммуникационных компетенций учителя в процессе внедрения ФГОС: работа в Московской электронной школе»
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
Курс повышения квалификации «Специфика преподавания информатики в начальных классах с учетом ФГОС НОО»
Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
Курс профессиональной переподготовки «Математика и информатика: теория и методика преподавания в образовательной организации»
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.