Реферат: Практическое занятие №1


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

==============================
ЗНАКОМСТВО С TURBO PASCAL7.0
Авторы методички: учителя Чернов Н.А., Новосельцев С.В. – учебный комбинат №3 Кострома. 1990-2008 г.г.

Turbo Pascal - реализация языка Pascal фирмой Borland International

для IBM PC . Используются версии: 5.0, 5.5, 6.0, 7.0, 8.0 .

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

ВХОД В СРЕДУ Turbo Pascal Войти в меню пользователя, выбрать версию Turbo Pascal и нажать Enter. Либо найти файл turbo.exe в папке Pascal\turbo7\bin и щелкнуть Enter.


^ ГЛАВНОЕ МЕН^ ЗАПИСЬ МАТЕМАТИЧЕСКИХ ВЫРАЖЕНИЙ

Все выражения записываются в одну строку с использованием круглых скобок

и знаков арифметических операций согласно ПРИОРИТЕТА:


1. Действия в скобках. ( ) 5. Сложение. Вычитание.


2. Вычисление функций. 6. Операции отношений =, >, <, <>, <=, >=


3. DIV -целочисленное деление. 7. Булевы операции: not, and, or

MOD -целый остаток от деления.


4. Умножение (*). Деление (/).


В МАТЕМАТИКЕ : НА ПАСКАЛЕ :

═══════════════ ════════════════


А+В

───── (A+B)/C

C


C

───── C/(A-B)

(A-B)


A

───── A/B/C = A/(B*C)

B∙C


A∙B

───── A*B/C = A/C*B = B/C*A

C

________

2+A-B 

 - A (2+sqrt(abs(A-B)))/(B*C)-A

B∙C


Sin 30° sin(30*PI/180)


arctg(1) arctan(1) = 0.785 (радиан )

arctan(1)*180/pi = 45 (градусов)


A

─── A/(-B)

- B


-6

5∙10 5e-6


2 2

sin A sqr(sin(A*A))


tg A sin(A)/cos(A)


ctg 60° cos(60*pi/180)/sin(60*pi/180)

или A:=60*pi/180 затем cos(A)/sin(A)


^ СТРУКТУРА ПРОГРАММЫ.


Программа на Паскале ОБЯЗАТЕЛЬНО имеет имя и состоит из символов. В программе используются специальные зарезервированные слова, значение которых не меняется и они должны записываться без ошибок. Структура любой программы всегда одинакова и представляет собой следующую схему:


^ Program Name ; { -название без пробелов }

{ разделы описаний: } Разделы записываются

label -раздел описания меток; по мере надобности.

const -раздел описания констант;

type -раздел описания типов;

var -раздел описания переменных (VARiables);

function -раздел описания функций;

procedure -раздел описания процедур;


{ основная программа }
Begin
{ тело основной программы }

End.

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

Текст программы может записываться как большими так и маленькими буквами.

Русские буквы используются только для комментариев !


^ ОПЕРАТОР ВЫВОДА ИНФОРМАЦИИ НА ЭКРАН:


write(a); - стандартная процедура вывода значения переменной «а» или результата

арифметического выражения на экран


writeln(а); - вывод с последующим переводом строки


writeln; - стандартная процедура перевода курсора на новую строку


Например: на экране:


А:=2;

Write(a); 2

Writeln(a); 2

Write(‘a=’,a); a=2


Write(‘a=’,a,’ метров’); a=2 метров


Write(‘Y=’, 4+6); Y=10


Write(‘S=’,a,’*’,3,’=’,a*3); S=2*3=6


Writeln(‘погода’); погода

Writeln(‘хорошая’); хорошая


Write(‘погода ’); погода хорошая

Writeln(‘хорошая’);


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


ЭВМ В РЕЖИМЕ КАЛЬКУЛЯТОРА.

^ З А Д А Н И Я
=============

1. Набрать программу: {пояснения к программе:}


Program Primer; uses crt; { -название программы 'Primer'. Объявлен модуль crt}

Begin { -начало программы}

Clrscr; { -очистка экрана}

write('Y=', 6+3 ); readkey; { -вывод на экран результата 'Y=9' . Просмотр.}

^ End. { -конец программы}


2. Запустить программу. { -нажать Ctrl+F9}

3. Вычислить: 17+34 ;

24,7+56 ;

24:3 ;

5-6 ;

│-9│ ;

12/3/4 ;

 36 .

__

75 - \/ 38 + 55

4. Вычислить: -  ; Ответ: -3.941621

2 ___

6 - \/ 21


2

5+8∙(5 *3-7)+35

; Ответ: (  4.1 )

(20-\/ 5)∙8


____

2,8-\/ 55,6 -4,2

; Ответ: -0.2496655

2 ____

│ 3,2 - \/32,4 │∙7,8


_______ ________

sin(30°) + │32-6∙8│

5. Вычислить:  ;

2 2

sin (60° )


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

=========================
^ РЕШЕНИЕ МАТЕМАТИЧЕСКИХ ВЫРАЖЕНИЙ ЛИНЕЙНАЯ ПРОГРАММА

ЛИНЕЙНОЙ называют программу реализующую конструкцию следования, когда инструкции расположены одна под другой и последовательно выполняются.


:= - символ присваивания переменным значений;

x:=3.4 - инструкция присваивания (переменной х присваивается значение 3.4).


read(а); - стандартная процедура ввода значения переменной 'а' с клавиатуры


З А Д А Н И Я


1. Набрать готовую программу вычисления площади прямоугольника S=a*b .

^ Во всех программах не забывать в начале Uses crt; и в конце readkey: или readln;


Program Area;Uses crt; { Л И Н Е Й Н А Я ПРОГРАММА (см. конспект)}

var a,b,s:real; { описание переменных. Тип вещественный }

^ Begin { начало программы S }

ClrScr; { очистка экрана. От англ. CleaR SCReen }

write('a='); readln(a); {ввод длины и переход на следующую строку}

write('b='); readln(b); {ввод ширины и переход на следущую строку}

s:=a*b; { вычисление по формуле }

write('S=',s); { вывод результата на экран }

readkey; {удержание изображения до нажатия клавиши}

End. { конец программы S }


Запустить программу. Получить результат.


2. Добавить в программу комментарий к вводу переменных и выводу ответа

(Например: Введите сторону а= Площадь прямоугольника S= ).

2

3. Составить программу вычисления площади круга : S= Pi∙R

1

4. Составить программу вычисления площади треугольника : S= ───∙А∙Н

2

1) выделить целую часть результата;

2) выделить дробную часть результата;

3) получить целый остаток от деления;

4) округлить результат

5) округлить до целого, не превосходящего результат.


5. Составить программу вычисления выражения: Y=Sin(a+b/2)

при a=15, b=30 (градусов).


^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 4
========================
РЕШЕНИЕ ФИЗИЧЕСКИХ ЗАДАЧ

ОСОБЕННОСТИ :


- греческие буквы заменять на латинские;

- описать назначение переменных;

- задача предварительно решается на бумаге, и конечная формула вводится в программу. На основании анализа результата делается вывод о правильности решения задачи;

- результат должен иметь указание единиц измерения;

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

- постоянные физические величины описываются в разделе описания констант .

- эвм не различает строчные и заглавные буквы : G=g, А=а .


Составить программу вычисления силы Всемирного тяготения: M1∙M2

F= G∙--------;

^ Program Ff; Uses crt; 2

const g=6.672E-11; { гравитационная постоянная } R

var m1,m2, { массы взаимодействующих тел }

r, { расстояние между точечными телами }

f: real; { сила Всемирного тяготения }
Begin
^ ClrScr;

write('Введите массу m1='); readln(m1);

write('Введите массу m2='); readln(m2);

write('Введите расстояние r='); readln(r);

f:=g*m1*m2/(r*r);

writeln; { получение пустой строки }

