Разделы презентаций


Алгоритмы обработки двумерных информационных массивов

Содержание

3 Основы программирования на языке Паскаль 176Алгоритмы обработки двумерных информационных массивовМногомерные массивы широко используются в статистике и математике, такие

Слайды и текст этой презентации

Слайд 1Информатика и программирование
Лебедева Т.Ф.
КЕМЕРОВСКИЙ ИНСТИТУТ (филиал)
РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТОРГОВО-ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА

ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программированиеЛебедева Т.Ф.КЕМЕРОВСКИЙ ИНСТИТУТ (филиал)РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ ТОРГОВО-ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Слайд 2 3 Основы программирования на языке Паскаль

176
Алгоритмы обработки

двумерных информационных массивов
Многомерные массивы широко используются в статистике и математике, такие массивы имеют более одного измерения (индекса).
Двумерный массив представляет собой набор данных одинакового типа, в котором доступ к любому его элементу осуществляется по двум индексам: номеру строки и номеру столбца. Количество индексов определяет размерность массива.
Размерность двумерного массива равна произведению числа строк на число столбцов.
Двумерные массивы являются логической структурой данных удобной для решения задач связанных с обработкой величин зависящих от двух параметров.
Элемент многомерного массива обозначается именем массива с индексами, например, Х [ i, j ] .
Индексы представляют собой выражения порядкового (чаще целого) типа. Обращаться к элементам массива можно в произвольном порядке, задавая значения индексов. Причем, первый индекс всегда нумерует строки, второй - столбцы.

Объявление массива
1) Вариант
Type
Matrix = array [1..100, 0..9] of real;
Var
m : Matrix;
i : integer;

3 Основы программирования на языке Паскаль

Слайд 3 3 Основы программирования на языке Паскаль

177
2) Вариант
Пусть

задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:
Var
Matr : array [1..10,1..20] of integer;
3) Вариант
Пусть массив Tabl содержит четыре элемента и каждый элемент, в свою очередь, является массивом из трех вещественных чисел.
Объявить такой массив можно следующим образом::
Type M1 = array [1..3] of real;
M2 = array [1..4] of M1;
Var Tabl : M2;
Mas1 : M1;

Для того чтобы обработать элементы массива (присвоить, ввести, вывести значения), необходимо организовать вложенные циклы, в которых перебираются все комбинации значений индексов
3 Основы программирования на языке Паскаль

Слайд 4 3 Основы программирования на языке Паскаль

178

Вложенным циклом

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

















В этом примере элементы массива вводятся по строкам в следующем порядке:
Х11, Х 12, ..., Х 1m
Х 21, Х 22, ..., Х 2m
...................................
Хn1, Х n2, ..., Х nm
Для каждого значения счетчика внешнего цикла i, вложенный цикл j выполняется заданное количество (m) раз.


3 Основы программирования на языке Паскаль

Слайд 5 3 Основы программирования на языке Паскаль

179
Приведем фрагмент

вывода двумерного массива в виде таблицы
Const n=5; m=6;
Type MyArray = array [1..n, 1..m] of integer;
Var A : MyArray; i, j : integer;
Begin
…………………………..
for i := 1 to n do {пробегая последовательно строки и столбцы массива}
begin
for j := 1 to m do
write(X[i, j]:5); {выведем элемент массива на экран, выделив ему 5 знакомест}
writeln; {переход на новую строку}
end;
end;

Задача 1. Дана таблица действительных чисел. Сосчитайте сумму всех чисел в таблице.
Приведем фрагмент нахождения суммы
………………………………………….
S:= 0;
for i := 1 to n do
for j := 1 to m do
S := S+A[i,j];
Обратите внимание, что внутри цикла со счетчиком i организован цикл со счетчиком j. В результате суммируются в начале числа 1-й строки (i=1, при j=1, 2, ..., m), затем суммируются числа 2-й строки (i=2, при j=1, 2, ..., m) и т.д.
3 Основы программирования на языке Паскаль

Слайд 63 Основы программирования на языке Паскаль

180
Пример

12. Выпуск продукции в тыс. руб. представлен таблицей
Таблица – Исходные данные для примера 12
3 Основы программирования на языке Паскаль

Слайд 7 3 Основы программирования на языке Паскаль

181
Выполним построение

математической модели и алгоритма решения функциональной задачи выпуска продукции.
а) Обозначения переменных:
n – количество видов продукции;
m – количество месяцев;
VР[1..n, 1..m ]– массив выпуска продукции;
i – счётчик цикла, вид продукции; j – номер месяца;
S[ i ] – общий выпуск продукции i-того вида;
Max[ I ] – максимальный выпуск продукции i-того вида;
K[ i ] - месяц соответствующий максимальному выпуску продукции.
б) Тип переменных:
n, m, i, j – простые переменные целого типа;
VР[1..n, 1..m ] , Max[ 1..n ], S[1..n] – массив вещественного типа;
K[1..n ] – массив целого типа;
VP[i, j], K[i], Max[i] S[i] – переменные с индексом;
в) Классификация по группам:
исходные данные: n, m, VР[1..n, 1..m ]
промежуточные результаты: i, j; результаты: Max[ 1..n ], S[1..n] , K[1..n ]

3 Основы программирования на языке Паскаль

Слайд 8 3 Основы программирования на языке Паскаль

182
г) Система

расчетных формул:
1) нахождение общего выпуска продукции каждого вида:

i = 1 начальное значение вида продукции
S[ i ] = 0 обнуление суммы выпуска i-того вида продукции
j = 1 начальный номер месяца
S[ i ] = S[ i ] + VP[ i, j ] накопление суммы в цикле
j = j + 1 следующее значение номера месяца 
Если j≤m, то повторять действия, иначе выход из цикла
i = i + 1 следующее значение вида продукции
Если i≤n, то повторять действия, иначе выход из цикла


3 Основы программирования на языке Паскаль

Слайд 9 3 Основы программирования на языке Паскаль

183
Представим алгоритм

нахождения общего выпуска продукции каждого вида в виде блок-схемы
3 Основы программирования на языке Паскаль

Слайд 10 3 Основы программирования на языке Паскаль

184
Program sum_str;
Uses

CRT;
Var i , n , j , m : integer;
VP: array [ 1..10, 1..12] of real; S : array [1..10] of real;
begin
Clrscr; {очистка экрана}
write (‘количество видов продукции = ‘); readln ( n );
write (‘количество месяцев = ‘); readln ( m );
Writeln ( ‘введите выпуск продукции по ’, m, ‘ в строку‘);
for i : = 1 to n do begin
for j : = 1 to m do
read ( VP[ i, j ] ) ; {ввод массива VP}
Writeln;
end;
for i := 1 to n do begin
S[ i ] : = 0;
for j : = 1 to m do
S[ i ]: = S[ i ] + VP[ i, j ] ;
end;
Writeln ( ‘суммарный выпуск’);
for i : = 1 to n do
WriteLn( ‘S [ ‘ , i, ‘ ] =‘ , ); S [ i ]: 6 :2, ‘тыс.руб’ );
readln;
end.
3 Основы программирования на языке Паскаль

Слайд 11 3 Основы программирования на языке Паскаль

185
г) Система

расчетных формул:
2) нахождение максимального выпуска продукции каждого вида и месяца с максимальным выпуском:
i = 1 начальное значение вида продукции
Max [ i ]= VP[ i, 1 ] за начальное значение максимума выбираем выпуск i-той продукции за 1-ый месяц
K [ i] = 1 начальный номер месяца
j = 2 начальный номер следующего элемента
Если VP[ i, j ] > Max [ i ] , то Max [ i ] = VP[ i, j ]; K [ i] = j формирование нового максимума и его номера 
j = j + 1 следующее значение номера месяца 
Если j ≤ m, то повторять действия, иначе выход из цикла
i = i + 1следующее значение вида продукции
Если i≤n, то повторять действия, иначе выход из цикла


3 Основы программирования на языке Паскаль

Слайд 12 3 Основы программирования на языке Паскаль

186
Представим алгоритм

нахождения максимального выпуска продукции каждого вида в виде блок-схемы

Вывод max{1..n],
K[1..n]


