50164

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

Лабораторная работа

Информатика, кибернетика и программирование

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

Русский

2014-01-17

58.5 KB

10 чел.

Лабораторная Работа № 13

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

Цель: Овладение навыками алгоритмизации и программирования задач с использованием подпрограмм пользователя. Овладение навыками написания подпрограмм и обращения к ним, выбор параметров подпрограмм.

Теоретические сведения:

Приступая к решению задач на предложенную тему, следует вспомнить, что:

  •  Функцией называется выделенная последовательность инструкций, предназначенных для решения определенной задачи. Вы можете написать свои функции и затем использовать их так же, как функции из библиотек языка С или С++.
  •  Собственные функции помещаются после закрывающей фигурной скобки main(). Каждая функция имеет структуру, аналогичную структуре функции main().
  •  Функцию можно вызвать из любого места программы, в том числе, из другой функции. Инструкция return(0);  в теле функции всегда передает управление инструкции, следующей за вызывом функции.
  •  Если компилятор С следует стандарту ANSI, вы должны указать тип функции даже в том случае, если функция не возвращает никаких значений. При этом тип определяется как void. Эта информация говорит компилятору, что функция не будет возвращать вызывающей функции никакого значения. В С++ введение ключевого слова void  является не обязательным, но желательным.
  •  Для передачи данных в функцию надо использовать только параметры. Глобальные переменные, то есть переменные, объявленные вне функции, использовать не рекомендуется.
  •  Тип каждого фактического параметра (константы или переменной) в инструкции вызова функции должен совпадать с типом соответствующего формального параметра, указанного в объявлении функции.
  •  Если параметр функции используется для возврата результата, то в объявлении функции этот параметр должен быть ссылкой, а в инструкции вызова функции в качестве фактического параметра должен быть указан адрес переменной.
  •  При работе с компиляторами языка С++(и некоторыми С - компиляторами) желательно начинать программу с прототипов функций. Прототип – это строка определения функции, повторенная в начале программы перед main(). Прототип сообщает компилятору типы и количество аргументов тех функций, которые будут использованы в программе.

Пример: 

Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами функции должны быть коэффициенты и корни квадратного уравнения. Значение, возвращаемое функцией, должно передавать в вызывающую программу информацию о наличии  у  уравнения корней: 2 – два разных корня, 1 – корни одинаковые, 0 – уравнение не имеет решения. Кроме того, функция должна проверять корректность исходных данных. Если исходные данные не верные, то функция должна возвращать -1.

Тексты программы:

#includ<stdio.h>

#includ<conio.h>

#includ<math.h>

// тело функции

int kvadur(float a, float b, float c, float *x1,float *x2) //коэф. уравнения, корни уравнения

// значение функции – количество корней

// или -1, если неверные исходные данные

{

float d; // дискриминант 

if (a==0) return(-1);

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

if(d<0)

return(0); // уравнение не имеет решения

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

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

if (*x1!=*x2) return(2);

   else return(1);

}

 // проверка работоспособности функции

void main()

{

float a,b,c; // коэффициенты уравнения

float x1,x2; // корни уравнения

int n; // количество корней

puts(“Введите коэффициенты”);

scanf(“%f%f%f”,&a,&b,&c);

switch (kvadur(a,b,c,&x1,&x2))

{

case -1: puts(“Ошибка исходных данных”);

             break;

case 0: puts(“Уравнение не имеет решения”);

            break;

case 1: printf(“Корни одинаковые: x=%3.2f”,x1);

           break;

case 2:  printf(“ x1=%3.2f x2=%3.2f”,x1,x2);

}

getch();

}

Варианты заданий: 

Выполнить задание согласно варианту:

Вариант задания

Условия задачи

Примечания

1

Подсчитать число точек, находящихся внутри круга радиусом r с центром в начале координат; координаты заданы массивами X(10), Y(10).

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

2

Определить периметры треугольников, заданных координатами их вершин XA(5), XB(5), XC(5)

                                            YA(5), YB(5), YC(5).

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

3

Вычислить z=(v1+v2+v3)/3,  где v1, v2, v3 –объем шаров с радиусами r1, r2, r3 соответственно.

Vi – вычислять в подпрограмме.

4

Вычислить суммы положительных элементов массивов x(n), y(m), z(k).

n<=5

m<=5

k<=5

5

Вычислить среднее арифметическое положительных элементов для массивов a(n1),b(n2), c(n3).

n1<=5

n2<=5

n3<=5

6

Подсчитать количество элементов матриц x(5,5) и y(4,6), удовлетворяющих условию 0<=xij<=1 и 0<=yij<=1

7

Вычислить суммы положительных элементов каждой строки для матриц a(4,5) и b(5,6).

8

Вычислить суммы элементов главных диагоналей матриц a(n,n)  и b(m,m).

n<=5

m<=5

9

Вычислить z=(s1+s2)/2,  где s1 – сумма положительных элементов массива x(5); s2 – сумма отрицательных элементов массива y(6).

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

10

Подсчитать число нулевых элементов для матриц a(4,5) и b(5,6).

11

Вычислить суммы элементов нижних треугольных матриц для матриц a(n,n)  и b(m,m).

n<=5

m<=5

12

Определить число положительных элементов до первого отрицательного в массивах x(4), y(5), z(7).

13

Вычислить z=(xm1+xm2)/2, где xm1 и xm2  - наименьшие элементы массивов x1(12) и  x2(15).

14

Переписать положительные элементы массива x(10) и y(14) в массив z подряд.

Запись в массив z осуществлять в подпрограмме.

15

Найти наименьшие элементы и номера строк и столбцов, в которых они расположены, для матриц a(4,5) и b(5,6).

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

  1.  В чем заключаются различия между библиотечными функциями языка С и функциями, которые вы пишите сами?
  2.  Всегда ли вызов функции осуществляется из функции main()?
  3.  Чем отличаются формальные и фактические параметры?
  4.  Что происходит, когда заканчивается выполнение функции?
  5.  Как объявляются глобальные и локальные переменные? Каково правило видимости этих переменных?
  6.  Объясните разницу между автоматическими и внешними переменными?
  7.  Как передать значение функции?
  8.  Как получить значение от функции?

    

Содержание отчета:

  1.  Краткие теоретические сведения.
  2.  Схемы алгоритмов.
  3.  Тексты составленных программ.
  4.  Протоколы к составленным программам.
  5.  Вывод о проделанной работе.


 

А также другие работы, которые могут Вас заинтересовать

11552. Обработать результаты эксперимента, зарегистрированные при одноосном растяжении образцов стали и написать программу числовой обработки зависимости 214.5 KB
  Отчет по лабораторной работе №4 дисциплина: Компьютерное моделирование физических процессов и систем Задание Обработать результаты эксперимента зарегистрированные при одноосном растяжении образцов стали и написать программу числовой обработки зав...
11553. Освоить численные методы, алгоритм и программы вычисления интегралов от сложных или таблично заданных функций 51 KB
  Отчет по лабораторной работе №5 Численное интегрирование 1. Цель работы. Освоить численные методы алгоритм и программы вычисления интегралов от сложных или таблично заданных функций. 2. Задание. Составить алгоритм программу вычисления интеграла методами...
11554. Освоить численный метод, алгоритм и программу вычисления производной от таблично заданной функции 86.5 KB
  Отчет по лабораторной работе №2 Численное дифференцирование 1. Цель работы. Освоить численный метод алгоритм и программу вычисления производной от таблично заданной функции. 2.Задание. Составить алгоритм программу вычисления остаточных членов R для форм
11555. Оценка результатов инновационной деятельности ООО «Пансионат Заручевье» 87.2 KB
  Определить сущность понятия эффективности результатов инновационной деятельности; изучить показатели, применяемые для оценки результатов инновационной деятельности; проанализировать результаты инновационной деятельности конкретного хозяйствующего субъекта; дать предложения по совершенствованию инновационной деятельности исследуемого хозяйствующего субъекта.
11556. Освоить методику хранения данных программ в массивах и научиться использовать массивы при решении практических задач 43 KB
  Лабораторная работа № 5. Массивы Цель работы: Освоить методику хранения данных программ в массивах и научиться использовать массивы при решении практических задач. Использовать задание из лабораторной работы № 4 Операторы циклов но числа вводимые пользователем...
11557. Изучить синтаксис операторов цикла и получить навыки их использования в программах 40.5 KB
  Операторы циклов Цель работы: Изучить синтаксис операторов цикла и получить навыки их использования в программах. Содержание работы. 1 Дана произвольной длины последовательность целых чисел. Найти сумму неотрицательных чисел наибольшее из таких чисел и номер этог
11558. Научиться создавать и применять функции и процедуры, освоить методы передачи параметров 40 KB
  Процедуры и функции Цель работы: Научиться создавать и применять функции и процедуры освоить методы передачи параметров. 1Текст задания Задание: Для условий лабораторной работы № 3 Условные операторы Задание А и Задание Б выполнить следующие требования: 1 Зада...
11559. Переменные. Операторы. Встроенные функции 23.5 KB
  Переменные. Операторы. Встроенные функции Цель работы: Изучить типы данных VB и научиться использовать их в переменных и массивах. Получить навыки использования операторов и встроенных функций VB. 1. 1 строка S c символом ASCIIкод которого выбирается случайным образом и
11560. Исследование автономного LC-генератора 287.5 KB
  ЛАБОРАТОРНАЯ РАБОТА №3 Исследование автономного LC-генератора ЦЕЛЬ РАБОТЫ: теоретические и экспериментальные исследования автономного LC-генератора. РАБОТА СОДЕРЖИТ СЛЕДУЮЩИЕ РАЗДЕЛЫ : 1. Изучение теории автономного...