Составные типы данных
description
Transcript of Составные типы данных
Составные типы данных
Лекция 8-9.
Ломаско Павел СергеевичApril 21, 2023
План
1. Массивы.
2. Строки.
3. Файлы.
Массивы
Понятие массива. Одномерные массивы.
Массив – конечная последовательность однотипных элементов, имеющих определенные индексы.
Одномерный массив целых чисел:
Размер – количество элементов
1 2 3 4 5 6 7
1 1 2 3 5 8 14
Описание одномерного массива
1. Простое описаниеVar name: array [x..y] of type;Пример:Var Fib:array[1..7] of integer;
2. С помощью константПример:Const n=15;Var R:array [1..n] of real;
3. С помощью пользовательских типовПример:Const m=22;Type mytable=array[1..m] of char;Var a,b,c:mytable;
Обращение к элементам
Var с:array[1..3] of integer;
Begin
c[1]:=1;
c[2]:=c[1]+5;
Readln(c[3]);
Writeln (c[1]:4, c[2]:4, c[3]:4);
End.
Процедура ввода одномерного массива
Const n=22;Type mytable=array[1..n] of integer;Var a:mytable;
Procedure massin(var m:mytable);Var i:integer;beginFor i:=1 to n do
beginwrite(‘Введите [’, i ,’]=’);readln(m[i]);end;
end;
Процедура вывода одномерного массива
Const n=22;Type mytable=array[1..n] of integer;Var a:mytable;
Procedure massout(m:mytable);Var i:integer;beginwriteln(‘Вывод массива:');For i:=1 to n do
beginwriteln('[', i ,']=',m[i]);end;
end;
Процедура задания одномерного массива случайным образом
Const n=22;Type mytable=array[1..n] of integer;Var a:mytable;
Procedure rand_massin(r:integer; var m:mytable);Var i:integer;beginFor i:=1 to n do
beginm[i]:=random(r);end;
end;
Пример 1
Найти сумму элементов массива целых чисел размерности N.
Пример 2
Найти максимальный элемент массива целых чисел размерности N, заданный случайным образом.
Двумерные массивы
1 2 3 4
1
2
3
Var a:array[1..3, 1..4] of integer;
Процедура вводаtype mas=array[1..5, 1..6] of integer;var b:mas;Procedure d_massin(var m:mas);var i,j:integer;beginfor i:=1 to 5 dofor j:=1 to 6 do
beginwrite(‘Введите [ ‘ , i ,‘ , ‘ , j , ‘ ]=‘ );readln(m[i,j]);end;
end;
Процедура выводаProcedure d_massout(m:mas);Var i,j:integer;beginwriteln(‘Вывод массива:');For i:=1 to 5 do
beginfor j:=1 to 6 do write(m[i,j]:5);writeln;
end;end;
Строки
Тип данных char.
Так же, как переменная типа integer может хранить одно целое число, переменная типа char может хранить один символ.
Var Alpha : char;Begin Alpha :='p'; Alpha :='+'; Alpha :=#56; //Cимвол ASCII Alpha :=#13; //Обозначение конца строки
Строка. Тип данных string.
Строка может быть рассмотрена как одномерный массив символов.
Тип данных (string) определяет строки с максимальной длиной 255 символов или произвольной длины.
Var L : string;
City : string[30];
Операции над строками
1. Присваивание
s:=‘Это строка’;
2. Конкатенация (сложение)
S:= ‘Object '+‘Pascal'+‘!‘;
3. Сравнение (=, <>, >, <, >=, <=)
If S1=S2 then …
Обращение
S:=‘Мама мыла раму’; S[11]:=‘Т’; S[12]:=‘o’;
Стандартные подпрогаммы
Delete (Str, Poz, N) - удаление N символов строки Str, начиная с позиции Poz.
Insert (What, Where, Poz) - вставка строки What в строку Where, начиная с позиции Poz.
Copy (Str, Poz, Nstr) - выделяет строку длиной Nstr, начиная с позиции Poz, из строки Str.
Concat (Str1,Str2,...,StrN) - выполняет сцепление строк в том порядке, в каком указаны в списке параметров.
Poz (What, Where) - обнаруживает первое появление подстроки What в строке Where.
UpCase (Ch) - преобразует строчную букву в прописную.
Str (Number, Stroka) - преобразует число в строку.
Val (Stroka,Number,Code) - преобразует строку в число и выдает код правильности преобразования.
Пример
Заменить во вводимой с клавиатуры строке буквы по следующему правилу:
а→я, п→б, ы →и
Результат вывести на экран.
Текстовые файлы
Определение
Текстовый файл – это совокупность символьных данных, имеющая имя и хранимая во внешней памяти.
При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе.
Режимы работы
С текстовыми файлами возможно 3 режима работы:
1. Чтение (директива reset)
2. Запись (директива rewrite)
3. Дозапись (директива append)
Порядок работы с файлами
1. Описать файловую переменнуюvar f : text;2. Ассоциировать файловую переменную с файлом на
дискеassign(f, ‘input.txt’);3. Открыть файл в соответствующем режимеReset(f); / Rewrite(f); / Append(f);4. Произвести чтение/записьReadln(f, a, b, c); / Writeln(f, ‘Это текстовый файл!’);5. Закрыть файл Close(f);
Пример
В файле input.txt находятся два целых числа, записать в файл output.txt их произведение.
Для самостоятельной работы
1. http://www.pascaler.ru/pascal/arrays/
2. http://www.pascaler.ru/pascal/lines/
3. http://www.pascaler.ru/pascal/filetype
Все занятия дома прорешать!
Лекции и вопросы к зачету:
http://lomasko.com/load/informatika/6
Спасибо за внимание!