3 Основы программирования на языке Паскаль

Слайд 13 3 Основы программирования на языке Паскаль

187
Program max_str;
Uses

CRT;
Var i , n , j , m : integer;
VP: array [ 1..10, 1..12] of real; Max, K : array [1..10] of real;
begin
Clrscr; {очистка экрана}
write (‘количество видов продукции = ‘); readln ( n );
write (‘количество месяцев = ‘); readln ( m );
Writeln ( ‘введите выпуск продукции по ’, m, ‘ в строку‘);
for i := 1 to n do begin
for j := 1 to m do
read ( VP[ i, j ]) ; {ввод массива VP}
Writeln;
end;
for i := 1 to n do begin
Max[ i ] : = VP [ i, 1 ]; K [ i ] : = 1;
for j:= 2 to m do
if VP[ i , j ] > Max[ i ] then begin Max[ i ] : = VP [ i, j ]; K [ i ] : = j end;
end;
Writeln ( ‘максимальный выпуск продукции каждого вида ’);
for i : = 1 to n do
WriteLn( ‘max [ ‘ , i, ‘ ] =‘ , ); ‘ номер месяца = ’, K [ i ] );
readln;
end.
3 Основы программирования на языке Паскаль

Слайд 14 3 Основы программирования на языке Паскаль

188
Задача 2:

Определить min элемент в каждом столбце массива А, содержащего n строк и m столбцов. Исходными данными для решения являются целочисленные переменные n и m, а также элементы массива А. Результатом решения будут значения минимальных элементов для каждого столбца массива. Представим блок-схему алгоритма.
3 Основы программирования на языке Паскаль

Слайд 15 3 Основы программирования на языке Паскаль

189
Задача 3.

Найти количество отрицательных элементов в каждом столбце.
количество элементов каждой строки хранить в одномерном массиве (Y) соответствующей размерности.
Приведем фрагмент нахождения количество отрицательных элементов в каждом столбце.
………………………………………….
for j := 1 to m do
begin
Y[j] := 0; {записываем начальное значение количества элементов в соответствующую столбцу ячейку}
for i := 1 to n do
if X[i, j] < 0 {если отрицательный элемент найден}
then
Inc(Y[ j ]; {то увеличиваем текущее значение на единицу}
end;
Задача 4. В квадратной матрице найти суммы диагональных элементов
Приведем фрагмент программы
………………………………….
S1:= 0; S2:= 0;
for i := 1 to n do begin
S1 := S1+A[ i, I ]; S2 := S2+A[ i, n- i+1]; end;

3 Основы программирования на языке Паскаль

Слайд 16 3 Основы программирования на языке Паскаль

190
Работа с

переменными символьного и строкового типа данных
Паскаль поддерживает стандартный символьный тип Char и динамические строки, описываемые типом String или String[n].
Символьный тип данных (char). Описание: var S: char;
Значение типа Char – это непустой символ из алфавита компьютера, заключенный в одиночные кавычки.
Turbo Pascal вводит два способа задания символов:
1) представление символа его кодом ASCII (American Standart Code for Interchange Information), для этого используется префикс #, например, #97 для символа ‘a’ или #65 – ‘A’;
для управляющих символов коды в диапазоне от 0 до 31: #13 – клавиша Enter, #32 -Символ «пробел»
2) представление символа его клавиатурным обозначением: ‘G’, ‘+’, ‘>’
Примечание: Символы с кодами от 0 до 127 представляют так называемую основную таблицу кодов ASCII. Эта часть идентична на всех IBM-совместимых компьютерах. Коды с символами от 128 до 255 представляют национальную часть – в России коды русских букв (кириллицу).

3 Основы программирования на языке Паскаль

Слайд 17 3 Основы программирования на языке Паскаль

191
Так как

