
- •Министерство образования и науки Российской Федерации
- •Оскольский политехнический колледж
- •Информатика и ит Учебное пособие для технических специальностей
- •Учебное пособие по информатике и икт для студентов первого курса полностью соответствуют федеральному компоненту государственного стандарта профильного среднего (полного) общего образования.
- •Описание рабочего места студента для выполнения практических занятий
- •Практическое занятие № 1
- •Работа в лаборатории
- •Виды информации
- •Передача информации
- •Единицы измерения информации
- •Действия с информацией?
- •Свойства информации
- •Обработка информации
- •Перевод чисел из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную системы счисления
- •Контрольные вопросы.
- •Практическое занятие № 2
- •Работа в лаборатории
- •Практическое занятие № 3
- •Краткая сводка команд, применяемых при верстке документа
- •Практическое занятие № 4
- •Формулы механического движения
- •Практическое занятие № 5
- •Практическое занятие № 6
- •Практическое занятие № 7
- •Контрольные вопросы
- •Практическое занятие № 8
- •Практическое занятие № 9
- •Практическое занятие № 10
- •Практическое занятие № 11
- •Практическое занятие № 12
- •Практическое занятие № 13
- •Практическое занятие № 14
- •If условие then оператор_1 else оператор_2
- •Практическое занятие № 15 Разработка программы, содержащей операторы цикла
- •Практическое занятие № 16
- •Практическое занятие № 17
- •Практическое занятие № 18
- •Содержание отчета
Практическое занятие № 17
Модульное программирование
Цель занятия: изучить назначение подпрограммы; определение процедуры и функции; научиться описывать процедуры и функции; определять формальные и фактические параметров; уметь записывать оператор описания процедуры (функции); составлять программы, содержащие обращение к процедуре или функции.
Задание
Дома подготовить отчетный лист. Записать в отчетный лист формулировку задания (вариант задания соответствует порядковому номеру студента в журнале, выбрать из каждого уровня задач свой вариант). Изучить методические рекомендации к проведению практического занятия (Учебное пособие под ред. Чекановой Н. Н.). Изучить формат операторов описания процедуры, функции, познакомиться с особенностями модульного программирования. Рассмотреть и выполнить на компьютере примеры методического материала по данной теме. Продумать алгоритм решения индивидуального задания: составить блок – схему и написать программу на языке Турбо Паскаль. Ответить на контрольные вопросы.
Работа в лаборатории
Показать преподавателю заготовки выполненных дома заданий.
Набрать программу в оболочке текстового редактора Турбо Паскаля, выполнить трансляцию и отладку программы.
Запустить программу на выполнение, получить результат.
Оформить отчет и сделать выводы по работе.
Пояснения к работе
Важнейшим принципом программирования является принцип модульности программ. В модульной программе отдельные её части, предназначенные для решения каких – то частных задач, организованы в подпрограммы.
В практике программирования часто возникают ситуации, когда одну и ту же группу операторов, реализующих определенную цель, требуется повторить без изменений в нескольких местах программы. Для этого применяют подпрограммы.
Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Паскаль существуют два вида подпрограмм: процедуры и функции.
Главное отличие процедур от функций заключается в том, что результатом последних является одно единственное значение. Все процедуры и функции языка Паскаль делятся на два класса:
стандартные процедуры и функции языка Паскаль;
процедуры и функции, определенные пользователем.
Рассмотрим особенности организации этих информационных элементов (объектов).
Процедуры описываются в специальном разделе описательной части программы – разделе описания процедур и функций, вслед за разделом переменных (Var). Любая процедура состоит, аналогично программе, из заголовка процедуры и ее содержательной части, включающей блоки описаний и блок действий (заключаемый в операторные скобки Begin-End).
Запись заголовка процедуры:
Procedure <имя> (<список параметров>);
<список параметров> - перечень формальных параметров с указанием их типов. Допускается описание процедуры, не содержащей формальных параметров:
Procedure <имя>;
Пример 1
Procedure a17 (a: real; b, c: real; var x1, x2: real; var k: integer);
Формальные параметры отделяются точкой с запятой (список однотипных параметров может быть перечислен через запятую). После заголовка идут разделы описаний (констант, типов, переменных, процедур и функций, используемых в процедуре) и операторы языка Паскаль, реализующие алгоритм процедуры.
Пример 2
{Процедура f вычисляет значения факториала числа r}
{и возвращает результат в переменной r1.}
{для хранения значений факториалов (r1) использован тип longint.}
{тип longint – целочисленная переменная в диапазоне -2147483648..2147483647, размер в байтах - 4}
Procedure f (r: integer; var r1: longint);
Var
i: integer;
begin
{если значение r отрицательно, то r1=0, и процедура завершается.}
if r < 0 then
begin
r1:=0;
exit;
end;
{ниже реализован алгоритм вычисления r! = 1 2 3 … n}
r1:=1;
for i:=2 to r do
r1:=r1*i;
end.
Формальные параметры нельзя описывать в разделе описаний процедуры. Для обращения к процедуре необходимо использовать оператор вызова процедуры. Он имеет следующий вид:
<имя процедуры> (<список _ фактических _ параметров>)
например:
f (n, fn);
Фактические параметры в списке отделяются друг от друга запятой. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке процедуры устанавливается взаимно однозначное соответствие.
Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
При использовании процедур в программе следует соблюдать следующие правила:
параметры, через которые в процедуру передаются исходные данные, должны быть описаны как параметры – значения;
параметры, в которые записываются результаты работы процедуры, описываются как параметры – переменные;
если формальный параметр – это параметр – переменная, то соответствующий фактический параметр должен быть переменной. Для параметра – значения фактическим параметром может быть выражение, в том числе и константа.
Количество, типы и порядок следования формальных и фактических параметров должны совпадать.
Пример 3: оформить в виде процедуры алгоритм вычисления степени у = х n с натуральным показателем п.
Procedure Step1 (n: Integer; x: Real; Var y: Real);
Var
i: Integer;
begin
y:=1;
For i: = 1 to n do
у:= у * x;
end;
В данном случае n и х - исходные данные для процедуры, описанные в основной программе. Y принимает в процедуре новое значение, поэтому в формальных параметрах оно описано в блоке var.
Пример 4: Оформить тот же самый алгоритм в виде процедуры без параметра.
Program Are;
Var
n: Integer; x, у: Real;
procedure Step2;
Var
i: Integer;
begin
y:=1;
for i := 1 to n do
у :=y* x;
end;
begin
Step2;
end.
В этом случае процедура Step2 не содержит списка формальных параметров и работает с локальной переменной i и переменными п, х, у, которые описываются в основной программе. Переменные п, х, у называются глобальными (имеют одно и то же значение в основной программе и в подпрограмме) по отношению к процедуре Step2. Значения глобальных переменных доступны и могут быть использованы в любой точке основной программы (в частности, внутри данной процедуры).
Функция - это программный модуль, результат выполнения которого есть единственное скалярное значение, присваиваемое имени этой функции. Следовательно, функция является частным случаем процедуры. Вместе с тем, между ними есть и принципиальные отличия: результатом функции является единственное значение; данный результат в основную программу передается через имя этой функции.
Описание функции:
Function <имя> (<список параметров>) : <тип функции>;
Для функции также допустимо отсутствие списка формальных параметров. Внутри функции должен быть хотя бы один оператор присваивания, у которого слева стоит параметр с названием функции.
Пример 5: оформить тот же пример с функцией.
Program Ars;
procedure Step3(n: Integer, x: Real; Var i: Integer; y: Real);
begin y:=1;
For i:= 1 to n do
y:=y*x;.
Step3:= y;
end;
begin
Step3 (n: Integer; x: Real): Real;
end.
Пример 6.
Найти площадь четырёхугольника, используя вспомогательный алгоритм Герон для нахождения площади треугольника (рис. 1).
Для того чтобы вычислить площадь четырёхугольника, заметим, что она складывается из площадей двух треугольников s1 и s2.Площадь каждого треугольника можно найти по формуле Герона, согласно которой:
,
где a,
b,
c
– длины сторон, а
p = (a + b + c) / 2 – полупериметр треугольника.
Рис. 1. Четырёхугольник
Программа вычисления площади четырёхугольника.
program pl4;
var
a, b, c, d, e, p1, p2, s1, s2, s4: real;
procedure geron (x, y, z: real; var p, s: real);
begin
p:=(x + y + z)/2;
s:=sqrt (p*(p-x)*(p-y)*(p-z));
end;
begin
writeln (‘a=’); readln (a);
writeln (‘b=’); readln (b);
writeln (‘c=’); readln (c);
writeln (‘d=’); readln (d);
writeln (‘e=’); readln (e);
geron (a, d, e, p1, s1);
writeln (‘p1=’, p1:4:2, ’’ , ’s1=’, s1:5:2);
geron (b, c, e, p2, s2);
writeln (‘p2=’, p2:4:2, ’’ , ’s2=’, s2:5:2);
s4:=s1+s2;
writeln (’s4=’, s4:5:2);
end.
Пример 7
Написать программу решения группы квадратных уравнений
pi x2 + qix + ri = 0, где p, q, r – массивы вещественных чисел, состоящие из k элементов. Решение одного уравнения оформить в виде процедуры.
Программа решения группы квадратных уравнений на языке Паскаль.
Заголовок процедуры имеет вид:
Procedure korni (a, b, c: real; var x1, x2: real; var pr: Boolean);
Блок – схема процедуры.
В начальном блоке подпрограммы вместо слова «начало» следует писать имя подпрограммы с указанием списка параметров. Значение параметра pr определяется знаком дискриминанта.
Переменная k указывает на количество уравнений.
Программа
Program urav;
{здесь начинается раздел описаний программы urav}
var
p,q,r: array [1..5] of real;
x, y: real;
I, k: integer;
L: Boolean;
procedure korni (a, b, c: real; var x1, x2: real; var pr: Boolean);
{в разделе описаний присутствует процедура korni решения квадратного уравнения}
{a, b, c – входные параметры – значения}
{x1, x2 – выходные параметры – переменные}
{переменная pr возвращает значение true, если есть действительные корни. Значение false возвращается, если корней нет и дискриминант отрицательный}
var
d: real;
begin
d : = b*b - 4*a*c;
if d > = 0 then
begin
pr : = true;
x1: = (- b + sqrt (d))/2/a;
x2:= (- b – sqrt (d))/2/a;
end
else
pr : = false
end;
{начало основной программы}
begin
writeln (‘введите количество уравнений’);
read (k);
{в цикле введем коэффициенты уравнений, вызовем процедуру и, если есть корни, выведем их на печать}
for i:=1 to k do
begin
writeln (‘ введите коэффициенты’, I ,’ – го уравнения’);
read (p[i], q[i], r[i]);
korni (p[i], q[i], r[i], x, y, l);
{ проверка, существуют ли корни (l = true)}
if l then
Writeln (‘корни’ , I ,’ - го’,’ уравнения’, ’ ’ , x : 8 : 5, ’ ’ , y: 8 : 5 )
Else
Writeln (‘в ’ , I ,’ - ом уравнении корней нет’);
end;
end.
Блок – схема решения основной задачи
Содержание отчета
Представить преподавателю компьютерный вариант выполнения программы. В отчете записать формулировку задачи, блок-схему решения задачи, программу на языке Турбо Паскаль. Проанализировать полученные результаты. Сделать вывод по работе.
Контрольные вопросы
Каково назначение процедур и функций и различие в их записи?
Как описывается процедура в языке Паскаль?
Как описывается функция в языке Паскаль?
Какие параметры называют формальными? Фактическими?
Какие параметры используются в качестве входных данных?
Какие параметры используются в качестве выходных данных?
Какие правила следует соблюдать при использовании процедур?
Какие переменные называются глобальными?
Что такое параметры – значения?
Что такое параметры – переменные?
Литература
Алексеев Е. Р., Чеснакова О. В. Турбо паскаль 7. 0. ─ С. 141 – 173
Немнюгин С. А., Перколаб Л. В. Изучаем Turbo Pascal. ─ С. 134 - 157
Потопахин В. П. Turbo Pascal. Освой на примерах. ─ С. 56 – 69
Культин Н. Б. Turbo Pascal в задачах и примерах. ─ С. 55 – 56, 216
Чеканова Н. Н. Информатика и ИКТ: Учебное пособие. ─ С. 103 – 112.
Варианты индивидуальных заданий
Вариант 1.
Исходные данные: x=0,3(0,01)0,5
Вариант 2.
Исходные данные: х=0(0,1)1,8
Вариант 3.
Исходные данные: х= - 0,7(0,1)1,6
Вариант 4.
Исходные данные: x= - 0,4(0,2)2
Вариант 5.
Исходные данные: х= - 1,7(0,1)0,5
Вариант 6.
Исходные данные: x=6,5(0,1)7,5
Вариант 7.
Исходные данные: х = 1(0,1)2
Вариант 8.
Исходные данные: х = 0(0,2)2
Вариант 9.
Исходные данные: х = 1(1)6
Вариант 10.
Исходные данные: х = 10(5)50
Вариант 11.
Исходные данные: a = 0,5(0,01)0,65
Вариант 12.
Исходные данные: х = 0(0,1)2,3
Вариант 13.
Исходные данные: х = - 0,4(0,1)1,5
Вариант 14.
Исходные данные: х = - 0,3(0,2)2,5
Вариант 15.
Исходные данные: x = 0,6(0,1)1,7