Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла





НазваниеУрокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла
страница2/7
Дата публикации20.08.2014
Размер0.64 Mb.
ТипУрок
100-bal.ru > Астрономия > Урок
1   2   3   4   5   6   7

ТЕМА №6: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ TURBO-PASCAL. ПРОЦЕДУРЫ. ФУНКЦИИ. СОСТАВЛЕНИЕ ПРОГРАММ С ИСПОЛЬЗОВАНИЕ ПРОЦЕДУР И ФУНКЦИЙ. РЕКУРСИЯ.



ПРОГРАММНО - ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. Turbo-Pascal 5.

ЦЕЛИ И ЗАДАЧИ: Дать основные понятия подпрограмм (процедур и функций). Познакомить с видами формальных параметров: параметры-значения, параметры-переменные. Научить различать фактические и формальные параметры. Знакомство с понятием рекурсии. Выработка навыков составления программ с использованием процедур и функций.

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

  • Что такое подпрограмма;

  • Что такое процедура;

  • Для чего используются процедуры;

  • Что такое формальные и фактические параметры;

  • Чем отличается задание параметров-значений от параметров-переменных;

  • В каком месте программы ставится описание процедур;

  • Как вызывается процедура;

  • Структуру процедуры.

  • Что такое функция;

  • Чем отличаются процедуры от функций,

  • Для чего используются функции;

  • Чем отличается заголовочная строка функции от заголовочной строки процедуры;

  • В каком месте программы ставится описание функции;

  • Как вызывается функция;

  • Структуру функции;

  • Что такое рекурсия;

  • Для чего и как используется опережающее описание подпрограммы.

Учащиеся должны уметь:

  • Правильно описывать процедуры и функции;

  • Правильно вызывать процедуры и функции;

  • Различать формальные и фактические параметры;

  • Правильно описывать параметры-значения и параметры

  • Различать формальные и фактические параметры;

  • Использовать простейшие рекурсии при составлении программ




    ПЛАН-СОДЕРЖАНИЕ УРОКА

Подпрограммы.

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

Процедуры.

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

Преимущества использования процедур - уменьшение объем программы, сокращение времени на отладку.

Принцип работы процедуры:

Выполнение программы начинается с выполнения основной части программы. Как только появляется необходимость в выполнении процедуры, она вызывается по имени с передачей входных данных. После выполнения процедура передает в основную часть программы выходных данных (результатов), в то место, откуда была вызвана процедура.

Затем продолжается выполнение основной части программы.

Процедура оформляется подобно основной программе:

Раздел описаний основной программы

Заголовок процедуры

Procedure имя

(список параметров);

Описываются формальные параметры

Раздел описаний

label …;

Var …;




Раздел операторов процедуры

Begin



end;




Описание функций

Раздел операторов основной программы


Procedure имя (формальные параметры);

Раздел описаний

Begin

Раздел операторов

End;
Все переменные, представленные в разделе описаний основной программы называются глобальными. Они действуют как в разделе операторов основной программы, так и в любой подпрограмме.

Параметры (переменные), определяемые при описании процедуры называются формальными.

Параметры (переменные), задаваемые при вызове процедуры называются фактическими.

Формальные параметры (переменные, описываемые в процедуре) делятся на параметры - значения и параметры - переменные

Параметры-значения – передают информацию только в процедуру (входные), описываются как переменные с указанием типа (без зарезервированного слова Var).

Параметры-переменные – передают информацию, как в процедуру, так и обратно (выходные), их описание начинается со слова Var, затем следует список переменных с указанием типа.

Пример:

Procedure sterline (len: integer); - параметры-значения.

Procedure stl (l: integer, Var n integer); - параметры-значения и параметры – переменные.

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

Вызов процедуры подобно специальным операторам происходит по имени с указанием фактических параметров, например:

stl (а, n);

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

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

Написать программу, которая выводит на экран строку, состоящую из заданного числа звездочек. Использовать процедуру.

Uses crt;

Var n: integer;

Procedure sterline (var len: integer);

Var i:integer;

Begin

For i:=1 to len do

Write (‘*’);

End;

Begin

Write(‘Введите количество звездочек’); Readln(n);

Sterline (n);

Readln; End.

Функции.

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

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

Function имя (формальные параметры):тип;

Раздел описаний

Begin

Операторы

Имя:= …

End;

Поскольку результат обозначается именем функции, то после формальных параметров указывается тип функции, который должен совпадать с типом результата вычислений. В конце описания функции имени функции обязательно присваивается какое-то значение. Вызывается функция по ее имени с указанием фактических параметров. Функция может использоваться в операторах присваивания, условных операторах и т.п. Например, Res:=Compare(x1,x2);

Пример использования функций:

Написать программу, которая с помощью функции сравнивает два целых числа и выводит результат сравнения в виде одного из знаков: >,<,=

Uses crt;

Var x1,x2:real; res:char;

Function Compare (a,b: real):char;

Begin

If a>b then Compare:=’>’ else if a
End;

Begin

Writeln (‘Введите числа’);

Readln(x1,x2);

Res:=Compare(x1,x2);

Writeln(x1:6:2, res,x2:6:2);

Readln; end.

Рекурсия.

Рекурсия – это вывоз подпрограммой

(процедурой или функцией) самой себя.

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

PROGRAM DEMO1;

USES CRT;

VAR M:BYTE;

FUNCTION FAKT(N:BYTE):LONGINT;

BEGIN

IF N=1 THEN FAKT:=1

ELSE FAKT:=FAKT(N-1)*N;

END;

BEGIN

CLRSCR;

WRITE('N-');READLN(M);

WRITELN('N!=',FAKT(M));

READKEY;

END.

В нашем примере происходит так: в операторе печати вызывается функция FAKT с параметрам N, которая в свою очередь вызывает функцию FAKT с параметрам N-1, и так далее, пока не вызывается FAKT(1). Тогда это процесс останавливается, затем происходить извлечение результата в обратном порядке.

Это хорошо видно на следующем примере программы:

Текст программы:

Результат работы программы:

PROGRAM DEMO2;

USES CRT;

VAR CH: WORD;

PROCEDURE WRITEA;

BEGIN

CH:=CH+1;

WRITELN('­НАЧАЛО',CH);

IF CH<4 THEN WRITEA;

WRITELN(' КОНЕЦ',CH);

CH:=CH-1;

END;

BEGIN

CLRSCR;

CH:=0;

WRITEA;

READKEY;

END.


НАЧАЛО 1

НАЧАЛО 2

НАЧАЛО 3

НАЧАЛО 4

КОНЕЦ 4

КОНЕЦ 3

КОНЕЦ 2

КОНЕЦ 1


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

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

Нужно обязательно отслеживать в программе наполнение стека, то есть не допускать зацикливания рекурсии.

Рекурсивный вызов может быть косвенным. В этом случае программа обращается к себе опосредованно, путем вызова другой программы, в которой содержится обращение к первой. При использовании такого подхода нужно использовать опережающее описание. Опережающее описание заключается в том, что объявляется лишь заголовок процедуры, а ее тело заменяется директивой FORWARD. После этого можно в другой процедуре использовать обращение к ней – ведь компилятор уже может правильным образом организовать ее вызов. Обратите внимание: тело второй процедуры описывается после первой и начинается заголовком, в котором уже не указываются описанные ранее формальные параметры.

Пример:

PROCEDURE B( J:BYTE);FORWARD; {тело процедуры заменено директивой FORWARD }

PROCUDURE A( I:BYTE);

BEGIN



B(I);



END;

PROCEDURE B;

BEGIN



A(J);



END;
Примеры программ с процедурами и функциями:

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

  • Найти разность двух факториалов F=m! – k!, используя функцию.

Uses crt;

Var F,m,k:integer;

Function Fact(n:integer):integer;

Var P,i:integer;

Begin

P;=1;

For i:=2 to n do

P;=P*i;

Fact:=P;

End;

Begin

Read (M,K);

F:=Fact(m) – Fact(K);

Writeln (‘F=’,F:5);

repeat until keypressed

End.

  • Написать программу «Бегущие огни» с использованием процедуры рисования окружности.

uses crt,graph;

var gd,gm,x:integer;

begin

gd:=detect;

initgraph(gd,gm,'');

x:=20;

repeat

repeat

setcolor(4);

circle(x,200,15);

setfillstyle(1,3);

floodfill(x,200,4);

delay(8000);

setcolor(0);

circle(x,200,15);

setfillstyle(1,3);

floodfill(x,200,0);

x:=x+40;

until x>600;

repeat

setcolor(4);

circle(x,200,15);

delay(8000);

setcolor(0);

circle(x,200,15);

x:=x-40;

until x<20;

repeat until keypressed; end.


Примеры программ с использованием рекурсий:

Вычислить Xn:

PROGRAM DEMO3;

USES CRT;

VAR X1,X2: WORD;I,M:BYTE;S:LONGINT;

FUNCTION XN(X,N:BYTE):LONGINT;

BEGIN

IF N=0 THEN XN:=1

ELSE XN:=XN(X,N-1)*X;

END;

BEGIN

CLRSCR;

WRITE('X,N-');READLN(X1,M);

WRITELN('XN-',XN(X1,M));

READKEY;

END.

Подсчитать сумму N чисел Фибоначчи (1,1,2,3,5,8,13,..):

PROGRAM DEMO4;

USES CRT;

VAR X1,X2: WORD;I,M:BYTE;S:LONGINT;

FUNCTION FIB(N:BYTE):LONGINT;

BEGIN

IF N=1 THEN FIB:=1;

IF N=2 THEN FIB:=1;

IF N>=3 THEN FIB:=FIB(N-1)+FIB(N-2);

END;

BEGIN CLRSCR;

WRITE('N-');READLN(M); S:=0;

FOR I:=1 TO M DO

S:=S+FIB(I);

WRITELN('S-',S);

READKEY;

END.

Написать рекурсивную функцию вычисления суммы 1+2+3+4+5+…+N:

PROGRAM DEMO5;

USES CRT;

VAR M:WORD;

FUNNCTION SUM(N:WORD):LONGINT;

