- •1.Массивы.
- •2.Строковые массивы.
- •4.Процедура без параметров.
- •5.Процедура с параметрами.
- •6.Использование параметров-значений и параметров-переменных в качестве входных. Параметры константы.
- •7. Ограничения, наложенные на формальные и фактические параметры.
- •8.Аппарат функций.
- •9. Побочный эффект в процедурах и функциях.
- •10)Рекурсия
- •11.Опережающее описание процедур
- •12.Параметры процедурного типа:
- •13.Внешние модули, реализованные на других языках программирования. Структура основной программы, вызывающей процедуру. Присоединение текстового файла.
- •14. Структура tpu- модуля и программы.
- •15.Ссылочные типы данных, работа со связанным списком.
- •16.Ссылочные типы данных, формирование списка студентов из файла.
- •17.Поиск элемента в списке.
- •18.Исключение и добавление
- •19.Включение в список.
- •20.Типизированный файл.
- •21.Текстовые файлы
- •22.Файлы прямого доступа:
- •1.Особенности языка Си. Программа печати текста.
- •2.Программа печати таблицы с циклом «пока».
- •3.Программа печати таблицы с арифметическим циклом.
- •4.Программа печати таблицы с арифметическим циклом при использовании символических констант.
- •5.Ввод, вывод символов. Копирование файла.
- •6.Подсчет числа символов в файле
- •7.Подсчет числа строк в файле.
- •8.Подсчет числа символов, строк и слов в файле.
- •9.Подсчет числа каждой цифры, символов пустых промежутков и всех остальных символов.
- •10.Функции
- •11.Методы передачи параметров в функциях
- •12.Заполнение массива одинаковыми значениями.
1.Массивы.
Массивы - это совокупность однородных элементов, хранящихся в смежных ячейках памяти, обращение к каждому элементу производится по имени всей структуры с указанием индекса.
Структура: н-> array-> [тип индекса «,»]->of ->тип компонент->K
Основные характеристики:
1)Имя
2)Тип компонент
3)Начальное и конечно значение индексов.
Свойства:
1)Каждая компонента имеет имя и индекс.
2)Бывают статические и динамические. Под статические отводится память на этапе трансляции и не может быть занята ни чем другим в ходе программы. Под динамические массивы память отводится во время работы программы с помощью специальных процедур.
3)Могут быть одномерные и многомерные.
Тип компонент: любой кроме File (т.к. по типу определяется длина компонент, а длина файла не известна изначально.)
Тип индекса(границы изменения индекса: Не real(неизвестно, сколько место необходимо оставить). Не integer,т.к. займется слишком много памяти, но может быть ограниченным на integer.
Операции над массивами:
1.Выборка компоненты A[j+k]:=8; A[5]:=A[i];
2.Присваивание двух массивов возможно, если: они описаны на одном имени, т.е. имеют одинаковый тип компонент и индексов.
Например:A,B: array[1..5] of byte;
C:array[1..3]of byte;
A:=C, B:=C нельзя т.к. они имеют разные длины и описаны на разных именах
А:=В возможно т.к. они идентичны.
Способы создания массива:
1)С клавиатуры.
for i:=1 to n do
readln(a[i]);
2)С помощью функции random.
For i:=1 to n do
A[i]:=random(10);
3)На этапе трансляции в виде типизированной константы.
Const:
N=30 (Простая не типизированная константа)
N:byte=5(N-Простая типизированная константа имеющая тип байт)
A:array[1..3] of byte =(25,35,40)(Структурная сложная типизированная константа.)
Многомерные массивы:
Ввод двухмерного массива на этапе трансляции в виде типизированной константы:
A:array[1..3,1..2]of byte =((7,5),(2,8),(3,4))
B:array[1..2,1..2,1..3]of byte=(((1,3),(2,5),(0,4)),((5,5),(4,5),(3,2)))
Строковый
тип данных
Для
обработки строковой информации в Турбо
Паскаль введен строковый тип данных.
Строкой в Паскале называется
последовательность из определенного
количества символов. Количество символов
последовательности называется длиной
строки. Синтаксис:
var
s: string[n];
var
s: string;
n
- максимально возможная длина строки
- целое число в диапазоне 1..255. Если этот
параметр опущен, то по умолчанию он
принимается равным 255.
Строковые
константы записываются как
последовательности символов, ограниченные
апострофами 'Текстовая строка'.
Допускается формирование строк с
использованием записи символов по
десятичному коду (в виде комбинации #
и кода символа) #54#32#61 и управляющих
символов (комбинации ^ и некоторых
заглавных латинских букв) 'abcde'^A^M.
Пустой
символ обозначается двумя подряд
стоящими апострофами. Если апостроф
входит в строку как литера, то при записи
он удваивается.
Переменные,
описанные как строковые с разными
максимальными длинами, можно присваивать
друг другу, хотя при попытке присвоить
короткой переменной длинную лишние
символы будут отброшены.
Выражения
типа char можно присваивать любым строковым
переменным.
В
Турбо Паскаль имеется простой доступ
к отдельным символам строковой
переменной: i-й символ переменной st
записывается как st[i]. Например, если st
- это 'Строка', то st[1] - это 'С', st[2] - это
'т', st[3] - 'р' и так далее.
Над
строковыми данными определена операция
слияния(конкантенации),
обозначаемая знаком +. Например:
a
:= 'Turbo';
b
:= 'Pascal';
c
:= a + b;
В
этом примере переменная c приобретет
значение 'TurboPascal'.
Кроме
слияния над строками определены операции
сравнения
<,>,=,<>,<=,>=. Две строки сравниваются
посимвольно, слева направо, по кодам
символов. Если одна строка меньше другой
по длине, недостающие символы короткой
строки заменяются символом с кодом 0.
Процедуры
и функции для работы со строками
В
системе Turbo Pascal имеется несколько
полезных стандартных процедур и функций,
ориентированных на работу со строками.
Ниже приводится список этих процедур
и функций с краткими пояснениями.
Length(s:string):integer
Функция
возвращает в качестве результата
значение текущей длины строки-параметра.
n := length('Pascal'); {n будет равно 6}
Concat(s1,[s2,...,sn]:string):string2.Строковые массивы.
Copy(s:string; index:integer; count:integer):string
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
s2 := copy(s, 1, 7); {s2 будет равно 'Система'}
s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'}
s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}
Delete(var s:string; index,count:integer)
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Пример.
s := 'Система Turbo Pascal';
delete(s,8,6); {s будет равно 'Система Pascal'}
Insert(source:string; var s:string;index:integer)
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.
Пример.
s := 'Система Pascal';
insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}
Pos(substr,s:string):byte
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Пример.
s := 'Система Turbo Pascal';
x1 := pos('Pascal', s); {x1 будет равно 15}
x2 := pos('Basic', s); {x2 будет равно 0}
Str(X: арифметическое выражение; var st: string)
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Val(st: string; x: числовая переменная; var code: integer)
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.
В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
Chr(n: byte): char
Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
Ord(ch: char): byte;
В данном случае функция возвращает код символа ch.
UpCase(c: char): char;
Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения