Решение квадратного уравнения. Оператор варианта. Вычисление площадей фигур. 10. Примерные задания к контрольной работе
Скачать 443 Kb.
|
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 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; write('Число ',x,' в степени ',n,' равно ',St) readkey; End. З А Д А Н И Я: 1. Набрать и исполнить программу. 2. Изменить программу, применив функцию с параметрами. 3. Вычислить , при Х=3 ,используя функцию с параметрами. ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 22ПОВТОРЕНИЕ. ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ. 1. Вычислить Y=A+B+C , применив: а) - процедуру ввода данных; - процедуру вычисления Y; - процедуру вывода результата; - глобальные переменные; б) - заменить глобальные переменные на формальные; в) - заменить процедуру вычисления суммы на функцию. ВТОРОЙ ВАРИАНТ КОНТРОЛЬНОЙ РАБОТЫ Получить таблицу значений аргумента и функции на интервале от -5 до 15 с шагом 2 Повторяющуюся часть описать в функции, а получение таблицы описать в процедуре. Program Primer; Uses crt; Function R(x:integer):real; {x – формальная переменная} Begin R:=sqrt(x+8); End; Procedure Tab; Var x, n, h: integer; {x,n,h – локальные переменные} 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> |