BEGIN

IF N=1 THEN SUM:=1 ELSE SUM:=SUM(N-1)+N;

END;

BEGIN

WRITE(‘N-‘);READLN(M);

WRITELN(‘СУММА -’,SUM(M));

READKEY;END.

Используя рекурсивную функцию получить подобную фигуру:

1 вариант (простая рекурсивная форма)

PROGRAM DEMO6;

USES CRT,GRAPH;

VAR X,Y: WORD;I,K,M,N:BYTE;

GD,GM:INTEGER;

PROCEDURE LINT(X,Y,N,M:WORD);

BEGIN

LINETO(X+N,Y);

LINETO(X+N,Y+N);

LINETO(X+M,Y+N);

LINETO(X+M,Y+M);

X:=X+M;Y:=Y+M;

N:=N-2*M;

K:=K+1;

IF K<5 THEN LINT(X,Y,N,M);

END;

BEGIN

GD:=DETECT;

INITGRAPH(GD,GM,'');

LINT(0,0,100,10);

READKEY;

END.

2 вариант (рекурсивная форма с опережающим описанием)

PROGRAM DEMO7;

USES CRT,GRAPH;

VAR X,Y: WORD;I,K,M,N:BYTE;

GD,GM:INTEGER;

PROCEDURE LNT(X,Y,N,M:WORD); forward;

PROCEDURE LINT(X,Y,N,M:WORD);

BEGIN

for k:=1 to 5 do begin

lnt(x,y,n,m);

X:=X+M;Y:=Y+M;

N:=N-2*M; end;

END;

procedure lnt;

begin

LINETO(X+N,Y);

LINETO(X+N,Y+N);

LINETO(X+M,Y+N);

LINETO(X+M,Y+M);

end;

BEGIN

GD:=DETECT;

INITGRAPH(GD,GM,'');

LINT(0,0,100,10);

READKEY;


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 






1   2   3   4   5   6   7

Похожие:

Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconАнкета диагностика эффективности применения проектной деятельности,...
«Работа с графикой», «Программирование на языке «Turbo Pascal», «Графика языка Turbo Pascal», «Логические функции ms excel»
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconУсвоить понятие программы, структуры программы на языке Turbo Pascal,...
На прошлых уроках мы познакомились с понятием алгоритма и основами алгоритмизации. Давайте вспомним, что такое алгоритм, какими свойствами...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла icon«Разработка алгоритмов и программирование на языке Pascal»
Лабораторный практикум содержит методические указания к выполнению лабораторных работ по алгоритмизации и программированию на языке...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconРеферат по теме Понятие алгоритма, его свойства. Описание алгоритмов...
Понятие алгоритма, его свойства. Описание алгоритмов с помощью блок схем на языке Turbo Pascal
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconПояснительная записка Элективный курс «Основы программирования на языке Turbo Pascal»
Изучение курса позволяет учащимся более полно выявить свои способности в изучаемой области знаний, создать предпосылки по применению...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconАннотация в настоящем докладе обсуждаются возможные способы преобразования...
Динамическая эквивалентность как способ преодоления различий в национальных картинах мира
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconРабочая программа учебной дисциплины «Русский язык»
Спо 230401 Информационные системы (по отраслям) предусматривает изучение следующих учебных циклов: общеобразовательного; общего гуманитарного...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconКраткие рекомендации для педагога Полное название разработки Сборник...
Фундаментальные основы здоровья и профилактика заболеваний учащихся и преподавателей
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconПрограмма по формированию навыков безопасного поведения на дорогах...
Если учебная дисциплина сформирована за счет вариативной части циклов опоп, ее индекс и наименование не должны совпадать с индексом...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconУрока по информатике в 9 классе. Тема урока: Команды цикла, языка Паскаль
Задачи урока: ввести понятие циклических повторений в программе, установить связь между тремя видами циклов, создание алгоритмов...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconТема: разветвляющийся вычислительный процесс. Оператор выбора
Цель: Познакомить со структурой оператора выбора case и научить использовать его при составлении программ на языке Pascal
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconТема урока: «Составление линейных программ для решения задач на применение...
Повторить и обобщить знания о свойствах, типах, способах построения алгоритмов, этапах решения задач, о работе операторов input,...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconУгринович Н. Д. Информатика и икт. Профильный уровень: учебник для 10 класса
Егэ» увеличено количество часов за счет уменьшения количества часов на темы «Моделирование и формализация» и «Информационное общество»....
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла icon«Динамическое Web-Программирование»
Целью курса "Динамическое Web-Программирование" является изучение принципов разработки приложений, работающих в среде Интернет и...
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconРабочие учебные программы циклов тематического усовершенствования...
Рабочая программа составлена на основе образовательного стандарта послевузовской профессиональной подготовки специалистов
Урокам тема №5: программирование на языке turbo-pascal. Организация циклов. Операторы циклов. Составление программ с использование операторов цикла iconПрограмма по формированию навыков безопасного поведения на дорогах...
Планирование составлено на основе авторской программы курса 8-го класса Информатика и икт «Алгоритмизация и программирование на языке...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск