Цикл с заданным параметром (для) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Цикл с заданным параметром (для)



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

FOR <параметр цикла>:= <выражение1> TO <выражение2> DO <оператор>

[ DOWNTO ]

for - (фо) - для; to - (ту) - до; { шаг=1 };

downto - (даунту) - вниз до; { шаг=-1 }; do - (ду) - выполнить;

параметр цикла - переменная любого скалярного типа, кроме вещественного

(управляющая переменная);

выражение1 - скалярное выражение - начальное значение параметра цикла;

выражение2 - скалярное выражение - конечное значение параметра цикла;

оператор - тело цикла;

Напечатать числа от 1 до 20.

Program Chisla; Uses crt;

var i:integer; { управляющая (параметр) цикла }

Begin

clrscr;

for i:=1 to 20 do write(i,' '); { 1 -начальное значение параметра }

End. { 20 -конечное значение параметра }

{ write(i,' ') -тело цикла }

После каждого выполнения тела цикла параметр i увеличивается на 1.

 

Напечатать числа от 20 до 1.

Program Chisla; Uses crt;

var i:integer;

Begin

clrscr;

for i:=20 downto 1 do write(i,' ')

End.

После каждого выполнения тела цикла параметр i увеличивается на -1.

 

Найти произведение чисел делящихся на 2 от 10 до 20.

Program Mult; Uses crt;

var x:integer; P:real;

Begin

clrscr;

p:=1; { начальное значение произведения }

for x:=10 to 20 do

if x mod 2=0 then p:=p*x;

write('Произведение чисел, делящихся на 2 от 10 до 40 равно P=',p)

End.

З А Д А Н И Я:

1. Вычислить сумму чисел из промежутка [1;1000].

2. Вывести на экран 56 символов &.

3. Получить на экране значения функции Y=SIN X,

где x берется из промежутка [25;45] и измеряется в градусах.

4. Вывести на экран все числа, делящиеся на 13, от 1 до 100.

5. Вывести на экран все числа от 500 до 300.

6. Найти значение дроби: в числителе - сумма чисел от 1 до 100 делящихся на 7,

а в знаменателе - сумма чисел от 100 до 500, делящихся на 17.

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 14

СУММА. ПРОИЗВЕДЕНИЕ. ТАБУЛИРОВАНИЕ.

 

Рассмотрим суммирование числового ряда, если элемент ряда является

алгебраическим выражением с помощью циклов ДЛЯ, ПОКА, ДО:

 

Найти сумму ряда для i от 1 до 15, каждый элемент которого выражается

по формуле , то есть найти сумму: 6+9+14+...

 

Program Summa; Uses crt; Program Summa; Uses crt;

var s,i,n: integer; var s,i,n,h: integer;

Begin Begin

clrscr; clrscr;

s:=0; n:=15; s:=0; i:=1; n:=15; h:=1;

FOR i:=1 TO n DO s:=s+(i*i+5); WHILE i<=n DO

write('Сумма числового ряда S=',s); begin

End. s:=s+(i*i+5);

i:=i+h;

Program Summa; Uses crt; end;

var s,i,n,h: integer; write('Сумма ряда S=',s);

Begin End.

clrscr;

s:=0; i:=1; n:=15; h:=1;

REPEAT

s:=s+(i*i+5);

i:=i+h;

UNTIL i>n;

write('Сумма числового ряда S=',s);

End.

Найти произведение чисел ряда, каждый элемент которого определяется по формуле (i+1)/i и i изменяется от 1 до 20 с шагом 0.2, т.е. найти произведение чисел: P=2*1.8333*1.714*1.625*...

Program Mult; Uses crt;

var i,p,n,h: real;

Begin

clrscr;

p:=1; i:=1; n:=20; h:=0.2;

while i<=n do begin p:=p*(i+1)/I; i:=i+h; end;

write('Произведение ряда чисел P=',p);

End.

З А Д А Н И Я:

1. Найти сумму чисел ряда, каждый элемент которого определяется по

формуле (i+5)/i и i изменяется от 1 до 20 с шагом 0.4.

2. Получить таблицу для построения графика функции

на отрезке [7;15] с шагом 0.4.

 

3. Найти сумму ряда чисел, каждый элемент которого определяется по

формуле (i+5)/(i*i) и i=1,2,3,4,.... Суммировать до элемента равного 6E-3.

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 15

ТАБУЛИРОВАНИЕ (продолжение)

 

Для получения качественного вывода таблицы применяется указание ШИРИНЫ

ПОЛЯ ВЫВОДА, которая пишется после переменной через двоеточие.

Например, а:5 или в:6. Для числа <а> выделяется поле из пяти символов.

Но следует иметь ввиду, что целые и вещественные числа при таком выводе

в таблице будут расположены нестандартно.

 

