Составные типы данных
description
Transcript of Составные типы данных
![Page 1: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/1.jpg)
Составные типы данных
Лекция 8-9.
Ломаско Павел СергеевичApril 21, 2023
![Page 2: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/2.jpg)
План
1. Массивы.
2. Строки.
3. Файлы.
![Page 3: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/3.jpg)
Массивы
![Page 4: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/4.jpg)
Понятие массива. Одномерные массивы.
Массив – конечная последовательность однотипных элементов, имеющих определенные индексы.
Одномерный массив целых чисел:
Размер – количество элементов
1 2 3 4 5 6 7
1 1 2 3 5 8 14
![Page 5: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/5.jpg)
Описание одномерного массива
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;
![Page 6: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/6.jpg)
Обращение к элементам
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.
![Page 7: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/7.jpg)
Процедура ввода одномерного массива
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;
![Page 8: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/8.jpg)
Процедура вывода одномерного массива
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;
![Page 9: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/9.jpg)
Процедура задания одномерного массива случайным образом
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;
![Page 10: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/10.jpg)
Пример 1
Найти сумму элементов массива целых чисел размерности N.
![Page 11: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/11.jpg)
Пример 2
Найти максимальный элемент массива целых чисел размерности N, заданный случайным образом.
![Page 12: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/12.jpg)
Двумерные массивы
1 2 3 4
1
2
3
Var a:array[1..3, 1..4] of integer;
![Page 13: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/13.jpg)
Процедура ввода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;
![Page 14: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/14.jpg)
Процедура вывода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;
![Page 15: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/15.jpg)
Строки
![Page 16: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/16.jpg)
Тип данных char.
Так же, как переменная типа integer может хранить одно целое число, переменная типа char может хранить один символ.
Var Alpha : char;Begin Alpha :='p'; Alpha :='+'; Alpha :=#56; //Cимвол ASCII Alpha :=#13; //Обозначение конца строки
![Page 17: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/17.jpg)
Строка. Тип данных string.
Строка может быть рассмотрена как одномерный массив символов.
Тип данных (string) определяет строки с максимальной длиной 255 символов или произвольной длины.
Var L : string;
City : string[30];
![Page 18: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/18.jpg)
Операции над строками
1. Присваивание
s:=‘Это строка’;
2. Конкатенация (сложение)
S:= ‘Object '+‘Pascal'+‘!‘;
3. Сравнение (=, <>, >, <, >=, <=)
If S1=S2 then …
![Page 19: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/19.jpg)
Обращение
S:=‘Мама мыла раму’; S[11]:=‘Т’; S[12]:=‘o’;
![Page 20: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/20.jpg)
Стандартные подпрогаммы
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) - преобразует строку в число и выдает код правильности преобразования.
![Page 21: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/21.jpg)
Пример
Заменить во вводимой с клавиатуры строке буквы по следующему правилу:
а→я, п→б, ы →и
Результат вывести на экран.
![Page 22: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/22.jpg)
Текстовые файлы
![Page 23: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/23.jpg)
Определение
Текстовый файл – это совокупность символьных данных, имеющая имя и хранимая во внешней памяти.
При считывании файла в оперативную память машины символы файла преобразуются в тот тип данных, который объявлен в программе.
![Page 24: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/24.jpg)
Режимы работы
С текстовыми файлами возможно 3 режима работы:
1. Чтение (директива reset)
2. Запись (директива rewrite)
3. Дозапись (директива append)
![Page 25: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/25.jpg)
Порядок работы с файлами
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);
![Page 26: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/26.jpg)
Пример
В файле input.txt находятся два целых числа, записать в файл output.txt их произведение.
![Page 27: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/27.jpg)
Для самостоятельной работы
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
![Page 28: Составные типы данных](https://reader035.fdocument.pub/reader035/viewer/2022062221/568148b4550346895db5cb3b/html5/thumbnails/28.jpg)
Спасибо за внимание!