рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Использование процедур и функций

Использование процедур и функций - раздел Информатика, Информатика и программирование на языке Паскаль   Задание. Определить Наибольший Общий Делитель Двух Целых Чисе...

 

Задание. Определить наибольший общий делитель двух целых чисел.

Постановка задачи.

Входные данные:

A , B – целые, положительные числа.

Выходные данные:

Nod – наибольший общий делитель A и B.

Метод решения: алгоритм Евклида.

 

Алгоритм. Выдача наибольшего общего делителя двух целых чисел.

Входные данные.

СКАЛЯР A , B – целые, положительные числа.

Выходные данные.

СКАЛЯР Nod – целое число.

Начало

A:=0

B:=0

ЦИКЛ_ПОКА(A<=0 ИЛИ B<=0)

Вывод(‘Input A,B : ’)

ввод(A,B)

КОНЕЦ_ЦИКЛА

Findnod(A,B,Nod)

Вывод(‘Nod(A,B)= ’,Nod)

Конец

Алгоритм. Процедура определения наибольшего общего делителя двух целых чисел (findnod).

Входные данные.

СКАЛЯР A , B – целые, положительные числа.

Выходные данные.

СКАЛЯР Nod – целое число.

Промежуточные данные.

СКАЛЯР R – целое число. {остаток от деления }

Начало

R:=1

ЦИКЛ_ПОКА(R<>0)

R:=A mod B

A:=B

B:=R

КОНЕЦ_ЦИКЛА

Nod:= A

Конец

Блок - схема программы

           
   
 
 
 
   
Рис. 9.4



Блок-схема процедуры findnod.

           
   
 
 
 
   
Рис. 9.5

 



Программа на языке Паскаль, использующая процедуру.


Program Exam7;

Var

A, B, Nod: integer;

procedure findnod (A, B: integer; Var X: integer);

Var R: integer;

Begin

R:=1;

While R<>0 do

Begin

R:=A mod B;

A:=B; B:=R;

End;

X:=A;

End;

Begin A:=0; B:=0;

While (A<=0) or (B<=0) do begin

Writeln('Input A,B <>0 :');

Readln(A,B);

End;

findnod(A,B,Nod);

Writeln('Nod(A,B) = ',Nod);

Readln;

End.

 

Результаты тестирования.

1. Исходные данные:

A=84

B=36

Результат: Nod(A,B)=12

b) Тестовый пример 2:

A=84

B=56

Результат: Nod(A,B)=28

Результаты, выданные программой.

 

1. Тестовый пример1

Input A,B <>0 :

Nod(A,B) = 12

 

2. Тестовый пример 2

Input A,B <>0 :

Nod(A,B) = 28

 

Программа на языке Паскаль, использующая функцию.

Program Exam7;

Var

A, B, Nod: integer;

Function findnod (A, B: integer): integer;

Var R: integer;

Begin

R:=1;

While R<>0 do

Begin

R:=A mod B;

A:=B; B:=R;

End;

findnod :=A;

End;

Begin A:=0; B:=0;

While (A<=0) or (B<=0) do begin

Writeln('Input A,B <>0 :');

Readln(A,B);

End;

Nod := findnod(A,B);

Writeln('Nod(A,B) = ',Nod);

Readln;

End.

 

Результаты тестирования.

1. Исходные данные:

A=84

B=36

Результат: Nod(A,B)=12

c) Тестовый пример 2:

A=84

B=56

Результат: Nod(A,B)=28


Результаты, выданные программой.

1. Тестовый пример1

Input A,B <>0 :

Nod(A,B) = 12

 

2. Тестовый пример 2

Input A,B <>0 :

Nod(A,B) = 28

 

Замечание.

 

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

В общем случае функция может возвращать значения следующих типов: любого порядкового типа, любого вещественного типа, стандартного типа string и типа-указателя.


9.5. Массивы – параметры процедур и функций

Массив является структурным типом данных, поэтому для того, чтобы передать массив в качестве параметра в подпрограмму, необходимо в разделе типов основной программы объявить требуемый тип «массив». Например,

TYPE Vect =array[1..20] of real; { тип одномерного массива}

TMatrix=array[1..10,1..10] of real; { тип двумерного массива} .

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

 

Рассмотрим пример, в котором функции передается одномерный массив в качестве параметра. Пусть требуется написать программу, которая находит произведение максимальных элементов двух одномерных массивов. Для определения максимального элемента массива использовать функцию.

Постановка задачи.

Входные данные:

A , B – одномерные массивы размера n1 и n1, соответственно.

