Содержание
- 2. 3 Основы программирования на языке Паскаль 176 Алгоритмы обработки двумерных информационных массивов Многомерные массивы широко используются
- 3. 3 Основы программирования на языке Паскаль 177 2) Вариант Пусть задан двумерный массив Matr, имеющий размер
- 4. 3 Основы программирования на языке Паскаль 178 Вложенным циклом или циклом в цикле называется такая структура,
- 5. 3 Основы программирования на языке Паскаль 179 Приведем фрагмент вывода двумерного массива в виде таблицы Const
- 6. 3 Основы программирования на языке Паскаль 180 Пример 12. Выпуск продукции в тыс. руб. представлен таблицей
- 7. 3 Основы программирования на языке Паскаль 181 Выполним построение математической модели и алгоритма решения функциональной задачи
- 8. 3 Основы программирования на языке Паскаль 182 г) Система расчетных формул: 1) нахождение общего выпуска продукции
- 9. 3 Основы программирования на языке Паскаль 183 Представим алгоритм нахождения общего выпуска продукции каждого вида в
- 10. 3 Основы программирования на языке Паскаль 184 Program sum_str; Uses CRT; Var i , n ,
- 11. 3 Основы программирования на языке Паскаль 185 г) Система расчетных формул: 2) нахождение максимального выпуска продукции
- 12. 3 Основы программирования на языке Паскаль 186 Представим алгоритм нахождения максимального выпуска продукции каждого вида в
- 13. 3 Основы программирования на языке Паскаль 187 Program max_str; Uses CRT; Var i , n ,
- 14. 3 Основы программирования на языке Паскаль 188 Задача 2: Определить min элемент в каждом столбце массива
- 15. 3 Основы программирования на языке Паскаль 189 Задача 3. Найти количество отрицательных элементов в каждом столбце.
- 16. 3 Основы программирования на языке Паскаль 190 Работа с переменными символьного и строкового типа данных Паскаль
- 17. 3 Основы программирования на языке Паскаль 191 Так как символы языка упорядочены, то к символьным данным
- 18. 3 Основы программирования на языке Паскаль 192 Работа с переменными символьного и строкового типа данных Паскаль
- 19. 3 Основы программирования на языке Паскаль 193 Строка – это последовательность символов, не превышающая 255-ти символов.
- 20. 3 Основы программирования на языке Паскаль 194 Операции со строками В Турбо Паскале существуют два пути
- 21. 3 Основы программирования на языке Паскаль 195 Переменные, описанные как строковые с разными максимальными длинами, можно
- 22. 3 Основы программирования на языке Паскаль 196 Стандартные функции обработки строк Length(s:string):integer – возвращает в качестве
- 23. 3 Основы программирования на языке Паскаль 197 Стандартные процедуры обработки строк Delete (st:string; Poz: integer; N:
- 24. 3 Основы программирования на языке Паскаль 198 Str ( n [: : ], St) – преобразование
- 25. 3 Основы программирования на языке Паскаль 199 Задача 1: Дана строка, состоящая из слов, разделенных между
- 26. 3 Основы программирования на языке Паскаль 200 Задача 2: Дана строка, преобразовать ее, заменив в ней
- 27. 3 Основы программирования на языке Паскаль 201 Задача 3: Подсчитать в строке количество знаков препинания и
- 28. 3 Основы программирования на языке Паскаль 202 Задача 4: Определить, является ли строка "Палиндромом". Если нет,
- 29. 3 Основы программирования на языке Паскаль 203 Функции и процедуры Подпрограммой (п/п) называется поименованная, логически законченная
- 30. 3 Основы программирования на языке Паскаль 204 Использование п/п оправдано в следующих случаях: Последовательность операторов повторяется
- 31. 3 Основы программирования на языке Паскаль 205 В заголовке п/п используются формальные параметры. Формальные параметры –
- 32. 3 Основы программирования на языке Паскаль 206 Функции Функция – это подпрограмма, вызываемая в выражениях в
- 33. 3 Основы программирования на языке Паскаль 207 При работе с п/п рекомендуется использовать инструкцию, которую обычно
- 34. 3 Основы программирования на языке Паскаль 208 Запуск функции на исполнение осуществляется указанием имени функции и
- 35. 3 Основы программирования на языке Паскаль 209 Пример 3 объявления функции, вычисляющей степень xa Function Step1
- 36. 3 Основы программирования на языке Паскаль 210 Пример 6. Найти максимальное из 4-х чисел. Program max_4;
- 37. 3 Основы программирования на языке Паскаль 211 Процедуры Процедура – это подпрограмма, запускаемая на выполнение из
- 38. 3 Основы программирования на языке Паскаль 212 Разделы объявления данных и исполняемый раздел имеют такой же
- 39. 3 Основы программирования на языке Паскаль 213 Пример 2. Найти максимальное из 4-х чисел. Program max_4;
- 40. 3 Основы программирования на языке Паскаль 214 Локальные и глобальные переменные. Переменные описываются в программе в
- 42. Скачать презентацию
3 Основы программирования на языке Паскаль 176
Алгоритмы обработки двумерных информационных
3 Основы программирования на языке Паскаль 176
Алгоритмы обработки двумерных информационных
Многомерные массивы широко используются в статистике и математике, такие массивы имеют более одного измерения (индекса).
Двумерный массив представляет собой набор данных одинакового типа, в котором доступ к любому его элементу осуществляется по двум индексам: номеру строки и номеру столбца. Количество индексов определяет размерность массива.
Размерность двумерного массива равна произведению числа строк на число столбцов.
Двумерные массивы являются логической структурой данных удобной для решения задач связанных с обработкой величин зависящих от двух параметров.
Элемент многомерного массива обозначается именем массива с индексами, например, Х [ i, j ] .
Индексы представляют собой выражения порядкового (чаще целого) типа. Обращаться к элементам массива можно в произвольном порядке, задавая значения индексов. Причем, первый индекс всегда нумерует строки, второй - столбцы.
Объявление массива
1) Вариант
Type
Matrix = array [1..100, 0..9] of real;
Var
m : Matrix;
i : integer;
3 Основы программирования на языке Паскаль 177
2) Вариант
Пусть задан двумерный
3 Основы программирования на языке Паскаль 177
2) Вариант
Пусть задан двумерный
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 Основы программирования на языке Паскаль 178
Вложенным циклом или циклом
3 Основы программирования на языке Паскаль 178
Вложенным циклом или циклом
Рассмотрим пример алгоритма реализующего ввод двумерного массива по строкам в виде блок-схемы:
В этом примере элементы массива вводятся по строкам в следующем порядке:
Х11, Х 12, ..., Х 1m
Х 21, Х 22, ..., Х 2m
...................................
Хn1, Х n2, ..., Х nm
Для каждого значения счетчика внешнего цикла i, вложенный цикл j выполняется заданное количество (m) раз.
3 Основы программирования на языке Паскаль 179
Приведем фрагмент вывода двумерного
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 Основы программирования на языке Паскаль 180
Пример 12. Выпуск продукции в
3 Основы программирования на языке Паскаль 180
Пример 12. Выпуск продукции в
Таблица – Исходные данные для примера 12
3 Основы программирования на языке Паскаль 181
Выполним построение математической модели
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 Основы программирования на языке Паскаль 182
г) Система расчетных формул:
1)
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 Основы программирования на языке Паскаль 183
Представим алгоритм нахождения общего
3 Основы программирования на языке Паскаль 183
Представим алгоритм нахождения общего
3 Основы программирования на языке Паскаль 184
Program sum_str;
Uses CRT;
Var i
3 Основы программирования на языке Паскаль 184
Program sum_str;
Uses CRT;
Var i
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 Основы программирования на языке Паскаль 185
г) Система расчетных формул:
2)
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 Основы программирования на языке Паскаль 186
Представим алгоритм нахождения максимального
3 Основы программирования на языке Паскаль 186
Представим алгоритм нахождения максимального
Вывод max{1..n],
K[1..n]
3 Основы программирования на языке Паскаль 187
Program max_str;
Uses CRT;
Var i
3 Основы программирования на языке Паскаль 187
Program max_str;
Uses CRT;
Var i
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 Основы программирования на языке Паскаль 188
Задача 2: Определить min
3 Основы программирования на языке Паскаль 188
Задача 2: Определить min
3 Основы программирования на языке Паскаль 189
Задача 3. Найти количество
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 Основы программирования на языке Паскаль 190
Работа с переменными символьного
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 Основы программирования на языке Паскаль 191
Так как символы языка
3 Основы программирования на языке Паскаль 191
Так как символы языка
Например: ‘B’ > ‘A’
Иногда в программах возникает необходимость по коду определить символ и, наоборот, по символу определить его код. Для этого используют функции:
Функция CHR ( X:Byte) : Char
Эти функция возвращают символ, соответствующий ASCII -коду числа X.
Для определения кода по символу используют функцию ORD.
Функция ORD ( C:Char) : Byte
Функция UPCASE ( C:Char) : Char - преобразует символ из строчного в прописной. Эта функция рассчитана на обработку только одного символа.Она не преобразует символы кириллицы (русские буквы).
3 Основы программирования на языке Паскаль 192
Работа с переменными символьного
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 Основы программирования на языке Паскаль 193
Строка – это последовательность
3 Основы программирования на языке Паскаль 193
Строка – это последовательность
Переменные типа STRING могут быть объявлены следующим образом:
var s: string [n];
var s: string;
n- максимально возможная длина строки- целое число в диапазоне 1..255.
Переменные типа STRING объявляется, как правило, путем указания имени переменной, зарезервированного слова STRING и указания (в квадратных скобках) максимального размера (длины) строки, которая может хранится в этой переменной. Если максимальный размер строки не указан, то он автоматически принимается равным 255- максимально возможной длине строки.
Пример.
Var s:string; {описание идентификатора s как строковую переменную}
Begin
s:=’Привет’; {задание значения строковой переменной}
Writeln(s); {распечатка на экране слова "Привет"}
end.
3 Основы программирования на языке Паскаль 194
Операции со строками
В Турбо
3 Основы программирования на языке Паскаль 194
Операции со строками
В Турбо
Тип 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 Основы программирования на языке Паскаль 195
Переменные, описанные как строковые
3 Основы программирования на языке Паскаль 195
Переменные, описанные как строковые
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +.
Например:
a : = ' Turbo';
b : = ' Pascal ';
c : = a+b;
В этом примере переменная c приобретет значение ' TurboPascal '.
Кроме слияния над строками определены операции сравнения <, >, <>,<=, >=, =.
Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
Результат выполнения операций отношения над строками имеет логический тип, т.е. принимает значения True или False.
‘папа’ > ‘мама’
‘Иванова’ > ‘Иванов’
‘мука’ <> ‘ мука’
При вводе переменных строкового типа рекомендуется каждую переменную вводить одним оператором ReadLn (не Read); ;
Например, необходимо ввести имя, фамилию и отчество
Write (‘введи фамилию’); ReadLn(Fam);
Write (‘введи имя’); ReadLn(Imya);
Write (‘’введи отчество); ReadLn(Otch);
3 Основы программирования на языке Паскаль 196
Стандартные функции обработки строк
Length(s:string):integer
3 Основы программирования на языке Паскаль 196
Стандартные функции обработки строк
Length(s:string):integer
Пример. 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 Основы программирования на языке Паскаль 197
Стандартные процедуры обработки строк
Delete
3 Основы программирования на языке Паскаль 197
Стандартные процедуры обработки строк
Delete
Так оператор 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 Основы программирования на языке Паскаль 198
Str ( n [:<размер>:<точность>],
3 Основы программирования на языке Паскаль 198
Str ( n [:<размер>:<точность>],
Примеры:
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 Основы программирования на языке Паскаль 199
Задача 1: Дана строка,
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 Основы программирования на языке Паскаль 200
Задача 2: Дана строка,
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 Основы программирования на языке Паскаль 201
Задача 3: Подсчитать в
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 Основы программирования на языке Паскаль 202
Задача 4: Определить, является
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 Основы программирования на языке Паскаль 203
Функции и процедуры
3 Основы программирования на языке Паскаль 203
Функции и процедуры
Подпрограммой (п/п) называется поименованная, логически законченная группа операторов языка, которую можно запустить на выполнение по имени любое количество раз из различных мест программы.
В языке Паскаль существуют подпрограммы двух видов: процедуры и функции.
Процедуры и функции дают возможность снабдить последовательность операторов именем и обращаться к ней с помощью этого имени из любых частей программы.
Подпрограммы решают три важные задачи:
• избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
• улучшают структуру программы, облегчая ее понимание;
• повышают устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы.
3 Основы программирования на языке Паскаль 204
Использование п/п оправдано в
3 Основы программирования на языке Паскаль 204
Использование п/п оправдано в
Последовательность операторов повторяется в программе несколько раз с различными параметрами.
Большая программа разделяется на части, реализующие отдельные подзадачи, что делает эту программу более обозримой, надежной и удобной для отладки.
В виде п/п представляются стандартные, часто используемые алгоритмы, которые могут быть использованы в любых программах.
В языке Паскаль существут стандартные процедуры и функции, используемые нами ранее, например:
delete, sin, clrscr, ord, copy, odd, inc, trunc, read и т.д.
Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ ЭВМ, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров определенного типа.
Стандартные процедуры и функции расположены в модулях System, Graph, Crt.
Подпрограммы, определяемые пользователем, имеет такой же набор разделов, как и основная программа.
3 Основы программирования на языке Паскаль 205
В заголовке п/п используются
3 Основы программирования на языке Паскаль 205
В заголовке п/п используются
Формальные параметры – это список входных и выходных параметров, через которые подпрограмма осуществляет взаимодействие с основной программой.
Формальные параметры удовлетворяют следующим требованиям:
при вызове п/п заменяются фактическими;
резервируют место под фактические параметры;
при вызове фактические параметры должны совпадать с формальными параметрами по: числу, типу, месту в списке;
имена формальных параметров выбираются произвольно.
3 Основы программирования на языке Паскаль 206
Функции
Функция – это подпрограмма,
3 Основы программирования на языке Паскаль 206
Функции
Функция – это подпрограмма,
Формат объявления функции: Function <имя функции> [(формальные параметры)] : <тип результата>;
[<разделы объявления локальных данных>] begin <исполняемый раздел> end; где тип результата – тип данных возвращаемого результата, один из простых типов.
В точке вызова функции происходит неявное присваивание фактических значений формальным переменным, имена которых перечислены в заголовке функции при ее описании. В разделе операторов функции обязательно должен присутствовать оператор присваивания вида:
<имя функции>:=<выражение>;
Этот оператор определяет значение, которое будет возвращено функцией в точку ее вызова.
Пример 1 объявления функции, вычисляющей сумму трех чисел: Function Summa (x, y, z: real) : real; begin Summa := x + y + z; end;
Здесь x, y, z – формальные параметры
3 Основы программирования на языке Паскаль 207
При работе с п/п
3 Основы программирования на языке Паскаль 207
При работе с п/п
Инструкция при работе с подпрограммами
Назначение подпрограммы, используемые методы
Классификация параметров:
а) входные параметры
б) выходные параметры
в) внутренние параметры
Другие подпрограммы, вызываемые данной подпрограммой
3 Основы программирования на языке Паскаль 208
Запуск функции на исполнение
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 Основы программирования на языке Паскаль 209
Пример 3 объявления функции,
3 Основы программирования на языке Паскаль 209
Пример 3 объявления функции,
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 Основы программирования на языке Паскаль 210
Пример 6. Найти максимальное
3 Основы программирования на языке Паскаль 210
Пример 6. Найти максимальное
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 Основы программирования на языке Паскаль 211
Процедуры
Процедура – это
3 Основы программирования на языке Паскаль 211
Процедуры
Процедура – это
Формат объявления процедуры:
Procedure <имя процедуры> [(<список входных параметров>[; var <выходные параметры>])];
[<разделы объявления локальных данных>] begin <исполняемый раздел> end;
где <имя> - идентификатор процедуры (те же ограничения, что и для функции); <список параметров> - список аргументов процедуры с указанием их типов (список параметров-значений); var <выходные параметры>- имя параметров-переменных, т.е. тех переменных, значение которых будет возвращено в точку вызова процедуры.
Процедура может не содержать никаких параметров. В этом случае выполняются операторы, стоящие в теле процедуры. Если же в заголовке процедуры указаны параметры, то в точке вызова процедуры происходит неявное присваивание фактических значений параметрам-значениям (входным параметрам), а по окончании действия процедуры в точку вызова возвращаются значения параметров-переменных (выходных параметров).
Формальные параметры в заголовке процедуры отделяются друг от друга точкой с запятой. Каждый формальный параметр задаются в формате:
[Var] <идентификатор> : <тип данных>
3 Основы программирования на языке Паскаль 212
Разделы объявления данных и
3 Основы программирования на языке Паскаль 212
Разделы объявления данных и
В процедуре proc объявлен параметр-значение а и параметры-переменные b и с целого типа. Запуск процедуры на исполнение осуществляется оператором вызова процедуры. Он состоит из имени процедуры и списка фактических параметров, отделенных друг от друга запятыми и заключенных в круглые скобки.
Формат оператора вызова процедуры: <имя процедуры> [(фактические параметры)];
Пример вызова процедуры proc:
proc (10,y,z);
Список фактических параметров должен отсутствовать, если в заголовке объявления процедуры отсутствовал список формальных параметров. Каждый фактический параметр должен соответствовать (в порядке следования) формальному параметру, указанному в заголовке, и иметь тот же тип.
3 Основы программирования на языке Паскаль 213
Пример 2. Найти максимальное
3 Основы программирования на языке Паскаль 213
Пример 2. Найти максимальное
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 Основы программирования на языке Паскаль 214
Локальные и глобальные переменные.
3 Основы программирования на языке Паскаль 214
Локальные и глобальные переменные.
Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Ими можно пользоваться и в главной программе, и в процедуре или функции.
Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой. Ими можно пользоваться только в той процедуре или функции, где они описаны. Вне тела процедуры или функции значения таких переменных не определены.
Обмен информацией между основной программой и подпрограммой может осуществляться только с помощью глобальных переменных.
При использовании локальных переменных необходимо следить за тем, чтобы их идентификаторы не совпадали с именами глобальных переменных. Если процедура или функция изменяет значение глобальной переменной, то говорят, что она имеет побочный эффект.