Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Marchenko_N_M_Programmirovanie_na_yazyke_SS-1.pdf
Скачиваний:
31
Добавлен:
20.02.2016
Размер:
1.16 Mб
Скачать

3.ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ

1.Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел, после чего выводит количество ненулевых элементов. Использовать средства ввода/вывода языка С.

2.Написать программу, которая вводит с клавиатуры одномерный массив из 5 целых чисел, после чего выводит количество ненулевых элементов. Использовать средства ввода/вывода языка С++.

3.Написать программу, которая выводит минимальный элемент введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С.

4.Написать программу, которая выводит минимальный элемент введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С++.

5.Написать программу, которая выводит максимальный элемент введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С.

6.Написать программу, которая выводит максимальный элемент введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С++.

7.Написать программу, которая вычисляет среднюю за неделю температуру воздуха. Исходные данные вводятся с клавиатуры во время работы программы. Использовать средства ввода/вывода языка С.

8.Написать программу, которая вычисляет среднюю за неделю температуру воздуха. Исходные данные вводятся с клавиатуры во время работы программы. Использовать средства ввода/вывода языка С++.

9.Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С.

10.Написать программу, которая вычисляет среднее арифметическое ненулевых элементов введенного с клавиатуры одномерного массива целых чисел. Использовать средства ввода/вывода языка С++.

11.Написать программу, которая проверяет, есть ли во введенном с клавиатуры одномерном массиве элементы с одинаковыми значениями. Использовать средства ввода/вывода языка С.

12.Написать программу, которая проверяет, есть ли во введенном с клавиатуры одномерном массиве элементы с одинаковыми значениями. Использовать средства ввода/вывода языка С++.

13.Написать программу, которая определяет количество студентов в группе, чей рост превышает средний. Использовать средства ввода/вывода языка С.

14.Написать программу, которая определяет количество студентов в группе, чей рост превышает средний. Использовать средства ввода/вывода языка С++.

15.Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам. Использовать средства ввода/вывода языка С.

16.Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам. Использовать средства ввода/вывода языка С++.

17.Написать программу, которая вводит по строкам с клавиатуры двумерный массив

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

18.Написать программу, которая вводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по строкам. Использовать средства ввода/вывода языка С++.

19.Написать программу, которая определяет в целочисленной двухмерной матрице номер строки, которая содержит наибольшее количество элементов, равных 0. Использовать средства ввода/вывода языка С.

20.Написать программу, которая определяет в целочисленной двухмерной матрице

36

номер строки, которая содержит наибольшее количество элементов, равных 0. Использовать средства ввода/вывода языка С++.

21.Написать программу, которая определяет строку квадратной матрицы, сумма элементов которой максимальна. Использовать средства ввода/вывода языка С.

22.Написать программу, которая определяет строку квадратной матрицы, сумма элементов которой максимальна. Использовать средства ввода/вывода языка С++.

23.Написать программу, которая запрашивает имя пользователя и здоровается с ним. Использовать средства ввода/вывода языка С.

24.Написать программу, которая запрашивает имя пользователя и здоровается с ним. Использовать средства ввода/вывода языка С++.

25.Написать программу, которая вычисляет длину введенной с клавиатуры строки. Использовать средства ввода/вывода языка С.

26.Написать программу, которая вычисляет длину введенной с клавиатуры строки. Использовать средства ввода/вывода языка С++.

27.Написать программу, которая запрашивает название любимого фильма и выводит его на экран. Использовать средства ввода/вывода языка С.

28.Написать программу, которая запрашивает название любимого фильма и выводит его на экран. Использовать средства ввода/вывода языка С++.

37

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

ПРОГРАММЫ НА ЯЗЫКЕ С/С++ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ

1. ЦЕЛЬ РАБОТЫ

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

2.МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ

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

процедуры и подпрограммы – функции. Тот и другой вид подпрограммы описывается внутри основной программы и компилируется вместе с ней. Реализация механизма подпрограмм в С/С++ существенно отличается от аналогичной реализации в некоторых других языках. В С/С++ задача может быть разделена на более простые и обозримые с помощью функций, после чего программу можно рассматривать в более укрупненном виде – на уровне взаимодействия функций. Использование функций ведет к упрощению структуры программы. Разделение программы на функции позволяет также избежать избыточности кода, поскольку функцию записывают один раз, а вызывать ее на выполнение можно многократно из разных точек программы. Программу, содержащую функции, удобнее отлаживать. Для использования функций необходимо знать интерфейс функции, определяемый заголовком (имя, тип возвращаемого значения и типы параметров).

3. ОБЪЯВЛЕНИЕ И ОПРЕДЕЛЕНИЕ ФУНКЦИЙ

Функция – это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие. Функция может принимать параметры и возвращать значение. Любая программа на С++ состоит из функций, одна из которых должна иметь имя main (с нее начинается выполнение программы). Функция начинает выполняться с момента вызова. Любая функция должна быть объявлена и определена. Как и для других величин объявлений может быть несколько, а определение только одно. Объявление функции должно находится в тексте раньше ее вызова для того, чтобы компилятор мог осуществить проверку правильности вызова.

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

Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках:

[класс] тип имя_функции ( список _ параметров ) { тело функции }

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

С помощью необязательного модификатора класс можно задавать область видимости функции.

38

Тип функции – это тип возвращаемого функцией результата. Если функция не возвращает никакого результата, то для нее указывается тип void.

Имя функции – идентификатор, задаваемый программистом или main для основной функции.

Список либо спецификация параметров – это либо «пусто», либо список имен формальных параметров функции с указанием типа для каждого из них.

Тело функции – это либо составной оператор, либо блок. Признаком блока является наличие описаний программных объектов (переменных, массивов и т.д.), которые действуют в пределах этого блока. Блок, как и составной оператор, ограничивается фигурными скобками.

Пример 1:

int MAX (int x, int y); { }

float VAL (float r, float m); { }

4. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Механизм возврата из функции в вызвавшую ее функцию реализуется оператором

return [выражение];

Функция может содержать несколько операторов return (это определяется потребностями алгоритма). Если функция описана как void, выражение не указывается. Если выражение указывается, то результатом функции является значение указанного выражения.

Пример 2:

int sum (int a, int b) {return (a+b);}

Пример 3:

int MAX (int x, int y) {if (x>y) return x; else return y;}

Пример 4:

void worker (Worker w) {cout << w.fio<< ' ';}

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

5. ПАРАМЕТРЫ ФУНКЦИИ И ОБРАЩЕНИЕ К ФУНКЦИИ

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

Формат обращения к функции (вызова функции) традиционный:

имя функции (список фактических параметров)

39

В языке С++ обращение к функции – это выражение. В этом выражении круглые скобки играют роль знака операции, для которой функция и фактические параметры (аргументы) являются операндами. Приоритет операции «скобки» самый высокий, поэтому вычисление функции в выражениях производится раньше других операций. Между формальными и фактическими параметрами при вызове функции должны соблюдаться правила соответствия по последовательности и по типам. Фактический параметр – это выражение того же типа, что и у соответствующего ему формального параметра.

Пример 5. Вычисление суммы двух чисел

#include <iostream.h>

int sum (int a, int b); //объявление функции int main()

{int a=2, b = 5, c; c = sum (a,b);

cout <<"c="<<sum(a,b)<<"\n"; //вызов функции return 0;}

int sum (int a, int b) //определение функции {return (a+b);}

Пример 6. Вычисление объема цилиндра

#include <stdio.h> float vcil(float h, float r)

{return (3.14*h*r*r);} void main()

{float h,r,v;

printf ("h="); scanf("%f", &h); printf ("r="); scanf("%f", &r); v=vcil(h,r); printf("v=%f\n",v);}

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

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

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

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

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

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

40

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]