Презентация, доклад для подготовки к ЕГЭ Структурированные типы данных

Содержание

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

Слайд 1 «Структурированные типы данных»
Автор проекта
Тихонина Нина Григорьевна

Методика преподавания темы:

«Структурированные  типы данных»Автор проекта Тихонина Нина Григорьевна Методика преподавания темы:

Слайд 2Данные - это общее понятие всего того, с чем работает компьютер.

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

Данные

Данные - это общее понятие всего того, с чем работает компьютер. Программа, написанная на языке Паскаль, обрабатывает

Слайд 3Целые
Вещественные
Символьные
Логические
Простые типы данных
Целые
Вещественные
Символьные
Логические

ЦелыеВещественныеСимвольныеЛогическиеПростые типы данныхЦелыеВещественныеСимвольныеЛогические

Слайд 4Структурированные типы данных

Структурированными данными называют такие данные, которые состоят из других

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

Array - массивы (табличные данные);
String – строковые величины;
Record – данные типа запись;
Set – данные типа множество;
File – данные типа файл.

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

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

Слайд 5Строки
Множества
Записи
Файлы
Одномерные
массивы
Двумерные
массивы
РАЗДЕЛЫ РАБОТЫ
Структурированные
типы данных

СтрокиМножестваЗаписиФайлыОдномерные массивыДвумерные массивыРАЗДЕЛЫ РАБОТЫСтруктурированные типы данных

Слайд 6Одномерные массивы
Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам,

определяющим положение элемента в массиве.

1

2

3

4

5

6

7

8

Значение элемента массива

Индекс элемента массива

Одномерные массивыМассив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.12345678Значение элемента

Слайд 7Var :array[тип индекса] of
Примеры:
I. var
A : array [1..7]

of integer;
D : array [1..17] of string;
S : array [‘A’..’Z’] of ;

Описание массива

II.
Const m=10;
Var a : array [1.. m] of integer;

III.
Type t=array[1..10] of integer;
Var a : t;

Var :array[тип индекса] of Примеры:I. var	A : array [1..7] of integer;	D : array [1..17] of string;	S :

Слайд 8Ввод элементов массива (заполнение)
For i:=1 to 7 do A[i]:=i;
For i:=1

to 7 do A[i]:=sqr(i);

For i:=1 to 7 do A[i]:=’*’;
Как в данном случае должен быть описан массив?

For i:=1 to 7 do readln (A[i]);

for i:=1 to 7 do
begin
write (‘A[‘,i, ‘]=‘);
readln (A[i]);
end;

Randomize;
For i:=1 to n do
Begin
a[i]:=random(10);
Writeln (a[i]);
End;

Ввод элементов массива (заполнение)For i:=1 to 7 do  A[i]:=i; For i:=1 to 7 do A[i]:=sqr(i); For

Слайд 9Вывод элементов массива
а) в столбик:
For i:=1 to 7 do
Writeln(a[i]:4:2);


б) в строку
For i:=1 to 7 do
Write(a[i]:4:2);

Типовые алгоритмы обработки массива

Вычисление суммы, произведения элементов массива
Выбор по условию
Изменение элементов массива удовлетворяющих условию
Нахождение максимального и минимального элементов массива



Вывод элементов массиваа) в столбик: For i:=1 to 7 do Writeln(a[i]:4:2); б) в строкуFor i:=1 to 7

Слайд 10Суммирование элементов массива
осуществляется за счёт поочерёдного добавления слагаемых:
Определяется ячейка памяти

(переменная s),
в которой будет последовательно накапливаться
результат суммирования

Присваивается переменной s начальное значение 0
- число, не влияющее на результат сложения

Для каждого элемента массива из переменной s
считывается её текущее значение и складывается
со значением элемента массива;
полученный результат присваивается переменной s.

Алгоритм нахождения суммы элементов массива

Суммирование элементов массива осуществляется за счёт поочерёдного добавления слагаемых:Определяется ячейка памяти (переменная s), в которой будет последовательно

Слайд 11Алгоритм нахождения суммы элементов массива
Основной фрагмент программы:
s:=0;
for

i:=1 to n do s:=s+a[i];
Алгоритм нахождения суммы элементов массиваОсновной фрагмент программы:  s:=0;  for i:=1 to n do s:=s+a[i];

Слайд 12Program Summa;
const n=7;
var a:array [1..n] of real;
S:real;
i:integer;
begin
write (‘введите 7 элементов массива,

через пробел’);
For i:=1 to n do
readln(a[i]);
S:=0;
For i:=1 to n do
S:=S+a[i];
writeln;
write(‘Сумма всех элементов массива =’,S);
end.