write('Сила притяжения F=',f,' Н');

readkey;

End.


З А Д А Н И Я


1. Набрать программу вычисления силы Всемирного тяготения.

Запустить программу. 2

М∙V

2. Составить программу вычисления кинетической энергии Е= ─────

2


3. Подчеркнуть результат звездочками.


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


ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА

Неполная форма : IF условие THEN серия ;


УСЛОВИЕ - это логическое выражение, принимающее значение истина или ложь.

Выполняется инструкция так: если условие истинно, то выполняется серия ,

иначе выполняется следующая за IF..THEN инструкция.

СЕРИЯ - один оператор языка .


Полная форма : ^ IF условие THEN серия1

ELSE серия2;


Если условие истинно , то выполняется серия1 , иначе выполняется серия2.

В Н И М А Н И Е! Перед словом ELSE точка с запятой не ставится !!


Найти большее из двух чисел а и b.

^ Program Bid; Uses crt;

var a,b,max: integer;

Begin

ClrScr;

write(' Введите целое число а='); readln(a);

write(' Введите целое число b='); readln(b);

if a>=b then max:=a { если условие =true,то max:=а }

else max:=b; { если условие =false,то max:=b }

writeln('Max=',max);

readkey;

End.


При нажатии цифры 1 печатается слово1, а при нажатии любой клавиши слово2 .

^ Program Text; Uses crt;

var x: integer;

Begin

ClrScr;

write('Введите цифру 1 или любую :'); read(x); ClrScr;

if x=1 then write(' В а с я')

else write(' П е т я');

readkey;

End.


З А Д А Н И Я


1. Набрать программу Bid и проверить ее работу для '+' и '-' чисел.

2. В программе Bid применить округление для вещественных чисел.

3. Набрать программу Text , получить результат.

4. Изменить программу Text так, чтобы второе слово выводилось только при нажатии цифры 2 .

5. Составить программу вычисления для любого х функции Y =1/x ,

при х=0 выдать сообщение ' функция не существует '.

6. Найти большее из трех чисел.


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

ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА (продолжение)


При сложных условиях применяются логические связки : and, not, or.


| 1 ////\0

Вычислить: | ------- при x<0 -----О-------------------> Х

~~~~~~~~~ | x - 1

Y=

| 1 0///////////\5////////

| ------- при x>=0 -----*---------О---------> Х

| x - 5


^ Program Primer; Uses crt;

var x: integer;

Begin

ClrScr;

write('Введите значение x=') ; readln(x);

if x<0 then write(' Y1=',1/(x-1))

else write(' Y1 - не существует по условию');

if (x>=0) and (x<>5) then write(' Y2=',1/(x-5))

else write(' Y2 - не существует по условию');

readkey;

End.


З А Д А Н И Я

=============


1. Набрать программу и проверить ее работу для Х: -2, 1, 5, 6 .


////////\0 5 8

2. Эту же задачу решить для условия:---------О------*------*-------> Х

1) Х<0 или Х=5 или Х=8


0/////\5/\6///////////

2) Х>=0 и Х<>5 и Х<>6 ---------*-----О--О-----------> Х


Проверить работу программы для Х: -2, 0, 2, 5, 6, 8, 9 .


3. Эту же задачу решить для условия: 1) -2<=Х<=5 Х<>1 ,

2) -1<=Х<=8 Х<>5


Проверить все контрольные точки: -3, -2, -1, 0, 1, 5, 8, 9 .


0>0>0>^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 7
========================

ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА (продолжение)


Если требуется после THEN или ELSE применить более одного оператора ,то применяются ^ ОПЕРАТОРНЫЕ СКОБКИ BEGIN..END

2

Решение КВАДРАТНОГО УРАВНЕНИЯ а∙Х + b∙Х + c = 0 .

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Program Kwur; Uses crt;

var a,b,c,x1,x2,d: real;

^ Begin

ClrScr;

write('Введите коэффициенты a,b,c :'); readln(a,b,c);

d:=b*b-4*a*c;