Выходные данные:

Proizv – произведение максимальных элементов массивов A и B.

Метод решения: для определения максимального элемента массива использовать функцию.

Программа будет включать внутреннюю функцию MaxEl. Алгоритм основной программы Main представлен на рис. 9.6, алгоритм функции MaxEl представлен на рис. 9.7.


 

 

       
   
 
 


           
 
   
 
 
   
Рис. 9.6

 



       
 
 
   
Рис. 9.7

Текст программы на языке Паскаль.


Program Main;

Type Vect = array[1..20] of real;

Var A,B: Vect;

n1, n2, I: integer;

Proizv, MaxA, MaxB: real;

Function MaxEl(M: Vect; nm : integer): real;

Var I: integer;

Max: real;

Begin

Max:=M[1] ;

For I:=1 to n1 do

If (M[I]>Max) then

Max:=M[I];

MaxEl:=Max;

End;

Begin

Writeln('Input n1: ');

Readln(n1);

Writeln('Input ',n1, ' real numbers: ');

For I:=1 to n1 do readln(A[I]);

Writeln('Input n2: ');

Readln(n2);

Writeln('Input ',n2, ' real numbers: ');

For I:=1 to n2 do readln(B[I]);

MaxA:=MaxEl(A,n1);

MaxB:=MaxEl(B,n2);

Proizv:= MaxA*MaxB;

Writeln('MaxA = ', MaxA);

Writeln('MaxB = ', MaxB);

Writeln('MaxA*MaxB = ', Proizv);

Write('Press any key!!!');

Readln;

End.

 

 


Результаты тестирования.

Input n1:

Input 5 real numbers:

1.6

-5.8

1.45

Input n2:

Input 3 real numbers:

1.5

-8

MaxA = 7.00000000000000E+0000

MaxB = 2.00000000000000E+0000

MaxA*MaxB = 1.40000000000000E+0001

Press any key!!!

 

Аналогично можно передавать двумерные массивы в качестве параметра процедурам и функциям. Рассмотрим пример программы обработки матриц с использованием подпрограмм.

Задание. В двумерном массиве (матрице) определить номер строки, в которой находится максимальное количество положительных элементов. Для определения числа положительных элементов в строке использовать процедуру. Если положительных элементов нет в массиве, вывести сообщение об этом.

Постановка задачи.

Исходные данные:

· число строк в матрице n<=10;

· число столбцов в матрице m<=10;

· двумерный массив (матрица) размером n x m , содержащий положительные и отрицательные значения.

Выходные данные: номер строки, в которой находится максимальное количество положительных элементов.

Метод решения: для определения числа положительных элементов в строке матрицы использовать функцию.

Аномалии: отсутствие положительных элементов в массиве.

Реакция на аномальную ситуацию – выдача сообщения.


Блок-схема основной программы представлена на рис. 9.8.

 

 

 
 


 

 

 
 

 

 

 
 

 


 

 
 

 

 


Рис. 9.8


Блок-схема подпрограммы - процедуры для подсчета количества положительных элементов в каждой строке матрицы и записи счетчиков в массив K из n элементов представлена на рис. 9.9.

K[I]= количество A[I, J], для которых справедливо неравенство
A[I, J]>0.

 



Текст программы на языке Паскаль.

 


Program Main;

Type Tmatrix = array[1..10,1..10] of integer;

Vect = array[1..10] of integer;

Var

A: Tmatrix;

K: Vect;

i, j, n, m, kmax, imax: integer;

Procedure PositiveEl(M:Tmatrix; n, m: integer; VAR K: Vect);

Var i, j: integer;

begin

for i:=1 to n do

begin

K[i]:=0;

for j:=1 to m do

if (Mt[i,j]>0) then

K[i]:= K[i]+1;

end;

end;

begin

write('input n<10 ');

readln(n);

write('input m<10 ');

readln(m);

for i:=1 to n do

for j:=1 to n do

read(A[i,j]);

PositiveEl(A, n, m, K);

kmax:=K[1];

imax:=1;

for i:=1 to n do

if (K[i]>kmax) then

begin

kmax:=K[i];

imax:=i;

end;

if kmax=0 then

writeln('Not A[i][j]>0 !')

else

writeln('imax= ',imax);

write('PRESS ANY KEY!');

readln;

end.

 

Результаты тестирования.

1. Исходные данные:

n=3

m=3