Вычисление суммы элементов массива

Program Summa;const n=7;var a:array [1..n] of real;S:real;i:integer;beginwrite (‘введите 7 элементов массива, через пробел’);For i:=1 to n doreadln(a[i]);S:=0;For

Слайд 13Изменение элементов массива удовлетворяющих условию
For i:=1 to N do

If (условие) then a[i]:=значение;

Изменения:
a [ i ] :=5 – заменить i-ый элемент на число 5
a [ i ] := - a [ i ] – заменить i-ый элемент на противоположный по знаку
a [ i ] := a [ i ] * 2 – удвоить каждый элемент массива
a [ i ] := a [ i - 1]+3 –заменить i-ый элемент предшествующим плюс 3

Изменение элементов массива удовлетворяющих условию For i:=1 to N do    If (условие) then a[i]:=значение;

Слайд 14Выбор по условию

k:=0; s:=0; p:=1;
for i:=1 to 10 do
if

{условие} then
begin
k:=k+1; s:=s +a[i] ; p:=p*a[i] ;
end;

Что считает программа при заданном условии?

Выбор по условию…k:=0; s:=0; p:=1;for i:=1 to 10 do  if {условие} then

Слайд 151) Взять верхнюю карточку, записать на доске
(запомнить) число как наибольшее.
2) Взять

следующую карточку, сравнить числа. Если
на карточке число больше, то записать это число.

Нахождение наибольшего числа
в стопке карточек с записанными числами:

Повторить действия, описанные в пункте 2 для всех
оставшихся карточек

Алгоритм нахождения наибольшего элементов массива

1) Взять верхнюю карточку, записать на доске(запомнить) число как наибольшее.2) Взять следующую карточку, сравнить числа. Еслина карточке

Слайд 16
max:= a[1]; min:= a[1];
for i:=1 to n do
begin
if a[i]

> max then begin max:= a[i]; nmax:=i; end;
if a[i] < min then min:= a[i];
end;


Нахождение максимального и минимального элементов массива

…max:= a[1]; min:= a[1];for i:=1 to n do begin if a[i] > max then begin max:= a[i];

Слайд 17Алгоритм сортировки элементов массива
1. В массиве выбирается максимальный элемент
2. Максимальный и

первый элемент меняются местами
(первый элемент считается отсортированным)

3. В неотсортированной части массива снова выбирается
максимальный элемент; он меняется местами с первым
неотсортированным элементом массива

Действия пункта 3 повторяются с неотсортированными
элементами массива, пока не останется один
неотсортированный элемент (минимальный)

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

