Моя пятая лабораторная работа по программированию на Pascal.
Цель: освоение методов программирования с использованием процедур и функций.
— проверка знаний по организации и использованию процедур и функций, понимание способов передачи параметров;
— знакомство с сообщениями транслятора при обнаружении ошибок в описаниях и/или обращениях к процедурам и функциям;
— знакомство с некоторыми видами ошибок при описании и вызове процедур, тренировка умения поиска и устранения ошибок (отладка);
— получение практических навыков по программированию с использованием процедур и функций.
Delphi/Pascal
program Test6A ;
A , B , T , P , I : integer ;
M : array [ 1..2 ] of integer ;
procedure P1 ;
T := A ; A := B ; B := T end ;
procedure P2 ;
var T : integer ;
T := A ; A := B ; B := T end ;
procedure P3 ( X , Y : integer ) ;
T := X ; X := Y ; Y := T end ;
procedure P4 ( var X , Y : integer ) ;
var T : integer ;
T := X ; X := Y ; Y := T end ;
procedure P5 ( var X , Y : integer ) ;
var T : integer ;
function Kv ( var A : integer ) : integer ;
begin Kv := A * A end ;
T := Kv ( X ) ; X := Kv ( Y ) ; Y := T ; end ;
Составьте программу вычисления корней квадратного уравнения по данным значениям его коэффициентов
Write ( ‘Введите целое в интеpвале 1..9: ‘ ) ; Readln ( P ) ; I := 2 ; M [ 1 ] : = 0 ; M [ 2 ] : = 1 ; A := 1 ; B := 2 ; T := 3 ;
3 : P3 ( A , B ) ;
4 : P3 ( A + 1 , B + 2 ) ;
5 : P4 ( A , B ) ;
P4 ( I , M [ I ] ) ; A := I ; B := M [ 1 ] ; T := M [ 2 ] end ;
7 : P5 ( A , B ) ;
8 : P5 ( B , B ) ; end ;
Writeln ( ‘A=’ , A , ‘ B=’ , B , ‘ T=’ , T ) end .
Delphi/Pascal
program Test6b ;
A : integer ;
procedure S ( X , Y : integer ) ;
T := X ; X := Y ; Y := T end ;
A := 1 ; B := 2 ; T := 3 ; S ( B ) ;
writeln ( A : 7 , B : 7 , T : 7 ) end .
По сообщениям компилятора об ошибках была заполнена таблица:
N строки программы | N ошибки | Текст сообщения об ошибке | Классификация ошибки и причина возникновения | |
На английском языке | На русском языке | |||
7 | 3 | Unknown identifier | Неизвестный идентификатор | Переменная T не была объявлена |
9 | 36 | BEGIN expected | BEGIN пропущено | BEGIN пропущено |
10 | 87 | “,” expexted. | «,» пропущена | Пропущена запятая и переменная |
При устранении логических ошибок была составлена таблица:
Результаты выполнения после устранения ошибок | ||||||||
синтаксических | семантических | побочного эффекта | ||||||
A | B | T | A | B | T | A | B | T |
1 | 2 | 1 | 2 | 1 | 1 | 2 | 1 | 3 |
Программа для вычисления площади кольца с использованием подпрограммы / Pascal ABC
Источник: urvanov.ru
ПРАКТИЧЕСКАЯ РАБОТА Наименование работы: «Разработка и программирование задач с использованием подпрограмм процедур и подпрограмм функций
Составим программу вычисления степени числа а на языке программирования Паскаль АВС:
Program STEPEN;
Var p,a,n,i:integer;
for i:=1 to n do p:=p*a;
write (‘степень числа а = ’, р);
В практике программирования часто складываются ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для избавления от столь нерациональной траты времени было предложено использовать подпрограммы.
Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Паскаль АВС существует 2 вида подпрограмм: процедуры и функции.
Главное отличие процедур от функций заключается в том, что результатом последних является одно единственное значение.
Procedure a17 (a:real; b,c:real; var x1,x2:real: var k:integer);
Формальные параметры отделяются точкой с запятой. После заголовка идут разделы описаний (констант, типов, переменных, процедур и функций, используемых в процедуре) и операторы языка Паскаль АВС, реализующие алгоритм процедуры. Формальные параметры нельзя описывать в разделе описания процедуры.
Для обращения к процедуре необходимо использовать оператор вызова процедуры. Он имеет вид:
STEPEN ( b , m , j , h );
Фактические параметры в списке отделяются друг от друга запятой. Механизм применения формальных – фактических параметров обеспечивает замену формальных параметров фактическими, что позволяет выполнять процедуру с различными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке процедуры устанавливается взаимно однозначное соответствие.
Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
Пример использования процедуры в программе приведен ниже:
Program PROCED1;
Var b, m, j, h:integer;
Procedure s (a,n,i:integer; var p:integer);
for i:=1 to n do p:=p*a;
write (‘степень числа b = ’, h );
Функции. В Турбо Паскале есть стандартные функции ( sin , ln , exp . . .), кроме них программист может воспользоваться собственными функциями, предварительно описав их в программе.
Формат описания функции:
Обращение к функции осуществляется по имени с указанием списка фактических параметров. Количество, типы и порядок следования формальных и фактических параметров должны совпадать:
Пример описания функций : function tan (x:real):real;
function max (x,y:real):real;
ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ НА КОМПЬЮТЕРЕ.
1. Запустить среду программирования Паскаль АВС, щелкнув 2 раза ЛКМ на ярлыке.
2. В окне редактора введите текст программы PROCED 1.
3. Сохранить текст программы, для добавиться автоматически.
4. Выполнить компилирование. Если в программе есть ошибки, то появится сообщение об ошибке, код ошибки, а текстовый курсор покажет место ошибки.
5. Запустить программу на выполнение, для чего выбрать команду Run – Run (или нажать одновременно клавиши Ctrl и F 9).
Откроется пользовательский экран в котором нужно ввести исходные данные:
1). B = 2; 2). B = 5; 3). B = 12.
Для возврата к окну с текстом программы используется клавиша Esc .
6. Показать результат выполнения программы преподавателю, записать результат в тетрадь.
Задача 2: составить процедуру (подпрограмму) вычисления суммы двух чисел a и b :
c = a + b , где а, b , c – вещественные числа.
Составим на языке программирования Паскаль АВС программу вычисления суммы двух чисел с использованием процедуры:
Program PROCED2;
Var x,y,z:real;
Procedure SUM(a,b:real;var c:real);
writeln (‘z = ’,z);
ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ НА КОМПЬЮТЕРЕ.
1. Запустить среду программирования Паскаль АВС, щелкнув 2 раза ЛКМ на ярлыке.
2. В окне редактора введите текст программы PROCED 1.
3. Сохранить текст программы, для добавиться автоматически.
4. Выполнить компилирование. Если в программе есть ошибки, то появится сообщение об ошибке, код ошибки, а текстовый курсор покажет место ошибки.
5. Запустить программу на выполнение, для чего выбрать команду Run – Run (или нажать одновременно клавиши Ctrl и F 9).
Откроется пользовательский экран в котором нужно ввести исходные данные:
х = 457; y = 525.
Для возврата к окну с текстом программы используется клавиша Esc .
6. Показать результат выполнения программы преподавателю, записать результат в тетрадь.
Задача 3: разработать на языке программирования Паскаль АВС функцию вычисления суммы двух чисел a и b :
c = a + b , где а, b , c – вещественные числа.
Составим программу вычисления функции суммирования двух чисел на языке программирования Паскаль АВС:
Program FUNC1;
Function SUM(a,b:real):real;
Источник: znanio.ru
Составить программу вычисления функции паскаль
Используя обращение к подпрограмме r=q^2+s^2+x^2 написать программу вычисления функции Z=sqrt(sqr(a)+sqr(b)+sqr(c))/ (кубический корень)exp (ln (sqr(n)+sqr(m)+sqr(k)) / 3).Определить в программе формальные и фактические параметры.
М-да, вообще-то обычно подобные запросы, свидетельствующие лишь об абсолютном лоботрясничании в течение семестра и о неудосуживании разобраться со структурой паскалевских подпрограмм, я оставляю без внимания, но , так что держите:
Var a,b,c,Z:Real; Function R(q,s,x:real):Real; begin R:=q*q+s*s+x*x; end; Begin Write(‘a= ‘); Readln(a); Write(‘b= ‘); Readln(b); Write(‘c= ‘); Readln(c); Z:=Sqrt(R(a,b,c))/Exp(Ln(R(a,b,c))/3); Writeln(‘Z= ‘,Z:0:5); Readln End.
Источник: www.tehnari.ru