Для получения более качественного вывода таблицы применяют GOTOXY(C,R).

C - номер символа в строке, изменяется от 1 до 79, { Column }

R - номер строки, изменяется от 1 до 24. { Row }

При выводе таблицы значение C не изменяется, а значение R должно, после каждой выведенной строки, увеличиваться на 1.

 

Рассмотрим программу решения задания #2 практического занятия #14.

Program Tab; Uses crt;

var x,h,n: real; r:byte;

Begin

clrscr;

x:=7; h:=0.4; n:=15; r:=1; { r - номер строки }

Repeat

gotoxy(1,r); write('X=',x:2,' Y=',(x*x+5*x+4)/(x-6));

x:=x+h; r:=r+1; ПРИМЕЧАНИЯ: 1. Выравнивание разрядов

until x>n; производится if-then-else

End. 2. Если строк в таблице больше, чем строк на

экране, то применяется поэкранный вывод с

очисткой экрана (см. WHEREY занятие № 17).

 

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

Вывести таблицу значений функции на интервале 1,2..15.

 

Program Tab; Uses crt;

var x, n: integer;

Begin

clrscr; n:=15;

for x:=1 to n do if x=5 then writeln('X=',x:2,' Y-не определяется')

else writeln('X=',x:2,' Y=',1/(x-5));

End.

 

З А Д А Н И Я:

1. Получить таблицу для построения графика функции y=sin х, используя

указание ширины поля вывода.

2. Получить эту же таблицу с использованием gotoxy(c,r);

3. Вывести таблицу в центральной части экрана.

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 16

 

ТАБЛИЦА П И Ф А Г О Р А

 

Если телом цикла является циклическая конструкция, то такие циклы называют ВЛОЖЕННЫМИ.

 

Program Pifagor; Uses crt;

var i,j: integer;

Begin

clrscr;

gotoxy(20,1);writeln('Таблица Пифагора');

FOR I:=1 TO 9 DO

BEGIN

FOR J:=1 TO 9 DO

BEGIN

gotoxy(i*4,j*2);

write(i*j:4);

END;

WRITELN;

END;

 

for i:=1 to 41 do

Begin

gotoxy(i,3);write('-');

if i<=19 then begin

gotoxy(9,i);

write('!');

end;

end;

gotoxy(5,22);

readkey;

End.

 

З А Д А Н И Я:

 

1. Набрать программу и получить на экране таблицу.

2. Получить максимально возможную квадратную таблицу.

3. Получить максимально возможную прямоугольную таблицу.


 

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 17

П Р О Ц Е Д У Р Ы

Программу, состоящую только из операторов, называют МОНОЛИТНОЙ.

Программу, содержащую процедуры и функции называют МОДУЛЬНОЙ.

ПРОЦЕДУРА - часть программы, имеющая имя и предназначенная для решения определенной задачи. Каждая процедура определяется только однажды, но может использоваться многократно. Процедуры определяются в разделе описаний вслед за разделом переменных.

PROCEDURE Name; prоcedure - служебное слово;

BEGIN Name - идентификатор отражающий смысл данной задачи;

ИНСТРУКЦИЯ Описание процедуры само по себе никакого действия не

END; вызывает. Чтобы исполнить процедуру, необходимо в нужном

месте программы поместить обращение к ней, указав Name;.

 

Например: Напечатать сорок любых символов.

В программе используется функция WhereX – она определяет позицию курсора в строке (принимает значения от 1 до 80, изменяется автоматически при выводе информации на экран). С помощью этой функции можно проверить, где находится курсор. Аналогичная функция WhereY – определяет строку, в которой в данный момент находится курсор (принимает значения от 1 до 25). Условие (wherex<40) означает, что при выводе на экран еще не достигнута 40 позиция в текущей строке.

 

Program Stroka; Uses crt; { Stroka - имя программы }

 

procedure Str_Simw; { Str_Simw - имя процедуры }

Begin

while wherex<40 do write('$'); { - тело процедуры }

Writeln

end;

Begin

clrscr;

Str_Simw; Str_Simw; { - вызов процедуры (два раза)}

Readkey;

End.

 

З А Д А Н И Я:

 

1. Набрать и исполнить пример.

 

2. Взять любую программу суммирования числового ряда и часть программы описать

с помощью процедуры.

 

3. Применить процедуру Str_Simw для подчеркивания.

 

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

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

 

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 18

 

П Р О Ц Е Д У Р Ы (продолжение)

 

Переменные, описанные VAR после слова PROGRAM, называют ГЛОБАЛЬНЫМИ.

Глобальные переменные передаются в любую часть программы, в том числе и в процедуры.

 

Program Stroka; Uses crt;

var i: integer; { i - глобальная переменная }

procedure St_Sim;

Begin

for i:=1 to 40 do write('$');

writeln;

end;

 

Begin

clrscr;

