- •1. ЦЕЛЬ РАБОТЫ
- •2. КРАТКОЕ ОПИСАНИЕ СРЕДЫ Visual C++
- •3. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ
- •4. ОФОРМЛЕНИЕ ПРОГРАММ
- •5. ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
- •6. ИНСТРУКЦИЯ ПРИСВАИВАНИЯ
- •7. ВЫВОД ДАННЫХ
- •8. ВВОД ДАННЫХ
- •9. ПРОГРАММЫ С ЛИНЕЙНОЙ СТРУКТУРОЙ
- •10. БИБЛИОТЕКА МАТЕМАТИЧЕСКИХ ФУНКЦИЙ
- •11. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. ОПЕРАТОРЫ ВЕТВЛЕНИЯ
- •3. ОПЕРАТОРЫ ЦИКЛА
- •4. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. МАССИВЫ
- •3. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
- •3. ОБЪЯВЛЕНИЕ И ОПРЕДЕЛЕНИЕ ФУНКЦИЙ
- •4. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
- •5. ПАРАМЕТРЫ ФУНКЦИИ И ОБРАЩЕНИЕ К ФУНКЦИИ
- •6. ОСОБЕННОСТИ РАБОТЫ В СРЕДЕ VISUAL C++
- •7. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •СПИСОК ЛИТЕРАТУРЫ
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