
- •1. Лабораторная работа №1
- •1.1. Методическая часть Оператор if
- •Конструкция if-else
- •If (условное выражение)
- •Множественный выбор
- •If (условное выражение)
- •Множественный выбор - оператор switch
- •Операторы цикла
- •1.2. Порядок выполнения работы.
- •1.3. Варианты заданий
- •1.4. Контрольные вопросы
- •2.1. Методическая часть Функции. Аргументы функции.
- •2.2. Порядок выполнения работы.
- •2.3. Варианты заданий
- •2.4. Контрольные вопросы
- •3.1. Методическая часть Массивы как аргументы функции
- •Функции и многомерные массивы
- •3.2. Порядок выполнения работы.
- •3.3. Варианты заданий
- •3.4. Контрольные вопросы
- •4.1. Методическая часть Символьные строки
- •Строковые константы
- •Массивы типа char и их инициализация
- •Явное задание размера памяти
- •Массивы символьных строк
- •Указатели и строки
- •Ввод строк
- •Функция gets()
- •Функция scanf()
- •Функция puts()
- •Функции, работающие со строками Функция strcat() - string catenation
- •Функция strcmp() - string comparison
- •Функция strcmpi()
- •Функция strncmp()
- •Функция strcpy()
- •Функция strncpy()
- •Пример реальной программы сортировки строк
- •4.2. Порядок выполнения работы.
- •4.3. Варианты заданий
- •4.4. Контрольные вопросы
2.2. Порядок выполнения работы.
1. Изучить материал данного методического пособия, привлекая лекции и дополнительную литературу;
2. Разработать схемы алгоритмов и программу для обработки данных в соответствии с конкретным вариантом.
2.3. Варианты заданий
Составить и протестировать функцию для вычисления
, 0 ≤ m ≤ n
Написать и протестировать функцию, которая по заданному натуральному числу определяет его первую и последнюю цифры.
Разработать функцию, возвращающую наименьшее общее кратное трех заданных натуральных чисел.
Написать и протестировать функцию, которая свой первый параметр заменяет на сумму, а второй - на разность аргументов.
Написать и протестировать функцию для вычисления
2.4. Контрольные вопросы
Сколько значений может возвратить функция с помощью оператора return?
Какими способами можно возвратить из функции сформированный результат?
Какое соответствие должно быть между формальными и фактическими параметрами функции?
Что такое глобальные и локальные переменные?
Когда и где надо объявлять функцию?
Что такое рекурсия?
ЛАБОРАТОРНАЯ РАБОТА №3
Целью лабораторной работы является освоение:
- Правил создания функций;
- Назначения и состава формальных и фактических параметров;
- Использования в качестве аргументов массивов;
- Правил вызова функций.
3.1. Методическая часть Массивы как аргументы функции
Массив в качестве аргумента может быть передан в функцию только с помощью указателя (адреса) массива. В качестве формального параметра массива данных любого типа можно использовать как массив, так и указатель на начало массива. Рассмотрим такой пример:
main()
{ int ages[50];
………..
function ( ages );
………
}
function ( int years[] ) //вариант 1
{
………
}
В точке вызова функции function(ages) ages является фактическим аргументом. Напомним, что имя ages – это указатель на первый элемент массива, состоящего из 50 элементов. Таким образом, оператор вызова функции передает ей указатель, т.е. адрес массива ages. Это значит, что мы можем написать функцию function() следующим образом:
function ( int *years ) //вариант 2
{
………
}
Действительно операторы int yers[] и int *yers синонимы, оба они объявляют переменную yers указателем массива целых чисел. Однако первый из них напоминает нам, что указатель функции ссылается на массив. Операторы, использующие указатель yers в функции function(), фактически работают с массивом ages, находящемся в теле функции main(). Действительно, если внутри функции function() (вариант 1) есть выражение yers[3], то оно эквивалентно ages[3]. Во втором варианте при описании аргумента как указатель выражение *(yers+3) также эквивалентно ages[3].
Для примера рассмотрим функцию вычисления среднего значения, написанную двумя вариантами.
int middle(int mas[], int l) //вариант 1
//mas - массив, l - длина массива
{ int i;
long sum;
for (i=0,sum=0;i<l;i++)
sum+=mas[i];
return((int)(sum/l)); }
int middle(int *mas, int l) //вариант 2
{ int i;
long sum;
for (i=0,sum=0;i<l;i++)
sum+=*(mas+i);
return((int)(sum/l));
}
Указатель устанавливается на первый элемент массива, и значение, находящееся там, добавляется в sum. Затем указатель передвигается на следующий элемент (к указателю прибавляется единица) и значение, находящееся в нем, также прибавляется к sum и т.д.
Применяются оба варианта, т.к. массивы и указатели тесно связаны.