A=((-1,-2,-3), (-1,0,-3), (-5,-2,-8)

Результат- сообщение «not A[i,j]>0».

Результаты, выданные программой.

 

input n<10 3

input m<10 3

-1 -2 -3

-1 0 -3

-5 -2 -8

Not A[i][j]>0 !

PRESS ANY KEY!

 

2. Исходные данные:

n=3

m=3

A=((1,2,3), (1,0,-3), (-5,-2,-8)

Результат- сообщение «imax=1».

Результаты, выданные программой.

input n<10 3

input m<10 3

1 2 3

1 0 -3

-5 -2 -8

imax= 1

PRESS ANY KEY!


– Конец работы –

Эта тема принадлежит разделу:

Информатика и программирование на языке Паскаль

Московский государственный горный университет... Кафедра Системы автоматизированного проектирования... КАРПОВИЧ Е Е...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Использование процедур и функций

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Москва-2005
    УДК 681.142.2(075.8)     Карпович Е.Е. Информатика и программирование на языке Паскаль. Учебное пособие. -М.: МГГУ, 2005 г. 152

Предмет информатики как науки
Информатика – это техническая наука, изучающая способы создания, хранения, обработки и передачи данных средствами вычислительной техники, а также принципы функционирования этих средств и методы упр

Структура аппаратных средств ПЭВМ
  Персональная ЭВМ–это комплекс программных и аппаратных средств, предназначенных для автоматической обработки информации. П

Программное обеспечение ПЭВМ
  Назначением ЭВМ является выполнение программ. Совокупность программ для персонального компьютера называется программным обеспечением (ПО). ПО ПЭВМ включает в себя три больших класса

Этапы разработки программ
  Разработка программ включает в себя следующие этапы: 1. Анализ и уточнение требований, предъявляемых к программе. Иногда этот этап называют постановкой задачи. 2.

Формы представления алгоритмов
  Ключевым этапом разработки программы является этап разработки алгоритма и структур данных. Результат этого этапа – формализованное описание или представление алгоритма. Под формой п

Алгоритм линейной структуры.
  Заданы радиусы оснований R1 и R2, длина образующей L и высота h прямого усеченного конуса. Найти площадь поверхности и объем усеченного конуса.   Постановк

Алгоритм разветвляющейся структуры.
  Вычислить значение функции в зависимости от условия по формуле:   Постановка задачи.

Ввод (X)
3.2.3. Алгоритмы циклической структуры.   Пример 1. Опреде

Ввод(K)
       

Ввод(R)
           

Алфавит и лексемы
  Язык Паскаль, как и любой язык программирования имеет свой алфавит, синтаксис и семантику. Алфавит ¾ это набор допустимых в языке символов. Синтаксис ¾ это совокупност

Структура программы на языке Паскаль
  Паскаль-программа включает в себя следующие разделы: § заголовок программы (Program); § раздел указания используемых модулей (Uses); § раздел объявления м

Массивы
  Данными типа «массив» являются массивы. Массив представляет собой фиксированное количество компонент одного и того же типа. Массив определяется именем, количеством размерностей (коо

Множества
  Тип-множество, используемый в языке Паскаль, соответствует понятию множества в математике, и создается с помощью следующего конструктора типа: Type T = set of T0;

Процедуры и функции
  При создании программы решения сложной задачи выполняется декомпозиция (разделение) задачи на подзадачи, а подзадачи – на еще меньшие подзадачи. Каждая подзадача имеет точно определ

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

Передача данных в подпрограмму с помощью параметров. Формальные и фактические параметры
  Как заголовок процедуры, так и заголовок функции может содержать список формальных параметров, который имеет следующий формат: (<описание параметра 1>; < описание

Рекурсивные процедуры и функции
  Рекурсивным называется объект, который частично определяется через самого себя. Рекурсивные определения используются во многих областях науки и, особенно, в математике. Рас

Основные определения
  По способу распределения памяти данных в программах делятся на статические и динамические. Данные статической структуры – это данные, размещение которых в памяти ЭВМ и взаимосвязи м

Объявление и создание динамических структур данных. Указатели
В языке Паскаль имеются средства создания динамических структур данных, которые позволяют изменять количество элементов данных во время выполнения программы, т.е. создавать динамические переменные,

Программа создания и обработки линейного списка
  Линейный список – это структура данных, представляющая собой последовательность компонент, связанных между собой адресами, как показано на рис. 1.

Результаты работы программы.
0 -- Exit; 1 -- Create; 2 -- Display; 3 -- Add; 4 -- Delete; Input option (0 -- 4)   0 -- Exit; 1 -- Create; 2 -- Display; 3 -- Add; 4 -- Delete; Input o

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги