Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПЯВУ / Лабы / lab 6 PPrg C#

.doc
Скачиваний:
43
Добавлен:
10.06.2015
Размер:
186.37 Кб
Скачать

6. Процедуры и функции

Подготовка к работе

1. По указанной литературе изучить:

  • правила описания функций и обращения к ним,

  • правила описания процедур и обращения к ним,

  • способы передачи параметров в процедуру и функцию.

2. Разработать алгоритмы решения в соответствии с заданием.

3. Составить программы решения задач.

Контрольные вопросы

  1. Что такое подпрограмма? Какие виды подпрограмм бывают?

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

  3. Что такое функция? Ее назначение.

  4. Что такое процедура? Ее назначение.

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

  6. Правила описания функции. Форма вызова функции.

  7. Правила описания процедур. Форма вызова процедуры.

  8. Что такое формальные и фактические параметры?

  9. Какие правила надо соблюдать при работе с аргументами и параметрами?

  10. В чем отличие входных параметров от выходных параметров?

  11. Какие переменные в программах являются глобальными, а какие – локальными?

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

  13. Объяснить на примере, как можно многократно использовать функцию или процедуру в другой программе?

Задание и порядок выполнения работы

  1. Задача1. Составить алгоритм, написать программу, использующую подпрограмму-функцию. Проект консольное приложение, варианты решения задач, заданы в таблице 6.1.

Cохранить проект в папке на диске D:\Temp\ …\ Inf\Р6\P6_1 под именем Fun в папке P6_1.

Таблица 6.1

Функция

a

b

Задание: Написать подпрограмму-функцию, которая вычисляет

1

3

5

значение xy/x = exp(y/xln(x))

2

2

4

значение tan(x,z)=sin(x+z)/cos(x+z)

3

5

2

значение log10 (y,t)=ln(y+t2)/ln(10)

4

5

5

значение y-z = exp(-zln(y))

5

3

-

значение log2 (b,y)= ln(b+y)/ln(2)

6

0,5

0,2

значение Сtan(y,с)=cos(y2+c)/sin(y2+c)

7

t=g(1.2b, -a)+g(b, a)-g(2a-1, 3b)

-1

10

значение g(x,y)=(x2 +y2)

8

2

5

значение zn= exp(nln(z))

9

-0,5

15

значение tan(z,y)=sin(z+y)2/cos(z+y)2

10

-0,5

2

u(x,y)= (x2 +y2 )/2xy

11

4

2

значение Сtan(x)=cos2(x)/sin2(x)

12

-

3

значение ya/y= exp(a/yln(y))

  1. Задачи2-3. Составить алгоритмы, написать программы, использующие подпрограмму -процедуру. Проекты консольное приложение, варианты решения задач, заданы в таблице 6.2. Выполнить задачи по вариантам N и N+1.

  2. Сохранить проекты в папке на диске D:\Temp\ …\ Р6\P6_2(3) под именем Prc1(2) в папке P6_2.

Таблица7.2

Задание: Написать процедуру, которая

1

вычерчивает на экране параллелограмм заданными символами.

2

вычисляет объем и площадь поверхности параллелепипеда. Сторона основания и высота фигуры задается произвольно.

3

вычерчивает на экране ромб заданными символами.

4

вычисляет объем и площадь поверхности цилиндра. Радиус и высота цилиндра задается произвольно.

5

вычерчивает на экране параллелограмм заданными символами.

6

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

7

вычерчивает на экране равносторонний треугольник заданными символами.

8

вычисляет объем и площадь поверхности конуса. Радиус и высота конуса задаются произвольно.

9

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

10

вычисляет объем и площадь поверхности 4-угольной пирамиды. Стороны основания и высота пирамиды задаются произвольно.

11

вычерчивает на экране равносторонний треугольник заданными символами.

12

вычисляет объем и площадь поверхности пирамиды, в основании которой лежит прямоугольный треугольник. Стороны основания и высота пирамиды задаются произвольно.

  1. Cкопировать созданные проекты – папки P6_1 – Р6_2 , Р6_3 с их содержимым на свою flash-память.

  2. Завершить работу и подготовить отчет. В отчете для каждого задание (п.п.1, 2) отразить: условие, алгоритм решения, программу, полученные результаты.

На защите уметь составлять программы по любому варианту заданий, приведенных в таб. 1,2.

Методические указания по выполнению задания

Задача 1 Дано действительное y . Получить t= , где

class Program

{

static double F(double x) // Объявление функции F

{

return x+Math.Pow(x,2)/2+Math.Pow(x,3)/6;

}

static void Main(string[] args)

{

double y,z,t;

Console.WriteLine("Введите y ");

y = Convert.ToDouble(Console.ReadLine());

z=6-F(Math.Pow(y,2)-1);

if (z!= 0)

{

t = (1.7 * F(0.75) + 2 * F(1 + y)) / z;

Console.WriteLine("t={0,5:f}",t);

}

else Console.WriteLine("На нуль делить нельзя");

Console.WriteLine();

Console.ReadLine();

}

}

Рис. 6.1. Блок-схема алгоритма Задачи1

Задача 2. Написать процедуру, которая вычисляет объем и площадь поверхности куба.

class Program

{

static void Kub(out double S, out double V, int x)

{

S=(double)6*Math.Pow(x,2);

V=(double)Math.Pow(x,3);

}

static void Main(string[] args)

{

double s,v; int a; // сторона куба

Console.WriteLine("Площадь и объем

поверхности куба");

Console.WriteLine();

Console.WriteLine("Введите а ");

a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine();

if (a>0)

{

Kub(out s, out v, a); // Вызов процедуры

Console.WriteLine("s={0,5:f} v={1,5:f}", s,v);

}

else Console.WriteLine("а должно быть > 0");

Console.ReadLine();

}

}

Рис. 6.2. Блок-схема алгоритма Задачи2

Задача 3. Вывести на экран рамку из символов ' * ', высота которой k строк, ширина m позиций с использованием процедуры Print(s,n), обращаясь к которой выводятся n раз символы s.

static void Print(char s, int n) // Процедура “Печать”

{

for (int i = 0; i < n; i++)

Console.Write(s); // Вывод строки с символами s

}

static void Main(string[] args)

{

int m, k=0;

Console.WriteLine("Рамка");

Console.WriteLine();

Console.WriteLine("Введите число столбцов m ");

m = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(); // ширина рамки

Console.WriteLine("Введите число строк k ");

k = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(); // высота рамки

Print('*', m); // вывод верхней стороны рамки '*'

Console.WriteLine();

for (int j = 0; j < k; j++)

{ // рисуем слева на право в цикле

Print('*',1); // вывод левой границы '*'

Print(' ',m-2); // заполнение середины пробелами ' '

Print('*',1); // вывод правой границы '*'

Console.WriteLine(); //переход к новой строке

}

Print('*', m); // вывод нижней стороны рамки '*'

Console.ReadLine();

}

}

Рис. 6.3. Блок-схема алгоритма Задачи3

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

Функция возвращает одно значение, процедура – ни одного или несколько.

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

Функция вызывается по имени в выражениях.

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

30

Соседние файлы в папке Лабы