if d<0 then writeln('Нет корней.')

else begin

if d=0 then begin

x1:=-b/(2*a);

x2:=x1

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a)

end;

write(' x1=',x1,' x2=',x2)

end;

readkey;

End.


З А Д А Н И Я

=============

1. Решить следующие уравнения:


а) 3х² + 6х - 8 = 0


б) х² - 2х - 1 = 0


в) 5х² - 4х + 3 = 0


г) 4х² + 4х - 1 = 0


д) 5х² - 5х + 2 = 0


2. Вставить в программу комментарии:

а) полное название программы;

б) автор программы;

в) дата составления программы .

3. Сделать так, чтобы результат выводился на чистом экране

с указанием значений коэффициентов .


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


ОПЕРАТОР ВАРИАНТА
Оператор варианта является обобщением условного оператора: он дает

возможность выполнить один из нескольких операторов в зависимости

от значения некоторого выражения, называемого СЕЛЕКТОРОМ .


CASE <селектор> OF { case (кейс) - выбор }

<список меток1> : <оператор1>; { of (oф) - из }

<список меток2> : <оператор2>;

. . . . . . . : . . . . . .;

<список метокN> : <операторN>;

ELSE <оператор>

END;

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

integer, byte (-целые из [0;255]), char -символьный тип.

оператор - любой оператор языка, в том числе и составной;

список меток - список разделенных запятыми значений выражения 'селектор' или одно его значение; тип метки и селектора одинаков;

Оператор варианта выбирает для исполнения тот ОПЕРАТОР, одна из меток которого равна текущему значению выражения СЕЛЕКТОР. Если ни одна из меток не равна текущему значению селектора, то никакие операторы не выполняются, либо выполняются операторы, следующие за зарезервированным словом ELSE ( если такое имеется ).

^ Program Primer_Case1; Uses crt;

var n:integer;

Begin

clrscr; write('Нажмите цифру 1..8'); readln(n);

case n of

1,7: write('В а н я');

2: write('В а с я');

3: write('В а л я');

4: write('В а р я');

5: write('В а д я');

6: write('в а з а')

else write(' Нет такой метки')

end; readkey;

End.

Program Primer_Case2; Uses crt;

var n:char; { char - символьный тип ,занимает 1 байт памяти }

Begin

clrscr; write('Нажмите букву а..е'); readln(n);

case n of

'a': write('Вы ввели символ а');

'b': write('Вы ввели символ b');

'c': write('Вы ввели символ c');

'd': write('Вы ввели символ d')

else write('Вы ввели символ, которого нет среди меток')

end; readkey;

End.

З А Д А Н И Я

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

2. Во второй программе после ввести МЕНЮ для выбора меток.


^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 9
========================

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


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


Program PLFigur; Uses crt;

var s,a,b,h,r:real;

n:integer;

Begin

ClrScr;

writeln(' П Л О Щ А Д И');

writeln(' =============');

writeln(' 1. Прямоугольника.');

writeln(' 2. Трапеции.');

writeln(' 3. Круга.');

writeln(' 4. Конец работы.');

writeln;

write('Введите номер строки :'); readln(n);

case n of

1: begin

clrscr;

write('Введите стороны прямоугольника a,b :');

readln(a,b);

s:=a*b;

write('Площадь прямоугольника S=',s)

end;

2: begin

clrscr;

write('Введите основания и высоту трапеции a,b,h :');

readln(a,b,h);

s:=(a+b)*h/2;

write('Площадь трапеции S=',s)

end;

3: begin

clrscr;

write('Введите радиус круга r=');

readln(r);

s:=pi*r*r;

write('Площадь круга S=',s)

end

else write(' ***** Работа окончена *****');

end;

readkey;

End.


З А Д А Н И Я

=============


1. Набрать программу и выполнить ее для четырех строк меню.


2. Самостоятельно дописать в программу вычисление площади треугольника.


0>^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 10
=========================

ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ

1. Составить программу вычисления силы взаимодействия двух точечных

│q1│∙│q2│

электрических зарядов: F= k ,где :

2

er

F - сила взаимодействия зарядов по закону Кулона ( Ньютон ),

q1,q2 -неподвижные точечные электрические заряды ( Кулон ),

k=9∙е9 -коэффициент ( Н*м*м/(Кл*Кл) ),

е - относительная диэлектрическая проницаемость среды (табличное знач.),

r - расстояние между точечными электрическими зарядами ( метр ).


2. Вычислить значение функции:

| 1

| ------ , при x<>3 и -2<=x<8

Y= | x-3

|

| 2

| ------ , при x<>-5 и x=-10 и x=0 и x=10

x+5

3. Повторить к контрольной работе:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

а) Принципы фон Неймана;


б) экспоненциальная форма представления числа;


в) графическое представление разветвляющихся алгоритмов;


г) перевод алгебраических выражений для ввода в эвм;


д) решение математических и физических задач;


е) разветвляющиеся вычислительные процессы.


^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ №11
=========================
ЦИКЛИЧЕСКИЕ ПРОЦЕССЫ
Циклические конструкции используются в тех случаях, когда необходимо повторять какие-либо действия. Различают два вида циклов: с заданным количеством шагов и циклы , в которых количество шагов заранее неизвестно , а цикл завершается при выполнении условия.

1. ЦИКЛ С ПРЕДУСЛОВИЕМ или цикл "ПОКА" .


Сначала проверяется условие и тело цикла выполняется ПОКА УСЛОВИЕ ИСТИННО,

если условие становится ЛОЖНЫМ, то происходит выход из цикла.

Реализуется этот цикл инструкцией:

WHILE <условие> DO <тело цикла>

while - (вайл) - пока, do - (ду) - делать .

В тело цикла входит только один оператор! Если нужно объединить в тело цикла несколько операторов, то применяются операторные скобки begin-end.

Условие может быть простым или сложным, если применить слова: NOT, AND, OR.


^ ПРИМЕРЫ ПРОСТЕЙШИХ ЦИКЛИЧЕСКИХ ПРОЦЕССОВ.


Пример 1. Вывести 20 одинаковых символов на экран.


Program Simwol; Uses crt;

var i,h,n: integer;

Begin {Действительно ли на экране 20 символов?}

clrscr; {пронумеруем символы:}

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

while i<=n do while i<=n do

begin begin

write('* '); writeln(i,'- *');

i:=i+h; i:=i+h;

end; end;

readkey;

End.


Пример 2. Вывести на экран Пример 3. Вывести на экран

числа от 1 до 20. числа от 20 до 1.


Program Ch; Uses crt; Program Ch; Uses crt;

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

Begin Begin

clrscr; clrscr;

i:=1; h:=1; n:=20; i:=20; h:=-1; n:=1;

while i<=n do while i>=n do

begin begin

write(i,' '); write(i,' ');

i:=i+h; i:=i+h;

end; end;

readkey; readkey;

End. End.


^ ПРИЛОЖЕНИЕ К ПРАКТИЧЕСКОМУ ЗАНЯТИЮ № 11
==============================================


Пример 4. Вывести на экран числа оканчивающиеся на 7 на интервале от -100 до 100.


^ Program Ch; Uses crt;

var i,h,n: integer;

Begin

clrscr;

i:=-100; h:=1; n:=100;

while i<=n do

begin

if i mod 10=7 then write(i,' ');

i:=i+h;

end;

readkey;

End.


нечетные: if odd(i) then write(i,' ');

четные: if not(odd(i)) then write(i,' ');

делящиеся на 7: if i mod 7=0 then write(i,' ')

нечетные и делящиеся на 7: if (odd(i)) and (i mod 7=0) then write(i,' ');


Пример5. Найти сумму ряда: 1, 2, ..20

Тип переменной S может быть integer, если сумма чисел не более 32767.


^ Program Summa; Uses crt;

var i,n,h,s: integer;

Begin

clrscr;

i:=1; n:=20; h:=1; s:=0; { s:=0 -обнуление суммы }

while i<=n do

begin

s:=s+i; { процесс суммирования }

i:=i+h;

end;

write('Сумма чисел натурального ряда от 1 до 20 равна ',s);

readkey;

End.

Пример6. Найти сумму ряда: 0.1, 0.3, 0.5, .. , 32.5

Program Summa; Uses crt; { s - сумма }

var x,h,n,s: real; { h - шаг }

Begin { x – начальное значение параметра цикла}

ClrScr; { n - конечное значение параметра цикла.}

s:=0; x:=0.1; h:=0.2; n:=32.5;

while (x<=n) do

begin

s:=s+x; { -суммирование очередного элемента }

x:=x+h; { -изменение параметра цикла на шаг }

end;

writeln('Сумма ряда: 0.1, 0.3,.., 32.5 S=',s); readkey;

End.


^ ПРИЛОЖЕНИЕ К ПРАКТИЧЕСКОМУ ЗАНЯТИЮ № 11 продолжение
===============================================================


Пример7. Вывести на экран таблицу функции Y=sin(х),

где х изменяется от 10 до 90 с шагом 5.


^ Program Tabl; Uses crt;

var x, h, n, y: real;

Begin

ClrScr; writeln(' Таблица функции y=sin(х)');

x:=10; h:=5; n:=90;

while x<=n do

begin

y:=sin(x*pi/180);

writeln('X=',x,' Y=',y);

x:=x+h;

end;

readkey;

End.


З А Д А Н И Я


1. Найти сумму ряда : 5.6, 5.9, .. ,9.7

2

2. Получить таблицу функции y=cos(5∙х) , где х изменяется от 1 до 10 с шагом 0.5


3. Найти произведение чисел от 6.7 до 7.8 с шагом 0.4


4. Сравнить, что больше сумма ряда 8.5, 8.6,...,40.9 или произведение чисел от 1 до 3 с шагом 0.25


^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 12
=============================

ЦИКЛИЧЕСКИЕ ПРОЦЕССЫ (продолжение)

2. ЦИКЛ С ПОСТУСЛОВИЕМ или ЦИКЛ "ДО"


Сначала выполняется тело цикла, затем проверяется условие. Выход из цикла

осуществляется, когда УСЛОВИЕ СТАНЕТ ИСТИННЫМ , если условие ЛОЖНО, то

цикл повторяется.


^ REPEAT repeat - (рипид) - повторять

тело цикла until - (антил) - ДО тех пор пока

UNTIL условие ;


Проверка условия производится после выполнения тела цикла, что делает

применение цикла "ПОКА" более предпочтительным, когда требуется пропустить

цикл вообще .

1

Вычислить y= ---- для любого Х, с проверкой корректности ввода.

Х

Program Func; Uses crt;

var x,y: real;

Begin

repeat

ClrScr;

write('X='); readln(x);

until (x<>0);

y:=1/x;

writeln('x=',x,' y=',y);

readkey;

End.


З А Д А Н И Я :

===============


1. Вычислить сумму ряда: 0.6, 0.7, 0.8, 0.9 .


2. Вывести таблицу функции y=cos(x) ,

где x изменяется в градусах от 10 до 45 с шагом 5 .


3. Определить, что больше сумма ряда: 1.1 , 1.3 , ... , 93.1

или произведение: 5*7*...*11 .


4. Вычислить значение функции y=1/(x-5), на отрезке от 0 до 10

с шагом 1 и с проверкой отсутствия деления на 0.


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

ЦИКЛИЧЕСКИЕ ПРОЦЕССЫ (продолжение)

3. ЦИКЛ С ЗАДАННЫМ ПАРАМЕТРОМ (ДЛЯ)


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


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

[ DOWNTO ]

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

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

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

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

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

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

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

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

^ Program Chisla;

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

Begin

clrscr;

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

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

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

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


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

^ Program Chisla;

var i:integer;

Begin

clrscr;

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

End.

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


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

^ Program Mult;

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
=========================

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


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

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


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

2

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


^ Program Summa; Program Summa;

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; 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;

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

x + 5∙x + 4

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

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


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;

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).


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

1

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

X-5


Program Tab;

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; .


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

^ 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;

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;

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('Сколько символов напечатать? :'); read(m); writeln;

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

End.

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

^ Program Pr1; Program Pr2;

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. Результат передается в программу как значение имени этой функции.


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


^ 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;

write('Число ',x,' в степени ',n,' равно ',St)

readkey;

End.


З А Д А Н И Я

=============


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


2. Изменить программу ,применив функцию с параметрами.

6 4

X - X

3. Вычислить Y= ----------- , при Х=3 ,используя функцию с параметрами.

-5 -3

X + X


^ ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 22
=========================

ПОВТОРЕНИЕ. ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ.


1. Вычислить Y=A+B+C , применив :


а) - процедуру ввода данных ;

- процедуру вычисления Y ;

- процедуру вывода результата ;

- глобальные переменные ;


б) - заменить глобальные переменные на формальные ;


в) - заменить процедуру вычисления суммы на функцию .


ВТОРОЙ ВАРИАНТ КОНТРОЛЬНОЙ РАБОТЫ ___ ___

x+8 + 2(x+8 -2)

Получить таблицу значений аргумента и функции Y= ────────────────

на интервале от -5 до 15 с шагом 2 ___ ___

4(5- x+8 ) - x+8

Повторяющуюся часть описать в функции, а получение таблицы описать в процедуре.


^ Program Primer; Uses crt;


Function R(x:integer):real; {x – формальная переменная}

Begin

R:=sqrt(x+8);

End;


Procedure Tab;

Var x, n, h: integer; {x – локальная переменная}

Begin

X:=-5; n:=15; h:=2;

While x<=n do

Begin

Writeln(‘x=’,x,’ Y=’,(r(x)+2*(r(x)-2))/(4*(5-r(x))-r(x)) )

X:=x+h;

End;

End;

0>40>Begin
^ Clrscr;

Tab;

Readkey;

End.


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


П О В Т О Р Е Н И Е


Вычислить сумму четных или нечетных чисел натурального ряда до 100 используя выбор из меню :


1. Сумма четных чисел ряда 1,2,3,..., 100 .


2. Сумма нечетных чисел ряда 1,2,3,..,100 .


3. Конец работы .


Выбор осуществить с помощью if-then-else .


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


Применить CASE


Если успеете, то подчеркните результат, применив процедуру подчеркивания, и покажите результат в центральной части экрана.


ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 24
=========================
СИМВОЛЬНЫЕ И СТРОКОВЫЕ ФУНКЦИИ

Различают величины :

1. Константы - последовательность символов в апострофах .

2. Символьные переменные типа CHAR (кэр, чар) - переменные принимают значения символов: ...var a:char;...а:='м';...

3. Строковые переменные типа STRING - цепочки символов:.var а:string;

Максимальное число символов в цепочке равно 255 .


1. LENGTH(S) -(лэнкс) - определяет и присваивает ДЛИНУ строковой величины S

( количество символов, включая пробел ). Результат – целое число .


2. CONCAT(S1,S2) -(конкат) - ОБЪЕДИНЕНИЕ (склеивание) символьных и строковых

величин S1 и S2 .Конкатенация производится также с помощью знака + ,например S:='Ва'+'ся' Результат - строка ‘Вася’.


3. POS(ST,S) -(позишен) - определяет и присваивает НОМЕР ПОЗИЦИИ ,

с которой подстрока ST входит в строку S .

Результат - число ,например pos('о','колесо') =2 .


4. COPY(S,N,D) -(копи) - ВЫБИРАЕТ часть строковой величины S,

начиная с позиции N ,длиной D символов .

Результат - выбранная строка или один символ.

ПРИМЕРЫ:

^ Program Primer1; Program Primer2;

var b: st
еще рефераты
Еще работы по разное