St_Sim; St_Sim;

End.

 

Переменные, описанные в процедуре, называют ЛОКАЛЬНЫМИ,так как они используются только в данной процедуре. Доступа к ним из программы нет.

 

Program Stroka; Uses crt;

 

procedure St_Sim;

var i: integer; {i - локальная переменная}

Begin

for i:=1 to 40 do write('-');

end;

Begin

clrscr;

St_Sim;

Readkey;

End.

Нежелательно, чтобы глобальные и локальные переменные совпадали.

 

З А Д А Н И Я:

1. Набрать и исполнить данные программы.

2. Решить задачу: Найти сумму чисел ряда 1,2,3,...,60 с использованием процедуры нахождения суммы и процедуры подчеркивания результата. В обеих процедурах использовать локальные переменные. Количество символов в строке задать глобальной переменной.

3. С помощью процедур получить вертикальную и горизонтальную линии. Линия проводится многократной печатью символа. Заключить слово в рамку из полученных линий.


ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 19

 

П Р О Ц Е Д У Р Ы (продолжение)

Часто процедура содержит список параметров.

procedure имя (СПИСОК ПАРАМЕТРОВ);

...

Список параметров - перечень имен для обозначения исходных данных и

результатов работы процедуры с указанием их типов. Параметры, перечисляемые в списке, называют ФОРМАЛЬНЫМИ.

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

 

Вывести на экран строку содержащую задаваемое с клавиатуры число символов.

Program Stroka; Uses crt;

var m: integer; {m – глобальная переменная}

procedure Str_Sim(n: integer; c: char); { n, c - параметры-значения }

var i:integer; { i - локальная переменная }

Begin

for i:=1 to n do write(c); { конструкция печати символов }

writeln;

end;

Begin

clrscr;

Str_Sim(64,'*'); { вызов процедуры с указанием числа звездочек }

writeln; writeln;

write('Сколько символов напечатать?:'); readln(m);

Str_Sim(m,'='); { вызов процедуры с указанием числа знаков '='}

End.

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

Program Pr1; Uses crt; Program Pr2; Uses crt;

var x: integer; var x: integer;

procedure Izm(y: integer); procedure Izm(var y: integer);

Begin begin

y:=1 y:=1

end; end;

Begin Y не передает ре- Begin Все изменения формальных

x:=0; зультат из проце- x:=0; параметров относятся и

Izm(x); дуры в основную Izm(x); к фактическим.

write(x) программу. write(x)

End. End.

Результат: x=0. Результат: x=1.

 

З А Д А Н И Я:

1. Набрать и исполнить приведенные примеры.

2. Найти сумму чисел ряда 1,2,3,4,... от числа n до числа m. Суммирование оформить процедурой с параметрами. Значения n и m программа должна запрашивать.


 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 20

Ф У Н К Ц И И

ФУНКЦИЯ - это подпрограмма, результат выполнения которой есть единственное скалярное значение, присваиваемое имени этой функции. Функция - частный случай процедур.

 

ОТЛИЧИЯ от процедур:

1. В описании указывается тип результата функции.

2. Результат выполнения функции - ОДНО значение.

3. Имени функции обязательно присваивается результат.

4. Результат передается в программу как значение имени этой функции.

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

 

Описание функции аналогично описанию процедуры:

 

FUNCTION имя (список формальных параметров): тип;

[var локальные переменные: тип;]

BEGIN

Блок функции

END;

Допускается описание функции без параметров:

FUNCTION имя: тип;

...

Найти сумму чисел ряда 1,2,3,...,используя функцию.

 

Program Summa; uses crt;

var n:integer; { n -глобальная переменная }

 

function Sum(m: integer): integer; { m -параметр-значение функции }

var i,s: integer; { i,s - локальные переменные }

Begin

s:=0;

for i:=1 to m do s:=s+i;

Sum:=s {- присваивание имени функции значения }

end;

 

Begin

clrscr;

write('До какого числа суммировать?:'); readln(n);

write('Сумма чисел ряда S=',Sum(n)) { -вызов функции Sum с парам.}

readkey;

End.

 

З А Д А Н И Я:

 

1. Набрать и исполнить программу.

2. Изменить программу так, чтобы была найдена сумма чисел от m до числа n, вводимых с клавиатуры.

 

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 21

 

Ф У Н К Ц И И (продолжение)

 

Составить программу вычисления степени числа X с целым показателем n, используя функцию без параметров.

 

Program Step; uses crt;

var n:integer;

x,y:real;

function St:real;

var i: integer;

Begin

y:=1;

for i:=1 to n do y:=y*x;

St:=y

end;

 

Begin

clrscr;

write('Введите число:'); readln(x);

write('Введите степень:'); readln(n);

if n<0 then begin n:=-n; x:=1/x end;



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 325; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.84.32 (0.148 с.)