символы языка упорядочены, то к символьным данным применимы операции сравнения. Операция сравнения осуществляется следующим образом: из двух символов меньше тот, который встречается в таблице ASCII раньше (т.е. код его меньше).
Например: ‘B’ > ‘A’
Иногда в программах возникает необходимость по коду определить символ и, наоборот, по символу определить его код. Для этого используют функции:
Функция CHR ( X:Byte) : Char
Эти функция возвращают символ, соответствующий ASCII -коду числа X.
Для определения кода по символу используют функцию ORD.
Функция ORD ( C:Char) : Byte
Функция UPCASE ( C:Char) : Char - преобразует символ из строчного в прописной. Эта функция рассчитана на обработку только одного символа.Она не преобразует символы кириллицы (русские буквы).
3 Основы программирования на языке Паскаль

Слайд 18 3 Основы программирования на языке Паскаль

192
Работа с

переменными символьного и строкового типа данных
Паскаль поддерживает стандартный символьный тип Char и динамические строки, описываемые типом String или String[n].
Символьный тип данных (char). Описание: var S: char;
Значение типа Char – это непустой символ из алфавита компьютера, заключенный в одиночные кавычки. Кроме этой классической формы записи Turbo Pascal вводит еще два способа:
1) представление символа его кодом ASCII (American Standart Code for Interchange Information), для этого используется префикс #, например, #97 для символа ‘a’ или #65 – ‘A’;
для управляющих символов коды в диапазоне от 0 до 31: #13 – клавиша Enter, #32 -Символ «пробел»
2) представление символа его клавиатурным обозначением: ‘G’, ‘+’, ‘>’
Примечание: Символы с кодами от 0 до 127 представляют так называемую основную таблицу кодов ASCII. Эта часть идентична на всех IBM-совместимых компьютерах. Коды с символами от 128 до 255 представляют национальную часть – в России коды русских букв (кириллицу).

3 Основы программирования на языке Паскаль

Слайд 19 3 Основы программирования на языке Паскаль

193
Строка –

это последовательность символов, не превышающая 255-ти символов. Строковые константы обязательно заключается в апострофы.
Переменные типа STRING могут быть объявлены следующим образом:
var s: string [n];
var s: string;
n- максимально возможная длина строки- целое число в диапазоне 1..255.
Переменные типа STRING объявляется, как правило, путем указания имени переменной, зарезервированного слова STRING и указания (в квадратных скобках) максимального размера (длины) строки, которая может хранится в этой переменной. Если максимальный размер строки не указан, то он автоматически принимается равным 255- максимально возможной длине строки. 
 Пример.
Var s:string; {описание идентификатора s как строковую переменную}
Begin
s:=’Привет’; {задание значения строковой переменной}
Writeln(s); {распечатка на экране слова "Привет"}
end.

3 Основы программирования на языке Паскаль

Слайд 20 3 Основы программирования на языке Паскаль

194
Операции со

строками
 В Турбо Паскале существуют два пути обработки переменных типа STRING. Первый путь предполагает обработку всей строки как единого целого, т.е. единого объекта. Второй путь рассматривает строку как составной объект, состоящий из отдельных символов, т.е. элементов типа CHAR , которые при обработке доступны каждый в отдельности.
Тип String -это массив символов Аrray [0..255] of char . В нулевом элементе строки хранится ее длина (динамическая «переменная»).
Например, var st: string
i := ord(st [0] ) ; {i – текущая длина строки}
Так, первый путь предоставляет возможность присвоения значения строчной переменной за одну операцию. 
Строковые константы записываются как последовательности символов, ограниченные апострофами. Пример: ' Текстовая строка '
              Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в сроку как литера, то при записи он удваивается.
В Турбо Паскале имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st [ i ]. Например если st-это 'Строка',
то st [1]-это 'С', st[2]-это 'т', st[3]-это 'р' и так далее.
3 Основы программирования на языке Паскаль

Слайд 21 3 Основы программирования на языке Паскаль

195
Переменные, описанные

как строковые с разными максимальными длинами, можно присваивать друг другу, хотя при попытке присвоить короткой переменной длинную лишние символы будут отброшены. Выражения типа CHAR можно присваивать любым строковым переменным.
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. 
Например:
a : =  ' Turbo';
b : = ' Pascal ';
c : =  a+b;
В этом примере переменная c приобретет значение ' TurboPascal '.
Кроме слияния над строками определены операции сравнения <, >, <>,<=, >=, =.
Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
Результат выполнения операций отношения над строками имеет логический тип, т.е. принимает значения True или False.
‘папа’ > ‘мама’
‘Иванова’ > ‘Иванов’
‘мука’ <> ‘ мука’
При вводе переменных строкового типа рекомендуется каждую переменную вводить одним оператором ReadLn (не Read); ;
 Например, необходимо ввести имя, фамилию и отчество
Write (‘введи фамилию’); ReadLn(Fam);
Write (‘введи имя’); ReadLn(Imya);
Write (‘’введи отчество); ReadLn(Otch);
3 Основы программирования на языке Паскаль

Слайд 22 3 Основы программирования на языке Паскаль

196
Стандартные функции

обработки строк
Length(s:string):integer – возвращает в качестве результата размер в символах строки S.
Пример. n := length('Pascal'); {n будет равно 6}
Сору(st:string; Poz: integer; N: integer ):string– выдает подстроку, выделенную из строки St, длиной N символов начиная с позиции Poz.
Пример.
S := ‘I love you!’ {длина = 11 }
SubS := Copy(S,3,4); { SubS = ‘love’ }
SubS := Copy(S,100,4); { SubS = ‘’ }
SubS := Copy(S,3,100); { SubS = ‘love you!’ }
Pos(str1,str2:string):byte– обнаруживает первое появление в строке Str2 подстроки Str1. Результатом является номер символа в строке Str2, с которого начинается подстрока Str1. Если фрагмент в строке  не найден, то функция возвращает нуль. 
Сoncat(s1,[s2,...,sn]:string):string Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации "+" и работает немного менее эффективно, чем эта операция.
3 Основы программирования на языке Паскаль

Слайд 23 3 Основы программирования на языке Паскаль

197
Стандартные процедуры

обработки строк

Delete (st:string; Poz: integer; N: integer) – удаление N символов из строки St, начиная с позиции Poz.
Так оператор Delete(Words, 2, 3); удаляет из строки Words фрагмент, состоящий из трех символов и начинающийся со второй позиции.    
Примеры:
s := 'Система Turbo Pascal'; delete(s,8,6); {s будет равно 'Система Pascal'}
………………………………………..
S := ‘Коля’;
Delete(S,1,1); { S = ‘оля’ }
Delete(S,100,3);
…………………….
Delete(‘Попробуй удали!’,3,8);
{ Ошибка! S не может быть константой }

Insert (Str:string; Str2:string; Poz: integer) – вставка строки Str1 в строку Str2, начиная с позиции Poz.
Примеры:
s := 'Система Pascal'; insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}
…………………..
S := ‘Начало - - Конец’;
SubS := ‘ Середина’;
Insert(SubS, S, 9); { S = ‘Начало - Середина - Конец’ }

3 Основы программирования на языке Паскаль

Слайд 24 3 Основы программирования на языке Паскаль

198
Str (

n [:<размер>:<точность>], St) – преобразование числового значения n в строковое значение. Параметры “размер” и “точность” у числового значения имеют тот же смысл и задаются точно так же, как в операторе вывода данных. Результат преобразования данных помещается в строку St.
Примеры:
Str(3.1415: 7 : 2, S ); { S = ‘_ _ _ 3.14’ }
Str(P:7,S); { P: Word = 4433; S = ‘_ _ _ 4433’ }
Val (St, n, Cod) – преобразование числового значения из строкового представления St в значение целого или вещественного типа. Результат помещается в числовую переменную n. Cod - переменная целочисленного типа, в которую заносится признак завершения операции преобразования данных. В случае успешного завершения преобразования данных переменная Cod будет содержать значение 0, в противном случае в ней будет записан номер символа строки, не соответствующий формату строкового представления числовых данных.
Пример:
Write(‘Введите число: ‘);
ReadLn(S); { S: String }
val (S, x, ErrCode); { x: Word }
if ErrCode <> 0 then WriteLn(‘Ошибка! Повторите ввод.’);
3 Основы программирования на языке Паскаль

Слайд 25 3 Основы программирования на языке Паскаль

199
Задача 1:

Дана строка, состоящая из слов, разделенных между собой  одним или несколькими пробелами. Найти длину самого длинного слова.
program zadacha1;
var stroka:string;
n,m,dlina:byte;
kv:integer;
begin
write(‘введи строку из слов, разделенных пробелами’); readln(stroka);
n: =0; m: = 0; dlina: =0;
repeat
n:=n+1;
if stroka[n]<>' ' then begin m:=m+1;
if m >=dlina then dlina:=m; end;
if stroka[n] =' ' then m:=0;
until n = length(stroka);
writeln(dlina);
readln;
end.
3 Основы программирования на языке Паскаль

Слайд 26 3 Основы программирования на языке Паскаль

200
 Задача 2:

Дана строка, преобразовать ее, заменив в ней каждую точку многоточием.
program zadacha2;
var s1,s2:string; n, m:byte;
begin
write(‘введи строку текста’); readln(s1);
S2 : = ‘’; {пустая строка}
for n : =1 to length(s1) do begin
if s1[n]='.' then begin s2:=s2+‘…‘ else s2 : =s2+s1[n];
end;
writeln(s2);
readln;
end.

3 Основы программирования на языке Паскаль

Слайд 27 3 Основы программирования на языке Паскаль

201
 Задача 3:

Подсчитать в строке количество знаков препинания и количество пробелов
program zadacha3;
var s :string; c: char;
n, m, l: integer;
Begin
write(‘введи строку’); readln(s);
m: = 0; l : = 0;
for n:=1 to length(s) do begin
c : = s[n];
if (c='!') or (c=':') or (c=';') or (c=',') or (c='.') or (c='?') or (c='-') or (s[n]='...') then m:=m+1;
if c =' ' then l:=l+1; end;
writeln(‘количество знаков препинания = ',m);
writeln(‘ количество пробелов = ',l);
readln;
end.
3 Основы программирования на языке Паскаль

Слайд 28 3 Основы программирования на языке Паскаль

202
 Задача 4:

Определить, является ли строка "Палиндромом". Если нет, то выяснить, станет ли она "палиндромом" после удаления из нее всех пробелов
program zadacha4;
var s, s1, s2 : string;
n,m:byte;
begin
write(‘введи строку’); readln(s);
s1: =''; {пустая строка}
for n := length(s) downto 1 do s1:=s1+s[n];
if s1=s then writeln('Palindrom') else
begin
s1:=''; m : = 0;
for n:=1 to length(s) do begin s1:=s1+s[n];
if s[n]=' ' then begin delete(s1,n-m,1); m:=m+1; end;
end;
s2:='';
for n := length(s1) downto 1 do s2:=s2 + s1[n];
if s2=s1 then writeln('Stala polindromom posle udaleniya probelov');
end;
readln;
end.
3 Основы программирования на языке Паскаль

Слайд 29 3 Основы программирования на языке Паскаль

203
 

Функции и процедуры
Подпрограммой (п/п) называется поименованная, логически законченная группа операторов языка, которую можно запустить на выполнение по имени любое количество раз из различных мест программы.
В языке Паскаль существуют подпрограммы двух видов: процедуры и функции.
Процедуры и функции дают возможность снабдить последовательность операторов именем и обращаться к ней с помощью этого имени из любых частей программы.
Подпрограммы решают три важные задачи:
• избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
• улучшают структуру программы, облегчая ее понимание;
• повышают устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы.

3 Основы программирования на языке Паскаль

Слайд 30 3 Основы программирования на языке Паскаль

204
Использование п/п

оправдано в следующих случаях:
Последовательность операторов повторяется в программе несколько раз с различными параметрами.
Большая программа разделяется на части, реализующие отдельные подзадачи, что делает эту программу более обозримой, надежной и удобной для отладки.
В виде п/п представляются стандартные, часто используемые алгоритмы, которые могут быть использованы в любых программах.
В языке Паскаль существут стандартные процедуры и функции, используемые нами ранее, например:
delete, sin, clrscr, ord, copy, odd, inc, trunc, read и т.д.
Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ ЭВМ, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров определенного типа.
Стандартные процедуры и функции расположены в модулях System, Graph, Crt.
Подпрограммы, определяемые пользователем, имеет такой же набор разделов, как и основная программа.
3 Основы программирования на языке Паскаль

Слайд 31 3 Основы программирования на языке Паскаль

205
В заголовке

п/п используются формальные параметры.
Формальные параметры – это список входных и выходных параметров, через которые подпрограмма осуществляет взаимодействие с основной программой.
Формальные параметры удовлетворяют следующим требованиям:
при вызове п/п заменяются фактическими;
резервируют место под фактические параметры;
при вызове фактические параметры должны совпадать с формальными параметрами по: числу, типу, месту в списке;
имена формальных параметров выбираются произвольно.




3 Основы программирования на языке Паскаль

Слайд 32 3 Основы программирования на языке Паскаль

206
Функции
Функция –

это подпрограмма, вызываемая в выражениях в качестве операнда и вычисляющая значение данных простого типа. Функция может содержать параметры, осуществляющие ее взаимодействие с основной программой.
Формат объявления функции: Function <имя функции> [(формальные параметры)] : <тип результата>;
[<разделы объявления локальных данных>]        begin             <исполняемый раздел>        end; где тип результата – тип данных возвращаемого результата, один из простых типов.
В точке вызова функции происходит неявное присваивание фактических значений формальным переменным, имена которых перечислены в заголовке функции при ее описании. В разделе операторов функции обязательно должен присутствовать оператор присваивания вида:
<имя функции>:=<выражение>;
Этот оператор определяет значение, которое будет возвращено функцией в точку ее вызова.
Пример 1 объявления функции, вычисляющей сумму трех чисел: Function Summa (x, y, z: real) : real; begin Summa := x + y + z; end;
Здесь x, y, z – формальные параметры
3 Основы программирования на языке Паскаль

Слайд 33 3 Основы программирования на языке Паскаль

207
При работе

с п/п рекомендуется использовать инструкцию, которую обычно размещают в виде комментариев
Инструкция при работе с подпрограммами
Назначение подпрограммы, используемые методы
Классификация параметров:
а) входные параметры
б) выходные параметры
в) внутренние параметры
Другие подпрограммы, вызываемые данной подпрограммой
3 Основы программирования на языке Паскаль

Слайд 34 3 Основы программирования на языке Паскаль

208
Запуск функции

на исполнение осуществляется указанием имени функции и списка фактических параметров, отделенных друг от друга запятыми и заключенных в круглые скобки. Формат вызова функции: <имя функции> [(фактические параметры)]
Пример вызова функции Summa: k := Summa (a, b, 7) / Sin (a – b);
В качестве фактических параметров могут быть выражения.
Пример 2 объявления функции, вычисляющий десятичный логарифм
Function Lg(z: real) : real; begin lg := ln(z)/ln(10); end;
Пример вызова функции lg: y := (lg(3*x)+2*lg(a))/ (lg(a+b) – lg(sqr(x)));

3 Основы программирования на языке Паскаль

Слайд 35 3 Основы программирования на языке Паскаль

209
 Пример 3

объявления функции, вычисляющей степень xa
Function Step1 (a,x: real) : real; begin step1:=exp(a*ln(x));
end;
Пример вызова функции step1 для вычисления выражения (a + b)-3x :
y := Step1 ((-3*x), (a+b));
Пример 4 объявления функции arcsin:
Function arcsin (x: real) : real; var a: real;
Begin
If abs(a)=1 then a:=0 else a:= ( x / sqrt(1 - x*x));
arcsin:=a;
end;

Пример 5 объявления функции, которая возводит вещественное число в целую степень
Function power (x: real; n: integer) : real; {возведение вещественного числа в целую степень}
var t: real; c : integer {вх. параметры: x - основание, n- показатель, вых. параметр – power, внут.параметры – t, с}
begin if n = 0 then power :=1 else begin t : =x;
For c: = 2 to abs(n) do t: = t * x;
if n < 0 then power : = 1/t else power : = t;
end;
end;


3 Основы программирования на языке Паскаль

Слайд 36 3 Основы программирования на языке Паскаль

210
Пример 6.

Найти максимальное из 4-х чисел.
Program max_4;
uses crt;
var a, b, c, d, m: integer;
function max_2(x,y:integer):integer; {нахождение максимального из двух чисел}
var max: integer; {вх.параметры-x,y; вых.параметр - max_2;внутр.- max}
begin if x>y then max:=x else max:=y; max_2:=max; end;
Begin
clrscr; readln(a, b, c, d);
m:=max_2(max_2(max_2(a,b), c), d);
writeln(m);
End
3 Основы программирования на языке Паскаль

Слайд 37 3 Основы программирования на языке Паскаль

211

Процедуры
Процедура – это подпрограмма, запускаемая на выполнение из программы оператором вызова процедуры и осуществляющая связь с основной программой через параметры.
Формат объявления процедуры:
Procedure <имя процедуры> [(<список входных параметров>[; var <выходные параметры>])];         
[<разделы объявления локальных данных>]         begin              <исполняемый раздел>         end;
где <имя> - идентификатор процедуры (те же ограничения, что и для функции); <список параметров> - список аргументов процедуры с указанием их типов (список параметров-значений); var <выходные параметры>- имя параметров-переменных, т.е. тех переменных, значение которых будет возвращено в точку вызова процедуры.
Процедура может не содержать никаких параметров. В этом случае выполняются операторы, стоящие в теле процедуры. Если же в заголовке процедуры указаны параметры, то в точке вызова процедуры происходит неявное присваивание фактических значений параметрам-значениям (входным параметрам), а по окончании действия процедуры в точку вызова возвращаются значения параметров-переменных (выходных параметров).
Формальные параметры в заголовке процедуры отделяются друг от друга точкой с запятой. Каждый формальный параметр задаются в формате:
[Var] <идентификатор> : <тип данных>

3 Основы программирования на языке Паскаль

Слайд 38 3 Основы программирования на языке Паскаль

212
Разделы объявления

данных и исполняемый раздел имеют такой же смысл и формат, как и в программе. Пример объявления процедуры: Procedure proc (a : integer; var b, c : integer); begin if a > 5 then b := a else c := a end;
В процедуре proc объявлен параметр-значение а и параметры-переменные b и с целого типа. Запуск процедуры на исполнение осуществляется оператором вызова процедуры. Он состоит из имени процедуры и списка фактических параметров, отделенных друг от друга запятыми и заключенных в круглые скобки.
Формат оператора вызова процедуры: <имя процедуры> [(фактические параметры)];
Пример вызова процедуры proc:
proc (10,y,z);
Список фактических параметров должен отсутствовать, если в заголовке объявления процедуры отсутствовал список формальных параметров. Каждый фактический параметр должен соответствовать (в порядке следования) формальному параметру, указанному в заголовке, и иметь тот же тип.
3 Основы программирования на языке Паскаль

Слайд 39 3 Основы программирования на языке Паскаль

213
Пример 2.

Найти максимальное из 4-х чисел.
Program max_4;
uses crt;
var a,b,c,d,m: integer;
{в процедуре находится максимальное из 2-х чисел x, y. Результат - max }
procedure max_2(x,y:integer; var max:integer);
begin if x>y then max:=x else max:=y; end;
Begin
clrscr; readln(a, b, c, d);
max_2(a,b,m); max_2(m,c,m); max_2(m,d,m); writeln(m);
End.
3 Основы программирования на языке Паскаль

Слайд 40 3 Основы программирования на языке Паскаль

214
Локальные и

глобальные переменные. Переменные описываются в программе в разделе описания переменных. Если же программа содержит описание процедуры или функции, то некоторые переменные могут быть описаны в этой процедуре или функции в разделе локальных описаний.
Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Ими можно пользоваться и в главной программе, и в процедуре или функции.
Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой. Ими можно пользоваться только в той процедуре или функции, где они описаны. Вне тела процедуры или функции значения таких переменных не определены.
Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных переменных.
При использовании локальных переменных необходимо следить за тем, чтобы их идентификаторы не совпадали с именами глобальных переменных. Если процедура или функция изменяет значение глобальной переменной, то говорят, что она имеет побочный эффект.
3 Основы программирования на языке Паскаль

Слайд 41Вопросы?

Вопросы?

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

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

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

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

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


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

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