
- •Учебное пособие Основы алгоритмизации и программирования
- •Содержание
- •Структура курса «Основы алгоритмизации и программирования»
- •Тема: Понятие алгоритма. Понятие системы программирования.
- •Линейные алгоритмы
- •Структура программы в Паскале
- •Описательная часть
- •Исполнительная часть
- •Основные команды управления выводом на экран.
- •Цветовая шкала
- •Контрольные вопросы по теме «Алгоритмы»
- •Задания для самостоятельной работы. «Линейные алгоритмы. Присваивание»
- •Задачи по теме «Графика»
- •Тема: Алгоритмы с ветвлением. Организация ветвления на Паскале.
- •Составные условия.
- •Контрольные вопросы по теме «Ветвление»
- •Задачи по теме «Ветвление»
- •Задачи по теме «Оператор выбора»
- •Тест по теме «Ветвление»
- •Тема: Циклические алгоритмы. Организация циклов в Паскале.
- •Правила организации циклических действий.
- •Контрольная работа
- •Вопросы к зачету:
- •Тест по теме «Циклы»
- •Тема: Процедуры и функции.
- •Процедуры в Паскале.
- •Тест по теме «Процедуры и функции»
- •Задачи по теме «Процедуры и функции»
- •Контрольная работа
- •Тема «Структурированные типы данных. Массивы»
- •Сортировка массива.
- •Двумерные массивы.
- •Контрольные вопросы по теме «Массивы»
- •Задачи на тему «Массивы»
- •Дан массив. Все его элементы увеличить в два раза.
- •Контрольная работа
- •Тест по теме «Структурированные типы данных. Массивы»
- •7. Удвоить положительные элементы массива
- •8. Найти сумму четных элементов массива
- •Тема «Структурированные типы данных. Строки»
- •Функции строковых переменных
- •Контрольные вопросы по теме «Строки»
- •Задачи на тему «Строки»
- •Контрольная работа
- •Тест по теме «Строки»
- •Тема «Структурированные типы данных. Запись»
- •Контрольные вопросы по теме «Запись»
- •Задачи по теме «Записи»
- •Контрольные вопросы по теме «Множества»
- •Задачи на тему «Множество»
- •Тест по теме «Множество. Запись»
- •Тема «Структурированные типы данных. Файлы»
- •Контрольные вопросы по теме «Файлы»
- •Задачи на тему «Файлы»
- •Тест по теме «Файлы»
- •Задания на модульное программирование
- •Олимпиадные задачи районного тура разных лет
- •Задача о тексте
- •Пример: Вход: 2
- •Сравнение строк
- •Римские цифры
- •Тетрагон
- •Проблема «2000»
- •Грузоперевозки
- •Тренировки барона Мюнхгаузена
- •Перевертыши
- •Четыре числа в двух ячейках
- •Площадь треугольника
- •Сумма чисел
- •Нужная дата
- •Дружные слова
- •Мы все такие разные
- •Считалка
- •Работаем с дробями
- •Новый порядок
- •И снова палиндром
- •Скамейка
- •Обращение числа
- •Код сейфа
- •Сообщения об ошибках компиляции (по кодам)
- •Список литературы
Процедуры в Паскале.
Описание процедуры:
Procedure Name (параметры – переменные: тип; VAR параметры- значения : тип);
VAR
Локальные переменные: тип;
Begin
Тело процедуры;
End;
Name – имя процедуры (любое лат. буквами); Все переменные, которые описывают в процедуре являются формальными (от слова формула), т.е. на их место можно подставлять любые значения и переменные из основной программы.
Параметры – переменные – это те значения, которые поступают из основной программы в процедуру в качестве исходных данных.
Параметры – значения – это те значения, которые передаются в основную программу в качестве результата работы процедуры.
Вызов процедуры: Name(список фактических параметров); - фактические параметры подставляются на место формальных параметров в процедуре, поэтому количество фактических и формальных параметров должно быть одинаковым.
Описание функции:
Function Name( параметры- переменные: тип): тип;
Var
Локальные переменные: тип;
Begin
Тело функции
End;
Все переменные используемые в программе делятся на глобальные и локальные. Глобальные переменные могут использоваться в основной программе и в процедурах. Описывают их в основной программе. Локальные переменные действуют внутри процедуры, там же и описываются.
Формальные переменные используются в процедуре и передают свои значения фактическим параметрам, при условии:
1. Количество формальных и фактических переменных должно быть одинаковым.
2. Должно быть соответствие типов формальных и фактических параметров.
3. Должен сохраняться порядок следования параметров. Пример:
Вызов процедуры поиска максимального из двух чисел МАХIMUM(5.7.Мах): Где MAXIMUM - имя процедуры. 5.7. Мах - фактические параметры.
PROCEDURE MAXIMUM (A, B: Integer: VAR С: Integer):
Begin IF А>В THEN: C:=A Else C:=B:
End;
A.B- параметры значения поступают в процедуру. С- параметр-переменная является результатом процедуры.
При вызове процедуры ее переменные А получает значение 5. В получает значение 7 . после выполнения процедуры переменная Мах получает значение С.
Задача.
Найти значение выражения
W= МАХ(А+В,С)- MIN(A,B.C)+ MAX(A-C.B-C)*MIN( A+B.C -А.С-В)
Значения А.В.С вводятся с клавиатуры.
Программа:
Program demo:
Var
W.A.B.C.RI.R2.R3.R4: Integer;
PROCEDURE DVA(X.Y: Integer; VarZ:Integer):
Begin
If X>Y Then Z:=X Else Z:=Y;
End;
PROCEDURE TRI (X,Y,Z: Integer; Var F: Integer):
Begin
If (X<Y)And(X<Z) Then F:= X;
If (Y<X)And(Y Z) Then F:=Y;
If (Z < X)And(Z< Y) Then F:=Z;
End;
Begin CLRSCR:
WriteLn(Введите три числа'); ReadLn( А.В.С): DVA(A.+B.C.R1): TRI(A.B.C.R2)
DVA(A-C,B-C,R3);
TRI(A+B, C+A,C+B,R4);
W:=RI-R2+R3*R4:
WriteLn(‘ Результат выражения W=’,W);
End.
Функция – это частный случай процедуры. Ее отличие состоит в том, что она не имеет парамегров результатов. а сама является результатом.
Заголовок функции: FUNCTION NAME (список формальных параметров): тип результата;
Пример:
Вызов функции МАХ, которая является МАХ значением из двух: МАХ(5.7):
FUNCTION МАХ (А.В: Integer): Integer:
Begin
If А -В Then MAX:=A Else Max:-B:
End; Результат выполнения функции можно использовать в вычислениях.
Пример задачи с использование процедуры и функции.
Пример 1.Заданы длины сторон трех треугольников. Найти больший периметр.
Для вычисления периметра треугольника напишем процедуру Perimetr, для определения большего из двух чисел напишем процедуру max.
Program prim1;
Var
A,b,c,d,e,f,g,k,l,p1,p2,p3,maxp: integer;
Procedure Perimetr (x,y,z;Integer; Var p:integer);
Begin
P:=x+y+z;
End;
Procedure Max (a,b:integer; Var m: integer);
Begin
If a>b then m:=a else m:=b;
End;
Begin
Writeln(‘введите длины сторон первого треугольника’);
Readln(a,b,c);
Perimetr(a,b,c,P1);
Writeln(‘введите длины сторон второго треугольника’);
Readln(d,e,f);
Perimetr(d,e,f,P2);
Writeln(‘введите длины сторон третьего треугольника’);
Readln(g,k,l);
Perimetr(g,k,l,P3);
Max(P1,P2,maxp); Max(maxp,P3,maxp);
Writeln(‘Больший периметр ’,maxp);
End.
Решим эту же задачу с использованием функций.
Program prim2;
Var
A,b,c,d,e,f,g,k,l,maxp: integer;
Function Perimetr (x,y,z;Integer):integer;
Begin
Perimetr:=x+y+z;
End;
Function Max (a,b:integer): integer;
Begin
If a>b then max:=a else max:=b;
End;
Begin
Writeln(‘введите длины сторон первого треугольника’);
Readln(a,b,c);
Writeln(‘введите длины сторон второго треугольника’);
Readln(d,e,f);
Writeln(‘введите длины сторон третьего треугольника’);
Readln(g,k,l);
Maxp:=Max(Perimetr(a,b,c),Perimetr(g,k,l ))
Maxp:=Max(Maxp,Perimetr(d,e,f);
Writeln(‘Больший периметр ’,maxp);
End.
Контрольные вопросы по теме «Процедуры и функции»
Дайте определение вспомогательного алгоритма.
Обоснуйте необходимость применения подпрограмм.
Опишите структуру процедуры.
Опишите структуру функции.
Назовите основные отличия процедуры и функции.
Дайте определения понятиям: глобальные переменные, локальные переменные.
Дайте определения понятиям: формальные значения, фактические значения.
Опишите механизм передачи параметров из основной программы в подпрограмму и наоборот.