МУ_ЛР5_ОП (Методические указания к лабораторным работам), страница 4
Описание файла
Файл "МУ_ЛР5_ОП" внутри архива находится в папке "Методические указания к лабораторным работам". Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.
Онлайн просмотр документа "МУ_ЛР5_ОП"
Текст 4 страницы из документа "МУ_ЛР5_ОП"
Вызов функции SWAP:
//SWAP функция
void SWAP( int *, int *); // Прототип
int k1 = 1 , k2 = 2;
printf ("До SWAP функция k1 , k2 %d %d \n",k1 , k2);
SWAP(&k1 , &k2);
printf ("После SWAP функция k1 , k2 %d %d \n",k1 , k2);
Результат работы фрагмента программы:
До SWAP функция k1 , k2 1 2
После SWAP функция k1 , k2 2 1
22 Пузырьковая сортировка целого массива (без функции)
Использование функции SWAP из предыдущего примера:
// Пузырьковая сортировка
int iMas[6] = {1,2,3,4,5,0}; // 0 - 5
int Razm = sizeof(iMas)/sizeof(int);
// Вывод начальный
for (int i = 0 ; i <Razm ; i++ )
printf ( "%2d \n" , iMas[ i ]);
printf ( "\n" );
int Flag = 0;
// Сортировка
for (int k= 0 ; k<Razm - 1 ;k++ )
{
Flag = 0;
for (int i = 0 ; i <Razm - k - 1 ; i++)
{
if ( iMas[ i ] > iMas[ i+1] ) // убывание
// if ( iMas[ i ] < iMas[ i+1] ) //возрастание
{ SWAP( &iMas[ i ], &iMas[ i+1] ); Flag = 1;};
};
if (Flag == 0) break;
};
// Вывод после сортировки
for (int i = 0 ; i <Razm ; i++ )
printf ( "%2d \n" , iMas[ i ]);
printf ( "\n" );
/////////////////////
Результат сортировки по возрастанию:
1
2
3
4
5
0
0
1
2
3
4
5
23 Сортировка минимакс
Также использование функции SWAP из предыдущего примера (не путайте с макросом Swap!):
int iMas[6] = {1,2,3,4,5,0}; // 0 - 5
int Razm = sizeof(iMas)/sizeof(int);
// Вывод начальный
for (int i = 0 ; i <Razm ; i++ )
printf ( "%2d \n" , iMas[ i ]);
printf ( "\n" );
Flag = 0;
// Сортировка
for (int k= 0 ; k<Razm - 1 ;k++ )
{
Flag = 0;
for (int i = 0 ; i <Razm - k - 1 ; i++)
{
// if ( iMas[ i ] > iMas[ i+1] ) // возрастание
if ( iMas[ i ] < iMas[ i+1] ) // убывание
{ SWAP( &iMas[ i ], &iMas[ i+1] ); Flag = 1;}
};
if (Flag == 0) break;
};
// Вывод после сортировки
for (int i = 0 ; i <Razm ; i++ )
printf ( "%2d \n" , iMas[ i ]);
printf ( "\n" );
Результат сортировки по убыванию:
0
1
2
3
4
5
5
4
3
2
1
0
Нужно создать пустой проект в MS VS, как описано выше, скопировать через буфер обмена в него текст данного примера, отладить его и выполнить.
24 Контрольные задание ЛР №5.
25 Создать макрос
Создать и отладить макрос вычисления минимума или максимума их 3-х переменных. Задание уточняется вариантом. Исходные значения задаются в программе. Результат вывести на печать.
26 Функция суммы 3-х чисел
Создать и отладить функцию сложения 3-х переменных/выражений (Summa3). Функцию разместить в новом модуле проекта – second.cpp. Результат работы функции возвращается 4-м параметром (указатель) и самой функцией .Данные заданы в программе, результат вывести на печать.
27 Функция печати массива
Создать функцию печати массива (PrintMas). Функция описывается в другом модуле (second.cpp). Тип массива задан вариантом. Оформить печать красиво.
28 Функция Swap
Создать и отладить функцию обмена данными Swap. Функция описывается в другом модуле (second.cpp). Тип данных для этой функции и название зависит от варианта.
29 Функция минимума или максимума по варианту
Создать и отладить функцию поиска в вещественном массиве (float) максимального или минимального значения ( MinMas и MaxMas) и его номера. Функция описывается в другом модуле (second.cpp). Массив задается с помощью инициализации (10 элементов). Продемонстрировать работу алгоритма в отладчике. Массив и результат поиска распечатать в главной программе.
30 Функция сортировки убывание
Оформить в виде функции алгоритмы сортировки рассмотренные выше. Варианты сортировки: пузырьковая сортировка (пуз.) и минимакс (мм.). Вид сортировки: убывание (уб.) и возрастание (воз.). Функция описывается в другом модуле (second.cpp). Тип массива определен вариантом. Для распечатки массива при проверке использовать свою функцию печати (PrintMas).
31 Рекурсивная функция
Создать функцию вычисления факториала целого числа с контролем на отрицательный входной параметр. В этом случае вывести значение равное нулю.
32 Варианты заданий для студентов СУЦ.
Варианты заданий приведены ниже. Номер варианта должен соответсвовать номеру студента в групповом журнале.
№ п/п | Создать макрос | Тип массива – печать сортировка | Тип функции Swap | Поиск минимума и максимума | Сортировка в одномерном массиве |
| Мин. Из 3-х | long | float | Максимум | Пуз. – воз. |
| Макс. Из 3-х | float | long | Минимум | Пуз. – уб. |
| Мин. Из 3-х | int | char | Максимум | Мм – воз. |
| Макс. Из 3-х | double | double | Минимум | Мм – уб. |
| Мин. Из 3-х | long | float | Максимум | Пуз. – воз. |
| Макс. Из 3-х | float | long | Минимум | Пуз. – уб. |
| Мин. Из 3-х | int | char | Максимум | Мм – воз. |
| Макс. Из 3-х | double | double | Минимум | Мм – уб. |
| Мин. Из 3-х | char | double | Максимум | Пуз. – уб. |
33 Дополнительные требования для студентов СУЦ (д.т.).
Для продвинутых студентов, по желанию, можно построить программу с дополнительными требованиями. Дополнительные требования выполняются в дополнение основным требованиям ЛР. Для всех заданий нужно распечатать исходные данные и результаты, использовать второй файл и прототипы функций.
34 Вложенные макросы
Создать макрос, внутри которого используются другие макросы, например вычисление максимума из двух.
35 Функция экстремума с параметром типа
Создать универсальную функцию поиска максимума и минимума и его номера. Тип (минимум или максимум) задается отдельным параметром функции.
36 Функция сортировки, настройка типа
Создать функцию сортировки массива, в которой тип сортировки задан отдельным параметром.
37 Сумма двумерного целого массива
Создать функцию вычисление суммы двумерного массива. Тип массива определяется вариантом для функции печати.
38 Функция Swap для строк разной длины
Создать функцию обмена строк разной длины. Строки заданы динамическими массивами. Нужно использовать функции библиотеки работы с динамической памятью (“кучей”).
39 Сортировка символьного массива
Создать функцию для сортировки символьного массива.
40 Функция с переменным числом параметров
Изучить технологию создания функций с переменным числом параметров. Продемонстрировать это на функции суммирования переменных.
41 Рекурсивная функция
Создать функцию вычисления факториала целого числа с контролем на отрицательный входной параметр. Контролировать также максимальное значение входного параметра и выдавать при этом сообщение. В этом случае вывести значение равное нулю.
42 Библиотеки RTL
Свести в отдельную табличку перечень библиотек СИ с пояснением основного назначения. Перечень библиотек можно получить на основе списка заголовочных файлов (*.h и *.hpp), размещенных в подкаталогах INCLUDE.
43 Демонстрация, защита ЛР и отчет по ЛР.
После выполнения всех необходимых шагов по ЛР, работающую программу нужно продемонстрировать преподавателю, проводящему ЛР, о чем он в журнале делает отметку. Далее студент на основе шаблона и примера оформляет отчет по ЛР. После оформления отчета, который может быть представлен преподавателю в электронном виде, выполняется защита ЛР. Студент дает ответы на вопросы по отчету и на контрольные вопросы приведенные ниже. ЛР считается полностью зачтенной, если выполнены все перечисленные требования и действия: демонстрация, отчет и защита ЛР.
44 Контрольные вопросы по ЛР.
-
Что такое функция в программировании?
-
Зачем нужны функции?
-
Что такое определение функции, его составляющие?
-
Что такое вызов функции, фактические параметры?
-
Что такое формальные параметры функции?
-
В чем суть концепции процедурного программирования?
-
Какой оператор используется для возврата из функций?
-
Что такое прототип функции, его составляющие и для чего он используется?
-
Как лучше задавать название функции?
-
Как можно возвратить значение данных из функций?
-
Какие переменные (данные) можно использовать в функциях?
-
Зачем используется спецификатор extern?
-
Что такое рекурсивные функции?
-
Что такое inline функции?
-
Как в функциях можно использовать глобальные и статические переменные?
-
Какие параметры можно задать для функции main?
-
Что такое макросы и для чего они используются?
-
Где в программе могут размещаться функции?
-
Какими способами можно передать массив в функцию?
-
Могут ли функции и макросы иметь одинаковые имена в одной программе?
-
Что такое указатели на функции и для чего они используются?
-
Какие библиотеки стандартных функций вы знаете?
-
Каково назначение оператора return?
45 Литература.
Основная литература
-
Список литературы, доступные книги и необходимые пособия для ЛР ОП размещены на сайте www.sergebolshakov.ru на страничке “2-й к СУЦ”. Пароль для доступа можно взять у преподавателя или старосты группы.
-
Керниган Б., Ритчи Д. К36 Язык программирования Си.\Пер. с англ., 3-е изд., испр. - СПб.: "Невский Диалект", 2001. - 352 с.: ил.
-
Касюк, С.Т. Курс программирования на языке Си: конспект лекций/С.Т. Касюк. — Челябинск: Издательский центр ЮУрГУ, 2010. — 175 с.
-
MSDN Library for Visual Studio 2005 (Vicrosoft Document Explorer – входить в состав дистрибутива VS. Нужно обязательно развернуть при установке VS VS или настроить доступ через Интернет.)
Дополнительная литература
-
Общее методическое пособие по курсу для выполнения ЛР и ДЗ (см. на сайте 1-й курс www.sergebolshakov.ru) – см. кнопку в конце каждого раздела сайта!!!
-
Другие методические материалы по дисциплине с сайта www.sergebolshakov.ru.
-
Конспекты лекций по дисциплине “Основы программирования”.
-
Подбельский В.В. Язык Си++: Учебное пособие. – М.: Финансы и статистика, 2003.
-
5. Подбельский В.В. Стандартный Си++: Учебное пособие. – М.: Финансы и статистика, 2008.
-
Г. Шилдт “С++ Базовый курс”: Пер. с англ.- М., Издательский дом “Вильямс”, 2011 г. – 672с
-
Г. Шилдт “С++ Руководство для начинающих” : Пер. с англ. - М., Издательский дом “Вильямс”, 2005 г. – 672с
-
Г. Шилдт “Полный справочник по С++”: Пер. с англ.- М., Издательский дом “Вильямс”, 2006 г. – 800с
-
Бьерн Страуструп "Язык программирования С++"- М., Бином, 2010 г.