- •1. Этапы подготовки задач для решения на пэвм
- •Программное обеспечение эвм
- •2.1.Алгоритмические языки.
- •5. Файлы и каталоги на дисках
- •5.1. Файловая система fat.
- •5.2. Файловая система ntfs
- •6. Интегрированая среда турбо паскаля 7.0
- •6.1. Информационные окна.
- •7. Разработка программ в интегрированной среде
- •8. Система меню ис тurbo рascal
- •8.1. Меню работы с файлами (file).
- •8.2. Меню редактирования (edit).
- •8.3. Меню поиска информации (search).
- •8.4. Меню выполнения программы (run).
- •8.5. Меню компиляции (compile).
- •8.6. Меню отладки (debug).
- •8.7. Меню инструментальных средств (tools).
- •8.8. Меню параметров среды (options).
- •9. Структура программы
- •10. Алфавит языка
- •11. Типы данных
- •Целые типы.
- •11.2.Логический тип boolean.
- •11.3. Символьный тип char.
- •11.4. Перечисляемый тип.
- •Вещественные типы.
- •12. Переменные
- •13. Константы
- •14. Стандартные функции
- •14.1. Арифметические функции.
- •14.2. Функции преобразование типа.
- •14.3. Функции для величин порядкового типа.
- •15. Арифметические операции
- •Логические операции
- •Операции отношения
- •18. Операторы языка
- •18.1. Оператор присваивания.
- •18.2. Оператор безусловного перехода goto.
- •18.3. Пустой оператор.
- •18.4. Составной оператор.
- •18.5. Условный оператор if.
- •18.6. Оператор варианта case.
- •Операторы цикла
- •19.1. Оператор цикла с постусловием repeat.
- •19.2.Оператор цикла с предусловием while.
- •19.3. Оператор цикла с параметром for.
- •19.4. Использование стандартных процедур Break и Continue в операторах циклов.
- •Сложные типы языка паскаль
- •20.1. Массивы.
- •20.2. Символьные массивы.
- •20.3. Строка типа string.
- •20.4. Записи.
- •20.5. Множества.
- •20.6. Файлы.
- •20.6.1. Доступ к файлам.
- •20.6.2. Логические устройства.
- •20.6.3. Процедура открытия файлов.
- •20.6.4. Процедуры и функции для работы с файлами.
- •20.6.5. Типизированные файлы.
- •20.6.6. Процедуры и функции для работы с файлами.
- •20.6.7. Нетипизированные файлы.
- •20.6.8. Текстовые файлы.
- •21. Процедуры и функции
- •21.1. Процедуры.
- •21.2. Функции.
- •21.3. Параметры формальные и фактические.
- •21.4. Параметры-значения.
- •21.5. Параметры-переменные.
- •21.6. Параметры-константы.
- •21.7. Параметры-процедуры и параметры-функции.
- •21.8. Параметры без типа.
- •Модули пользователя
- •22.1. Структура модуля пользователя
- •22.1.1. Заголовок модуля
- •22.1.2. Интерфейс модуля
- •22.1.3. Исполнительная часть модуля
- •22.1.4. Cекция инициализации
- •22.2. Использование модулей
- •23. Оверлей
20.2. Символьные массивы.
Если в качестве элемента массива использовать символьный тип CHAR, то такие массивы называются строками.
Var
s: array [1..13] of char;
Можно записывать конкретные значения строковых массивов с помощью изображения строки.
s:= ‘Пример строки’;
Для строковых массивов допускается операция конкатенации, которая обозначается знаком плюс( +). Смысл этой операции заключается в объединении строк.
Например, если есть массив
Var
s1:= array[1..10] of char;
s2:= array[1..6] of char;
то допустимы следующие операторы
s1:= ‘Символьный’;
s2:=‘массив’;
......................
Writeln(s1+’ ’+s2);
На экране появится текст «Символьный массив».
При присваивании символьным массивам значений необходимо точное соответствие размера строк и массивов. Операция конкатенации не допустима в правой части оператора присваивания.
20.3. Строка типа string.
Строка представляет собой последовательность символов от 0 до 255 символов.
У типа STRING в квадратных скобках может быть указан размер не более 255. Если скобки с указанием размера отсутствуют, то по умолчанию размер строки равен 255.
Var
stroka 1:string[100];
stroka 2:string;
Для типа STRING можно применять операцию конкатенации, которая объединяет две строки. Результат операции конкатенации присваивается третьей строке
Var
str1, str2,str3: string[30];
BEGIN
str1:= ‘ строковый’;
str2:=’ тип ’;
str3:=str1+str2;
END.
В отличии от символьных массивов строки могут динамически менять длину. Один из вариантов определения текущего значения длины строки является использование функции LENGH(S); где S - переменная типа STRING.
К отдельным элементам переменной типа STRING доступ осуществляется так же, как и к элементам одномерного массива.
A:=str1[5];
Эта конструкция символьного типа.
Если длина строки больше, чем длина строковой переменной, то происходит усечение строки, которое не воспринимается как ошибка.
Строки можно между собой сравнивать и сравнение это происходит слева направо в соответствии с ASCII кодами символов. Если длина строк различна, то в короткой строке отсутствующие символы имеют всегда значение кода меньше, чем соответствующие символы в более длинной строке, поэтому строка ‘АВС ‘ больше строки ‘АВ’ и строка ‘АВ’ больше строки ‘А’.
ПРИМЕР: Составить программу формирования списка студентов в группе.
Program Spisok;
Const ColStud=22;
Var
Pz00: array [1..ColStud] of string;
i: byte;
BEGIN
for i:=1 to ColStud do
BEGIN
Writeln(‘ Введите Ф.И.О. ‘,i,’ -а студента’);
Readln(pz00[i]);
END;
END.
20.4. Записи.
Необходимость описания атрибутов какого-либо объекта требует использования такого комбинированного типа, как запись. Например, для описания объекта «Студент» могут понадобится следующие характеристики: номер по списку (тип byte или word), Ф.И.О.(тип string), баллы (массив из 5-6 элементов, каждый из которых типа byte), средний балл (тип real ). Отдельные компоненты записи, которые называются полями, не могут рассматриваться с индексами как в массивах, поскольку имеют различный тип.
Когда задается тип «запись», используется слово RECORD, после которого перечисляются поля. После каждого поля через двоеточие указывается тип. В конце описания записи ставится слово END. Количество полей принципиально не ограниченно.
Const ColDsp = 7;
Type StrVed=record
nomer: byte;
f.i.o.: string[30];
ball: array[1..ColDsp] of byte;
srBall: real;
end;
В пределах записи имена полей не должны совпадать друг с другом, но могут совпадать с именами полей в других записях или с именами в программном блоке. После введения в разделе Type типа запись в разделе Var задаются переменные этого типа, а также могут задаваться типизированные константы в разделе Const. Для получения доступа к отдельному полю, входящему в состав записи, необходимо указать имя переменной, затем точка и после точки имя поля.
Var
OneStroka: strVed;
.............................
OneStroka.nomer:=5;
...............................
Для того, чтобы при обращении к полям переменной типа «запись» каждый раз не записывать имя переменной, можно использовать оператор над записями. Его конструкция: WITH < имя переменной> DO < оператор>;
Например: Составить программу формирования ведомости успеваемости студентов. Каждая строка ведомости включает номер по списку, Ф. И. О., баллы полученные на экзаменах по отдельным дисциплинам, средний бал студента по результатам сессии.
Program VedST;
Const ColStud=25;
ColDisp=5;
Type strVed =record
nomer: byte;
f.i.o.: string [30];
ball: array [1..ColDisp] of byte;
Srball: real;
Var
Pz00:array [1..ColStud] of strVed;
i, j: byte;
s: real;
BEGIN
for j:=1 to ColStud do
BEGIN
with pz00[i] do
BEGIN
nomer:=i;
Writeln(‘ Введите Ф. И. О. ’,i,’ -го студента‘);
Readln(f.i.o);
s:=0;
for i:= to ColDisp do
begin
Writeln(‘ Введите оценки студента ’,f.i.o.,’ по ’,j,’-ой дисциплине‘);
Readln(ball[j]);
s:=s+ball[j];
end;
Srball:= s / ColDisp;
end;
end:
end.