Алгоритм сортировки элементов массива1. В массиве выбирается максимальный элемент2. Максимальный и первый элемент меняются местами(первый элемент считается

Слайд 18program  n_8;
var n, i, j, x, imax: integer;

a:array[1...10] of integer;
begin 
for i:=1 to 10 do read (a[i]);
for i:=1 to 10 do write (a[i],` `);

for i:=1 to 9 do
begin
imax:=i;
for j:=i+1 to 10 do if a[j]>a[imax] then imax:=j;
x:=a[i];
a[i]:=a[imax];
a[imax]:=x
end;
for i:=1 to 10 do write (a[i],` `);
end;

Программа сортировки элементов массива

program  n_8; var n, i, j, x, imax: integer;    a:array[1...10] of integer;begin  for i:=1

Слайд 19Программа удаления элемента с номером k из массива

begin
write (‘введите индекс удаляемого

элемента’);
readln(k);
For i:=k to n-1 do
b[i]:=b[i+1];
For i:=1 to n-1 do
Write (b[i]:4);

Программа вставки элемента
с номером k в массив


begin
writeln (‘введите индекс вставляемого элемента’);
readln(k);
For i:=n+1 downto k do
b[i]:=b[i-1]; b[k] :=min;
For i:=1 to n+1 do
Write (b[i]:4);

Вставить на k-е место массива элемент, равный наименьшему элементу массива.

Программа удаления элемента с номером k из массива…beginwrite (‘введите индекс удаляемого элемента’);readln(k);For i:=k to n-1 dob[i]:=b[i+1];For i:=1

Слайд 201. В классе 20 учеников писали диктант по русскому языку. Напишите

программу, подсчитывающую количество двоек, троек, четвёрок и пятёрок, полученных за диктант.

2. Напишите программу, которая вычисляет среднюю за неделю температуру воздуха. Исходные данные вводятся с клавиатуры.

Задачи для самостоятельной работы

1. В классе 20 учеников писали диктант по русскому языку. Напишите программу, подсчитывающую количество двоек, троек, четвёрок

Слайд 213. Запишите на языке Паскаль программу решения задачи.
Объявлен набор в

школьную баскетбольную команду. Известен рост каждого из N учеников, желающих попасть в эту команду.
Подсчитайте количество претендентов, имеющих шанс попасть в команду, если рост игрока команды должен быть не менее 170 см.
Считайте рост претендента в команду случайным числом из диапазона от 150 до 200 см, а число претендентов n = 50.
3. Запишите на языке Паскаль программу решения задачи. Объявлен набор в школьную баскетбольную команду. Известен рост каждого

Слайд 224. В целочисленных массивах a и b содержатся длины катетов десяти

прямоугольных треугольников:
a[i] - длина первого катета,
b[i]—длина второго катета i-го треугольника.
Найдите треугольник с наибольшей площадью. Выведите его номер, длины катетов и площадь. Предусмотрите случай, когда таких треугольников несколько.

Задачи

5. Занесите информацию о десяти европейских странах в массивы n (название страны), к (численность населения), s (площадь страны). Выведите названия стран в порядке возрастания плотности их населения.

4. В целочисленных массивах a и b содержатся длины катетов десяти прямоугольных треугольников:

Слайд 236. Запишите на языке Паскаль программу решения задачи.
В некотором населённом

пункте N домов. Известно, сколько людей проживает в каждом из домов.
Исходные данные (количество жильцов) представить с помощью линейной таблицы А, содержащей N элементов: A[1] - количество жильцов дома 1, A[2] - количество жильцов дома 2, …, A[N] - количество жильцов дома N.
В общем случае А[i] — количество жильцов дома i, где i принимает все значения от 1 до n (i =1,n). Результат работы обозначить через s.
Считайте количество жильцов дома случайным числом из диапазона от 50 до 200 человек, а число домов n = 30.

меню

6. Запишите на языке Паскаль программу решения задачи. В некотором населённом пункте N домов. Известно, сколько людей

Слайд 24Двумерные массивы
Двумерный массив можно представить себе в виде таблицы, в которой

все строки и столбцы пронумерованы.
Каждый элемент такого массива имеет два индекса:
Первый индекс – это номер строки;
Второй индекс – номер столбца.
Двумерные массивыДвумерный массив можно представить себе в виде таблицы, в которой все строки и столбцы пронумерованы.Каждый элемент

Слайд 25Const n=4;
m=5;
Var A :array

[1..n, 1..m] of integer;

Описание двумерных массивов

A [2,4]

A [4,2]

Type mas = array[1..5] of array[1..10] of integer;

Type mas = array[1..5, 1..10] of integer;
Var A:mas;

Const n=4;      m=5;Var  A :array [1..n, 1..m] of integer;Описание двумерных массивовA

Слайд 26Заполнение двумерного массива
Методов заполнения множество. Основные - это путем ввода данных

с клавиатуры, с помощью случайных чисел и вычислений по формулам.
Для формирования массива используется два вложенных цикла. Первый цикл перебирает строки, а второй – столбцы.

For i:=1 to n do
for j:=1 to m do
readln (a[i , j]);

С клавиатуры

Заполнение двумерного массиваМетодов заполнения множество. Основные - это путем ввода данных с клавиатуры, с помощью случайных чисел

Слайд 27Заполнение двумерного массива
For i:=1 to n do
for j:=1

to m do
a[i , j]:=random(100);

For i:=1 to n do
for j:=1 to m do
a[i , j]:=i*j;

Случайными числами от 0 до 100

Произведением индексов

For i:=1 to n do
for j:=1 to m do
a[i , j]:=random(100)+30;

Случайными числами от ___ до ___?

For i:=1 to n do
for j:=1 to m do
a[i , j]:=sqr(i*j);

Заполнение двумерного массиваFor i:=1 to n do   for j:=1 to m do   a[i

Слайд 28Вывод двумерного массива
For i:=1 to n do
begin



writeln;
end;

for j:=1 to m do
write (a[i , j]);

Вывод двумерного массиваFor i:=1 to n do   begin    writeln;   end;for

Слайд 29Задача 1. Создать программу для формирования таблицы умножения (таблицы Пифагора).
Вывод массива:

Задача 1. Создать программу для формирования таблицы умножения (таблицы Пифагора).Вывод массива:

Слайд 30Задача №1
Составить программу, которая в двумерном массиве случайных чисел находит в

каждой строке наибольший элемент и записывает его в одномерный массив.
m – количество строк в двумерном массиве и длина одномерного массива;
n – количество столбцов;
A[1..m,1..n] - двумерный массив;
B[1..m] – одномерный массив
max – вспомогательная переменная для нахождения наибольшего элемента в каждой строке.

Задача №1Составить программу, которая в двумерном массиве случайных чисел находит в каждой строке наибольший элемент и записывает

Слайд 31Задача №1
Program max_str;
Const
m=5; n=6;
var i,j:byte;
a: array [1..m, 1..n]

of integer;
b: array [1..m] of integer;
max: integer;
begin
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(100);
write(a[i,j]:4);
end;
writeln;
end;

writeln ('Массив из максимальных значений в строках:');
for i:=1 to m do
begin
max:=a[i,1];
for j:=2 to n do
begin
if a[i,j]>max then max:=a[i,j];
end;
b[i]:=max;
write (b[i]:4);
end;
readln;
end.

Задача №1Program max_str;Const m=5; n=6; var i,j:byte; a: array [1..m, 1..n] of integer; b: array [1..m] of

Слайд 32Главная диагональ
a11
a22
a33

a44
a55
Удовлетворяет неравенству
i < j

Удовлетворяет неравенству
i > j

1


2
3
4
5

1 2 3 4 5

I - J

Главная диагональa11a22a33a44a55Удовлетворяет неравенствуi < jУдовлетворяет неравенствуi > j1     2

Слайд 33Побочная диагональ
a15
a24
a33

a42
a51
Удовлетворяет неравенству
i+jn+1

1
2


3
4
5

I+J=N+1

Побочная диагональa15a24a33a42a51Удовлетворяет неравенствуi+jn+11     2     3    4

Слайд 34Условия выбора фрагментов массива
a11
a22
a33

a44
a55
1
2


3
4
5

1 2 3 4 5

a42

a51

a24

a15

(i+j

(i+j>n+1) And (i

(i+j>n+1) And (i>j)

(i+jj)

Условия выбора фрагментов массиваa11a22a33a44a551     2     3

Слайд 35Обработка элементов главной диагонали
Если нужно что то сделать только
с главной

диагональю,
то можно обойтись без вложенных циклов
For i:=1 to n do s:=s+ a[i,i];


m:=a[1,1];
For i:=2 to n do
if (a[i,i]

Обработка элементов главной диагоналиЕсли нужно что то сделать только с главной диагональю, то можно обойтись без вложенных

Слайд 36Задачи для самостоятельной работы
Составить программу, которая вычисляет суммы элементов столбцов двумерного

массива и записывает их в одномерный массив.
Составить программу, которая в двумерном массиве случайных чисел элементы всех четных строк делает нулевыми.
Составить программу, которая в каждом столбце двумерного массива случайных чисел находит наименьший элемент и записывает его индекс в одномерный массив.
Составить программу, которая в двумерном массиве находит самое большое значение и элементы строки и столбца, на пересечении которых он стоит, делает нулевыми.

меню

Задачи для самостоятельной работыСоставить программу, которая вычисляет суммы элементов столбцов двумерного массива и записывает их в одномерный

Слайд 37Строковый тип данных
Для обработки строковой информации в Турбо Паскаль введен строковый

тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки.
Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.
Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.

Строковый тип данныхДля обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется

Слайд 38Описание строкового типа данных
type
str_type = string[12];
const
n = 50;
var
s1: string;
s2, s3:

str_type;
s4: string[n];
s5, s6, s7: string[7];

Длина строки хранится в первом ее байте, индекс которого равен 0. Объявление типизированной константы для типа string осуществляется так:

const
s: string = 'FreePascal'

Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st := '').

Описание строкового типа данныхtype 	str_type = string[12];const	n = 50;var	s1: string;	s2, s3: str_type;	s4: string[n];	s5, s6, s7: string[7];Длина строки

Слайд 39Операции над строками
1. Строки можно присваивать друг другу. Если максимальная длина

переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.


s1 := 'this is text';
s2 := s1;

3. Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.


s1 := 'John';
s2 := 'Black';
s1 := s1 + ' ' + s2;

2. Строки можно сравнивать друг с другом с помощью операций отношения.

'abc' > 'ab' (true)
'abc' = 'abc' (true)
'abc' < 'abc ' (false)

Операции над строками1. Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки,

Слайд 40Операции над строками
Имя строки может использоваться в процедурах ввода-вывода. При вводе

в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.


readln (s1);
write (s1);

К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:


s1[3] := 'h';
writeln (s2[3] + 'r');

Операции над строкамиИмя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока

Слайд 41Операции над строками
Элементы строки нумеруются с единицы, т.к. в каждой строковой

переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:


writeln(ord(st[0]))

Выражение str[0]:=#50 устанавливает текущую длину равной 50.

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

Операции над строкамиЭлементы строки нумеруются с единицы, т.к. в каждой строковой переменной имеется элемент с номером 0,

Слайд 42Процедуры и функции для работы со строками
Функция Concat (s1, s2, ...,

sn) возвращает строку, являющуюся слиянием строк s1, s2, ..., sn.

Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s.

Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.

Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte.
Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.
Процедуры и функции для работы со строкамиФункция Concat (s1, s2, ..., sn) возвращает строку, являющуюся слиянием строк

Слайд 43Процедуры преобразования типов
Процедура Str (x, s) преобразует числовое значение x в

строку s, при этом для x может быть задан формат, как в процедурах вывода write и writeln. Например:

x := 123;
s := str(x:6,s);

Результат: s = ' 123'.

Процедура Val (s, x, errcode) преобразует строку s в значение числовой переменной x, при этом строка s должна содержать символьное представление числа. В случае успешного преобразования переменная errcode равна нулю. Если же обнаружена ошибка, то errcode будет содержать номер позиции первого ошибочного символа, а значение x не определено.
Процедуры преобразования типовПроцедура Str (x, s) преобразует числовое значение x в строку s, при этом для x

Слайд 44Типовые задачи на строковый тип данных

var
s1,s2: string;
i:

byte;
begin
write('Input string 1: ');
readln(s1);
write('Input string 2: ');
readln(s2);
write('Input position: ');
readln(i);
insert(s2,s1,i);
writeln(s1);
readln
end.

1. Вставить в заданную позицию строки другую строку.

Примечание.
Процедура insert(subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start.

Алгоритм решения задачи:
Определить значения s1, s2 и i.
С помощью процедуры insert() вставить s2 в s1, начиная с позиции i

Типовые задачи на строковый тип данныхvar  s1,s2: string;  i: byte;begin  write('Input string 1: ');

Слайд 45Замена подстроки в строке
2. Найти в строке определенную последовательность символов и

заменить ее другой.


Описание переменных:
s, s_old, s_new – исходная строка, заменяемая подстрока, вставляемая подстрока;
i – номер символа строки, с которого начинается подстрока;
l_old – длина заменяемой подстроки.

Алгоритм решения задачи:
Ввести строку, подстроку, которую требуется заменить, и подстроку, которую требуется вставить на место прежней.
Найти место вхождения подстроки в строку с помощью функции pos().
Удалить старую подстроку с помощью процедуры delete().
Вставить новую подстроку, используя процедуру insert().

Var s,s_old,s_new: string;
i,l_old: byte;
begin
write('Insert string: ');
readln(s);
write('What change? ');
readln(s_old);
l_old := length(s_old);
write('What to replace? ');
readln(s_new);
i := pos(s_old,s);
delete(s,i,l_old);
insert(s_new,s,i);
writeln(s);
readln
end.

Замена подстроки в строке2. Найти в строке определенную последовательность символов и заменить ее другой.Описание переменных: s, s_old,

Слайд 46Копирование части строки
var
s1,s2: string;
n,len: byte;
begin
write('Input

string: ');
readln(s1);
write('Place of start of copy: ');
read(n);
write('Length of copy: ');
readln(len);
s2 := copy(s1,n,len);
writeln('Your copy: ',s2);
readln
end.


Алгоритм решения задачи:

Записать в переменную s1 исходную строку.
Узнать начало второй строки и ее длину.
Присвоить s2 результат выполнения функции copy().

Копирование части строкиvar  s1,s2: string;  n,len: byte;begin  write('Input string: ');  readln(s1);  write('Place

Слайд 47Определение длины строки
var
s: string;
len: byte;
begin
write('Input

string: ');
readln(s);
len := length(s);
writeln('Its lenght is ', len,' characters.');
readln
end.


Описание переменных:

s – строка;
len – ее длина.

Алгоритм решения задачи:

Введенная пользователем строка записывается в переменную s.
Результат выполнения функции length(s) сохраняется в переменной len и, затем, выводится на экран.

Определение длины строкиvar  s: string;  len: byte;begin  write('Input string: ');  readln(s);  len

Слайд 48Удаление подстроки
var
s: string;
i,len: byte;
begin
write('Input string:

');
readln(s);
write('Place of start to delete: ');
readln(i);
write('Length to delete: ');
readln(len);
delete(s,i,len);
writeln(s);
readln
end.


Алгоритм решения задачи:

Присвоить переменной s произвольную строку.
Записать в i и len первый символ, с которого будет производиться удаление, и длину удаляемой последовательности.
Применить процедуру delete() к строке s.
Вывести на экран строку s.

меню

Удаление подстрокиvar  s: string;  i,len: byte;begin  write('Input string: ');  readln(s);  write('Place of

Слайд 49Множества (описание множества)
Const
x1:set of byte=[3,5,7,11];
y1:set

of char=['а','б','в','г','д','е','ж'];


Type
t=set of 1..31;
Var
x2, x3:t;
x4:set of byte;
{ Или без предварительного описания:}
Var
y2: set of char;
a, i: byte;

Можно, предварительно задав тип множества в разделе
пользовательских типов, описать его в разделе описания переменных:

Множества (описание множества)Const   x1:set of byte=[3,5,7,11];   y1:set of char=['а','б','в','г','д','е','ж']; Type   t=set

Слайд 50Операции над множествами
1. Операции отношений ("=","",">=","

, если они состоят из одних и тех же элементов. При этом, что очень ценно, порядок следования не имеет значения!

Begin
x1:=[11,7,3,5];
x2:=[ 7,5,3,11];
WriteLn(x1=x2);
{ На экране появиться "TRUE“}

2. Операция "in" - используется для проверки принадлежности какого-либо значения указанному множеству.
Например
WriteLn(5 in x2);
{ На экране TRUE, т.к. 5 есть в множестве x2}


Слайд 51Операции над множествами
Операция «in» позволяет эффективно производить сложные проверки условий, заменяя

десятки других операций.
Например, вместо

if (a=1) or (a=2) or (a=3) or (a=4) ... (a=99) or (a=100) then ...
можно использовать:
readLn(a);
if a in [1..100] then
writeLn('Попали в первую сотню!')
else writeLn('Не попали в первую сотню!');
Операции над множествамиОперация «in» позволяет эффективно производить сложные проверки условий, заменяя десятки других операций. Например, вместо if

Слайд 52Операции над множествами
3. Операция "объединение множеств" (+)
Например:
x3:=[1,2,3,4,5]+[4,5,6];
for i:=1 to

255 do
if i in x3 then write(i,' '); writeLn;

{ На экране появится
1 2 3 4 5 6 }

4. Операция «пересечение множеств" (*)
Например:

{ На экране появится
3 4}

Операции над множествами3. Операция

Слайд 53Операции над множествами
5. Операция "разность" множеств (-)
- третье множество, которое содержит

элементы первого множества, не входящие во второе множество, например:
x4:=[1,2,3,4,5]-[3,4,7,8,9];
for i:=1 to 255 do
if i in x4 then write(i,' ');
writeLn;
{ На экране появится 1 2 5 }
Repeat until keypressed;
end.
Операции над множествами5. Операция

Слайд 54Операции над множествами
Для задания множества с клавиатуры используется следующий алгоритм:
x4:=[

];
repeat
write('Введите элемент множества: ');
readLn(a);
x4:=x4+[a];
write('Все (0/1)? ');
readLn(a);
until a=1;

При работе с множествами невозможно обратиться
к какому-либо конкретному элементу множества - это их недостаток.
Но из этого свойства следуют и важные преимущества - ряд операций, которые невозможно совершать с другими типами данных “в одно действие“, а требуются громоздкие алгоритмы.

меню

Операции над множествамиДля задания множества с клавиатуры используется следующий алгоритм: x4:=[ ]; repeat  write('Введите элемент множества:

Слайд 55Запись
Данные, описывающие существенные стороны того или иного объекта путем включения

в описание нескольких, часто разнотипных, элементов, называют записью (record).

В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.

Запись Паскаля – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа.
Запись Данные, описывающие существенные стороны того или иного объекта путем включения в описание нескольких, часто разнотипных, элементов,

Слайд 56Запись
Например, анкетные данные о студенте вуза могут быть представлены в виде

информационной структуры

Такая структура называется двухуровневым деревом. В Паскале эта информация может храниться в одной переменной типа record (запись).

ЗаписьНапример, анкетные данные о студенте вуза могут быть представлены в виде информационной структуры Такая структура называется двухуровневым

Слайд 57Запись
Поля записи Паскаля могут иметь любой тип, в частности сами могут

быть записями. Такая возможность используется в том случае, когда требуется представить многоуровневое дерево (более 2 уровней). Например, те же сведения о студентах можно отобразить трехуровневым деревом.

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

ЗаписьПоля записи Паскаля могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в

Слайд 58Задать тип record можно следующим образом:

type < имя _ типа

>=record    <имя_поля1>: тип;    <имя_поля2>: тип;    ………………….    <имя_поля K >: тип end ;

где record – служебное слово,
а <имя_типа> и <имя_поля> - правильные идентификаторы языка Паскаль.
Задать тип record можно следующим образом: type < имя _ типа >=record    : тип;     : тип;

Слайд 59Пример описания
Описание анкеты студента в Паскале будет выглядеть так:

Type anketa=record    fio:

string[45];    pol: char;    dat_r: string[8];    adres: string[50];    curs: 1..5;    grupp: string[3]; end;

Такая запись Паскаля, так же как и соответствующее ей дерево, называется двухуровневой.
Пример описания Описание анкеты студента в Паскале будет выглядеть так:Type anketa=record    fio: string[45];     pol: char;

Слайд 60Пример описания
В этом случае описание соответствующей записи в Паскале будет

выглядеть так:
Type anketa1=record     fio: string [45];     pol: char;     dat_r: record;   god: integer;     mes: string [10];   den: 1..31; end; adres: record    gorod: string [25];    ulica: string [20];     dom, kv: integer; end;
curs: 1..5; grupp: string [3]; end;
Пример описания В этом случае описание соответствующей записи в Паскале будет выглядеть так: Type anketa1=record   	 fio: string

Слайд 61Определение переменной типа запись
После того, как определен тип записи Паскаля, можно

определять переменную этого типа. Переменная определяется путем задания ее идентификатора и указания типа.
var student: anketa; student 1: anketa 1;
Теперь нам нужно узнать, как правильно получать доступ к элементам записи Паскаля. Элементы записи называются полями, а обращение к ним производится через использование их имен – идентификаторов полей.
Но в отличие от обычной переменной имена полей должны предваряться ссылкой на идентификатор записи Паскаля и отделяться от него точкой. Такая запись называется уточняющий идентификатор:
<имя_записи>.<имя_поля>
Определение переменной типа записьПосле того, как определен тип записи Паскаля, можно определять переменную этого типа. Переменная определяется

Слайд 62Составное имя переменной
Например, чтобы обратиться к полю curs переменной student ,

необходимо указать следующее составное имя:
student.curs :=3;

Для того чтобы обратиться к полю god в записи student 1, необходимо записать уточняющий идентификатор, состоящий из трех имен:
student1.dat_r.god:=1982;
Использование полей записи Паскаля в выражениях и условиях идентично использованию обычных переменных.
Составное имя переменнойНапример, чтобы обратиться к полю curs переменной student , необходимо указать следующее составное имя:	student.curs :=3;

Слайд 63Операции над записями
Единственная операция над записью (как над единым целым) которую

можно произвести над однотипными записями Паскаля – это присваивание.

Все другие операции производятся над отдельными полями записи.

Рассмотрим для начала простейший пример заполнения записи Паскаля и вывода ее на экран.

Пусть нам необходимо заполнить сведения о студенте (Ф.И.О., дата рождения, адрес, курс и группа), а затем вывести эти сведения на экран.

Операции над записямиЕдинственная операция над записью (как над единым целым) которую можно произвести над однотипными записями Паскаля

Слайд 64Пример заполнения
begin {обратите внимание, ввод каждого поля осуществляется отдельно}

   writeln (‘введите сведения о студенте’);    writeln (‘введите фамилию, имя и отчество’);    readln (student.fio);    writeln (‘введите дату рождения’);    readln (student.dat_r);    writeln (‘введите адрес’);    readln (student.adres);    writeln (‘введите курс’);    readln (student.curs);    writeln (‘введите группу’);    readln (student.grupp);    writeln (‘ввод закончен’);    writeln;    {обратите внимание, что вывод записи осуществляется по полям}    writeln (‘фамилия студента: ’, student . fio );    writeln (‘ дата рождения : ’, student.dat_r);    writeln (‘ адрес : ’, student.adres);    writeln (‘ курс : ’, student.curs);    writeln (‘ группа : ’, student.grupp); end.
Пример заполненияbegin   {обратите внимание, ввод каждого поля осуществляется отдельно}     writeln (‘введите сведения о студенте’);

Слайд 65Оператор присоединения
Префикс – обязательная предшествующая часть составного идентификатора для имен полей

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

with <имя_записи> do <действие с полем записи>;

Следует обратить внимание на то, что после служебного слова do может стоять только один оператор, но он может быть составным (любая последовательность операторов, заключенная в операторные скобки begin end ).
Оператор присоединенияПрефикс – обязательная предшествующая часть составного идентификатора для имен полей в структуре типа запись Паскаля. Очень

Слайд 66Оператор присоединения (пример использования)
Например, фрагмент программы с использованием оператора присоединения будет

выглядеть так:
Пример фрагмента программы c записью и префиксом Паскаля
for I:=1 to 100 do    with student[I] do    begin       writeln (‘введите сведения о’, I , ‘-м студенте’);       writeln (‘введите фамилию, имя и отчество’);       readln (fio);       writeln (‘введите дату рождения’);       readln (dat_r);       writeln (‘введите адрес’);       readln(adres);       writeln (‘введите курс’);       readln(curs);       writeln (‘введите группу’);       readln (grupp);    end;

меню

Оператор присоединения (пример использования)Например, фрагмент программы с использованием оператора присоединения будет выглядеть так: Пример фрагмента программы c

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

Каждая строка заканчивается специальным признаком EOLD (конец строки). Весь файл заканчивается признаком EOF.

Схема файла

Операторы (стандартные процедуры) работы с файлами
Assign – назначение связей между файловой переменной и файлом на внешнем устройстве;
Reset – открытие файла для чтения;
Rewrite - открытие файла для записи;
Close – закрытие файла (разрыв связей с файловой переменной).

Текстовые файлыСодержимое текстовых файлов представляет собой символьную последовательность, разделённую на строки. Каждая строка заканчивается специальным признаком EOLD

Слайд 68Ввод из текстового файла
Ввод из текстового файла:
Для организации ввода данных из

текстового файла следует:
Объявить в программе переменную с типом Text (она называется файловой переменной)
Связать файловую переменную с файлом внешней памяти, содержащим исходные данные, с помощью оператора Assign;
Открыть файл для чтения с помощью процедуры Reset;
Осуществить чтение из файла с помощью оператора Read или ReadLn;
Закрыть файл с помощью оператора Close.
Ввод из текстового файлаВвод из текстового файла:Для организации ввода данных из текстового файла следует:Объявить в программе переменную

Слайд 69Пример 1.
В текстовом файле с именем abc.txt хранятся пать чисел, разделённых

на две строки:
2.5 3.1 4.0
0.7 1.5
Организовать ввод этих данных в вещественные переменные а, b, c, d, e

Ввод из текстового файла

Пример 1.В текстовом файле с именем abc.txt хранятся пать чисел, разделённых на две строки:2.5 3.1 4.00.7 1.5Организовать

Слайд 70Запись из файла в массив

Запись из файла в массив

Слайд 71Вывод в текстовый файл
меню

Вывод в текстовый файлменю

Слайд 72Литература и источники
http://mif.vspu.ru/books/pascal/records.html
http://www.win-ni.narod.ru/biblio/gl6.htm
http://physics.herzen.spb.ru/library/03/01/pp/TPHelp/types.htm
1. Абрамов С. А., Гнездилова Г. Г., Капустина Е.

Н., Селюн М. И. Задачи по программированию – М.: Наука, 1998

2. Златопольский Д. М. Я иду на урок информатики: Задачи по программированию. Книга для учителя. – М.: Издательство «Первое сентября», 2002.

4. Конспекты уроков информатики в 9-11 классах: Практикум по программированию / Авт.-сост. А. А. Чернов. – Волгоград: Учитель, 2005

3. И.Г. Семакин, Е.К. Хеннекер, Т.Ю. Шеина Информатика. Базовый уровень. Учебник для 10 класса - М.: Бином, Лаборатория знаний, 2014

Интернет источники:

Литература и источникиhttp://mif.vspu.ru/books/pascal/records.htmlhttp://www.win-ni.narod.ru/biblio/gl6.htmhttp://physics.herzen.spb.ru/library/03/01/pp/TPHelp/types.htm1. Абрамов С. А., Гнездилова Г. Г., Капустина Е. Н., Селюн М. И. Задачи по

Что такое shareslide.ru?

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


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть