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

Категория: Не указан

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

Добавлен: 07.04.2025

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

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

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

СОДЕРЖАНИЕ

Федеральное агенство по образованию российской федерации

1. Основные категории и понятия информатики

1.2. Информация: структура, форма, измерение

2. Техническое и программное обеспечение пэвм

2.1. Структура аппаратных средств пэвм

2.2. Программное обеспечение пэвм

3. Основы алгоритмизации

3.2.Формы представления алгоритмов

3.2.1. Алгоритм линейной структуры.

3.2.2. Алгоритм разветвляющейся структуры.

Да нет да да Рис 3.11

3.2.3. Алгоритмы циклической структуры.

4.2. Структура программы на языке Паскаль

4.3. Скалярные стандартные типы данных

4.4. Скалярные, пользовательские типы данных

5. Структурные типы данных

5.3. Записи

5.4. Записи с вариантами

5.6.Файлы

6. Операции над данными скалярных типов. Выражения

7. Операторы языка Паскаль

7.1. Простые операторы

7.2. Структурные операторы

8. Примеры программ на языке Паскаль

8.1. Пример 1. Арифметические выражения. Оператор присваивания

8.3. Пример 3. Программа обработки одномерного массива

8.4. Пример 4. Программа обработки двумерного массива

True False True False False

8.5. Пример 5. Программа обработки символьных строк

8.6. Пример 6. Программа обработки двумерного массива с вводом элементов матрицы из текстового файла

9.Разработка программ сложной структуры

9.1. Процедуры и функции

9.2. Область действия идентификаторов при использовании процедур и функций. Локальные и глобальные переменные

9.3. Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры

9.4. Использование процедур и функций

True False Рис. 9.4

9.5. Массивы – параметры процедур и функций

True False True False Рис. 9.7

True False True False True False Рис 9.9

9.6. Рекурсивные процедуры и функции

True False Рис. 9.10 True False

True False Рис. 9.12

9.7. Модули

10. Динамические структуры данных

10.2. Объявление и создание динамических структур данных. Указатели

Приложение. Контрольные вопросы

Литература

4.4. Скалярные, пользовательские типы данных

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

Type <имя типа>=(< идентификатор 1 >, < идентификатор 2>, …, < идентификатор n>);

Например, Type Week= (mon, twe, wen, tru, fri, sut, sun);

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

Type <имя типа> = <мин. значение>..<макс. значение>;

Например,

Type A=1..100;

5. Структурные типы данных

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

В языке Паскаль существуют следующие составные типы данных:

  • тип-массив;

  • строковый тип;

  • тип-запись;

  • тип-запись-с-вариантами;

  • тип-множество;

  • тип-файл.

    1. Массивы

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

Массивы могут быть одномерными и многомерными. Для объявления типа-массива в разделе Typeиспользуется ключевое словоarray:

Type

<имя типа-массив>= array[<тип индекса1>,<тип индекса2>, …]of<тип элементов>;

Тип индекса обычно задается интервальным типом или типом-диапазоном порядкового типа:

<номер первого элемента>.. <номер последнего элемента>.

Например, объявление типа:

Type V=array[1..10] of integer;

определяет тип-массив из 10 элементов целого типа integer.

Массивы в программах могут быть константами или переменными.

Переменные типа-массив объявляются в разделе Varс помощью ключевого словаarrayследующим образом:

Var

<имя массива>: array[<тип индекса(ов)]of<тип элементов>;

Например,

Var M1: array[1..10] of real;

Mt: array[1..5,1..5] of real;


Границы изменения индексов можно задать в разделе Const; например,

Const k=10;

m=4;

n=5;

Var A: array[1..k] of integer;

B: array [1..m,1..n] of real;

Массивы- константы объявляются в разделе Constследующим образом:

Const<имя массива>: <описание массива>=(<список значений элементов>);

Например,

Const A: array[1..5] of integer=(1,2,3,4,5);

Const B: array[1..3,1..2] of integer=((1,2),(2,3),(3,4));

Значения элементов массивов-констант не изменяются в программе.

Доступ к элементам массивов осуществляется с помощью индексированных переменных, которые записываются с помощью имени массива и списка индексов в квадратных скобках:

<имя массива >[< индекс 1 >,< индекс 2>, …< индекс n>]

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

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

A[1]

A[2]

A[3]

A[n]

Одномерный массив – аналог понятия «вектор» в математике.

Двумерный массив можно представить в виде прямоугольной таблицы из mстрок иnстолбцов.

A[1,1]

A[1,2]

A[1,n]

A[2,1]

A[2,2]

A[2,n]

A[m,1]

A[m,2]

A[m,n]

Двумерный массив объявляется в разделе VARследующим образом:

<имя массива>: array[<тип индекса1>,< тип индекса2>]of<тип элементов >;

где тип индекса 1 определяет тип индекса для строк; тип индекса 2 определяет тип индекса для столбцов.

Например, объявление VarM:array[1..10,1..8]ofreal; определяет двумерный массив из 10 строк и 8 столбцов.

Двумерные массивы размещаются в памяти ЭВМ по строкам:

A[1,1]

A[1,2]

A[1,n]

A[m,1]

A[m,2]

A[m,n]


1-я строка m-я строка

    1. Строки

Данные строкового типа, или строки, представляют собой последовательности символов произвольной длины. Строку можно рассматривать как одномерный массив символов. В языке BorlandPascal7.0 используются две разновидности строкового типа:

  • тип string;

  • тип Pchar.

Строка типа stringобъявляется в разделе описаний переменных следующим образом:

Var

<имя переменной строкового типа>: string[<максимальная длина строки>];

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

Объявление строки вида

VarS1:string[10];

эквивалентно объявлению массива символов

Var S1: array [0..10] of char;

Если символьный массив объявлен как строка типа string, то нулевой символ будет заполняться автоматически Паскаль - системой. Если символьный массив объявлен как массив типаchar, то нулевой символ не будет заполняться автоматически.

Символьная строка размещается в памяти ЭВМ следующим образом:

0 1 2 L N

L

……

где N– максимальная длина строки,L– текущая длина строки.

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

Program Stroki;

Var Str1, Str2, Str: string[80];

Begin

Str1:=’Turbo ’;

Str2:=’Pascal’;

Str:=Str1+Str2;

Writeln(‘Str=’,Str);

end.

В результате работы этой программы на экране будет отображено:

Str=TurboPascal

Следующие процедуры и функции модуля Systemиспользуются для обработки символьных строк типаstring:

  • Функция Concat(S1,S2,…,Sn) выполняет объединение нескольких строкS1,S2,…,Sn, гдеn>=2, возвращает объединенную строку. Если длина результирующей строки больше 255, она усекается до 255 символов.

  • Функция Copy(S1,Ind,Count) создает и возвращает подстроку строкиS1, которая начинается с символа с номеромIndи имеет длину, равнуюCount.

  • Процедура Delete(S1,Ind,Count) удаляет подстроку из строкиS1, которая начинается с символа с номеромIndи имеет длину, равнуюCount.

  • Функция Length(S1) определяет текущую длину строкиS1.

  • Процедура Str(X,S) преобразует значение арифметического выраженияXв строкуS.

  • Процедура Insert(S1,S2,Ind) вставляет строкуS2 в строкуS1 после символа с номеромInd-1 строкиS1.

  • Процедура Val(S,V,C) преобразует строкуSв целое или вещественное число и присваивает его переменнойV. Если строкаSсодержит символы, отличающиеся от цифр и других допустимых в числовых константах символов, то преобразования не выполняется а в переменнуюCпомещается номер неправильного символа; С=0, если все символы правильные.


5.3. Записи

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

Переменная типа «запись» объявляется в разделе Varс помощью ключевого словаrecordследующим образом:

Var<имя переменной>:record

<поле 1>: <тип 1>;

<поле 2>: <тип 2>;

……

<поле n>: <типn>;

end;

Ключевое слово «end» завершает объявление переменной типа «запись».

Количество полей записи может быть любым. Поля записи могут быть простыми переменными любого типа, массивами и другими записями. В разделе описания типов можно объявить имя типа «запись»:

Type <имя типа> = record

<поле 1>: <тип 1>;

<поле 2>: <тип 2>;

……

<поле n>: <типn>;

end;

Тогда объявление переменной типа «запись» будет иметь следующий вид:

Var<имя переменной>: <имя типа «запись»>;

Например,

Type Tstudent = record

FAM: string[20]; {фамилия}

IM: string[20]; {имя}

OT: string[30]; {отчество}

GR: integer; {год рождения}

NZACH: integer; {номер зачетки}

NGR: string[30]; {номер группы}

end;

Var Zap_St: Tstudent;

Доступ к элементам (полям) записи производится с помощью составного имени:

<имя переменной типа «запись»>.<имя поля>.

Например,

Zap_St.FAM:=’Иванов’; или

Readln(Zap_St.FAM);

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

with<список ссылок на переменную>do<оператор>; или

with<список ссылок на переменную>dobegin

<операторы>

end;

Например,

Type T_Rec = record

A:integer ;

B: byte;

C: char;

end;

Var Rec: T_Rec;

……….

begin

……….

with Rec do begin

A:=10;

B:=1;

C:=’*’;

End;

Данный оператор withэквивалентен следующей последовательности операторов:

Rec.A:=10; Rec.B:=1; Rec.C:=’*’;

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

Константы типа «запись» определяются в разделе Constследующим образом:

Const<имя константы>: <имя типа «запись»>=

(<имя поля 1>:<значение поля 1>;

<имя поля 2>:<значение поля 2>;

…………………………………..

<имя поля n>:<значение поляn>) ;

Например,

Type Data= record

Y: integer;

M: 1..12;

D: 1..31;

End;

Const DR: Data=(Y:1984;

M: 4;

D: 12);

5.4. Записи с вариантами

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