русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Занятие 3. Процедуры.


Дата добавления: 2014-11-28; просмотров: 581; Нарушение авторских прав


Структура процедуры имеет следующий вид:

Procedure <имя процедуры>(формальные параметры : их тип);

Var

(локальные переменные)

Begin

. . .

end;

Процедура вызывается по имени:

<имя процедуры> (фактические параметры);

Значение каждого фактического параметра при вызове процедуры передаётся формальному параметру. Временно управление передаётся процедуре. После завершения работы процедуры управление возвращается в основную программу.

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

Заголовок процедуры может выглядеть так:

PROCEDURE GG(a,b,c:integer); вызываться так: GG(3,n,m)

Здесь a,b,c–формальные параметры, а 3, n, m–фактические параметры

Таким образом в процедуру передаются значения: a=3, b=n, c=m

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

Например :

Procedure express(a,b,c : real; var x,y:real);

Var

z : real;

begin

z:=a+ b+ c;

x:=sqr(z);

y:=sqrt(z);

end ;

Эту процедуру можно вызвать следующим образом:

express(7.6, 6.8, 9.5, x1, x2);

Формальные входные параметры a, b, c принимают значения соответствующих фактических параметров a=7.6; b=6.8; c=9.5.

При этих значениях выполняется процедура. Результатом выполнения процедуры являются x, y, которые передают свои значения соответствующим фактическим параметрам x1, y1. Таким образом в основной программе будем иметь x1=20, y1=22.



В качестве фактических параметров могут быть константы, переменные, выражения, массивы. В качестве формальных параметров могут быть только переменные(константы и выражения недопустимы).

Рассмотрите примеры решения задач.

Задача 1. Описать пpоцедуpу "аналитического" сложения обыкновенных дpобей, вычисляющую по числам P1,Q1,P2,Q2, являющимися числителями и знаменателями дробей и последняя дpобь несокpатима. Результат вывести в виде

P1 P2 P

---- + ---- = ---

Q1 Q2 Q

Program Kudashev_Artem;

Uses

Crt;

Var

P1, Q1, P2, Q2, P, Nod_2, Celaya : Longint;

Dop_1, Dop_2 : integer;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Procedure Nod(A,B : Longint;Var Nod_2 : Longint);

Begin

Nod_2:=A*B;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Procedure Vivod_Otveta(Celaya,P1,Q1,P2,Q2,P,Nod_2,X,Y:integer);

Var

i : integer;

Begin

if P > Nod_2

then

begin

Celaya:=P div Nod_2;

P:=P mod Nod_2;

end

else

begin

Gotoxy(X+1,Y);

write(P1);

Gotoxy(X+10,Y);

write(P2);

if P = 0

then

begin

Gotoxy(X+1,Y+1);

write('---- + ---- = ',Celaya,'');

Gotoxy(X+1,Y+2);

write(Q1);

Gotoxy(X+10,Y+2);

write(Q2);

end

else

begin

for I:=10 downto 2 do

begin

if ((P mod I) = 0) and ((Nod_2 mod I) = 0) then

begin

P:=P div I;

Nod_2:=Nod_2 div I;

end;

end;

Gotoxy(X+19,Y);

write(P);

Gotoxy(X+1,Y+1);

write('---- + ---- = ',Celaya,' ------');

Gotoxy(X+1,Y+2);

write(Q1);

Gotoxy(X+10,Y+2);

write(Q2);

Gotoxy(X+19,Y+2);

write(Nod_2);

end;

end;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Procedure Podshet(P1, Q1, P2, Q2 : Longint);

Begin

Nod(Q1,Q2,Nod_2);

Dop_1:=Nod_2 div Q1;

Dop_2:=Nod_2 div Q2;

P:=(Dop_1*P1)+(Dop_2*P2);

if P > Nod_2

then

begin

Celaya:=P div Nod_2;

P:=P mod Nod_2;

end;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Begin

Clrscr;

Q1:=0;

Q2:=0;

Textcolor(LightCyan);

writeln(' P1 P2 P');

writeln('---- + ---- = ---');

writeln(' Q1 Q2 Q');

writeln;

write('Введите P1 -> ');

readln(P1);

while Q1 = 0 do

begin

write('Введите Q1 -> ');

readln(Q1);

if Q1 = 0

then

writeln('Число Q1 не должно pавнятся 0');

end;

write('Введите P2 -> ');

readln(P2);

while Q2 = 0 do

begin

write('Введите Q2 -> ');

readln(Q2);

if Q2 = 0

then

writeln('Число Q2 не должно pавнятся 0');

end;

Podshet(P1,Q1,P2,Q2);

Vivod_Otveta(Celaya,P1,Q1,P2,Q2,P,Nod_2,2,10);

readkey;

End.

Задача 2. Для заданного N составить алгоритм вычисления значения выражения:

(1*1) (2*2) (3*3) (N*N)

----------- * ------------ * ----------- * * -----------

(1+(3*3)) (2+(3*3)) (3+(3*3)) ... (N+(3*3))

Program Kudashev_Artem;

Uses

Crt;

Var

N, Ch, Zn, Celaya : Longint;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Procedure Podshet(N : Longint; Var Chislitel, Znamenatel : Longint);

Var

A, Z : integer;

Begin

Chislitel:=1;

Znamenatel:=1;

for A:=1 to N do

begin

Chislitel:=Chislitel*(A*A);

Znamenatel:=Znamenatel*(9+A);

for Z:=2 to 10 do

begin

if ((Chislitel mod Z) = 0) and ((Znamenatel mod Z) = 0)

then

begin

Chislitel:=Chislitel div Z;

Znamenatel:=Znamenatel div Z;

end;

end;

end;

End;

{- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -}

Begin

Clrscr;

TextBackground(Black);

Textcolor(Yellow);

write('Введите N -> ');

read(N);

Podshet(N,Chl,Zn);

Celaya:=Ch div Zn;

Chislitel:=Ch mod Zn;

writeln('Ответ');

writeln(' ',Ch);

writeln('',Celaya,' ---------');

writeln(' ',Zn);

readkey;

End.

 

Задание. Приготовьтесь объяснить решение задач учителю.



<== предыдущая лекция | следующая лекция ==>
Локальные и глобальные переменные и подпрограммы. | Занятие 4. Процедуры в графическом режиме.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.204 сек.