МУ_ЛР5_ОП (Методические указания к лабораторным работам)

2018-01-11СтудИзба

Описание файла

Файл "МУ_ЛР5_ОП" внутри архива находится в папке "Методические указания к лабораторным работам". Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.

Онлайн просмотр документа "МУ_ЛР5_ОП"

Текст из документа "МУ_ЛР5_ОП"

21

Методические указания к лабораторной работе № 4 по курсу

ОСНОВЫ ПРОГРАММИРОВАНИЯ

ГУИМЦ

" Функции, макросы, рекурсия и библиотеки "

( 4 часа)

Москва, МГТУ, СУЦ - 2014 год

_____________________________________________________________________________________________

СОДЕРЖАНИЕ

1. Цель лабораторной работы № 5 по дисциплине ОП(Основы программирования) - СУЦ 3

2. Порядок выполнения лабораторной работы 3

3. Основные понятия 3

3.1. Функции – основа процедурного программирования. 3

3.2. Понятие функции 4

3.3. Понятия, связанные с функциями в программировании 4

3.4. Описания и определения функций 5

3.5. Прототипы функций 6

3.6. Вызовы функций и возврат значений функции 7

3.7. Переменные в функциях 8

3.8. Параметр массив в функции 9

3.9. Размещение функций 10

3.10. Рекурсивные функции 10

3.11. Макросы и переменные этапа компиляции 11

3.12. Параметры главной функции main 12

3.13. Inline функции 13

3.14. Указатели на функции 13

3.15. Библиотеки стандартных функций 13

4. Примеры программы с использованием функций 14

4.1. Примеры, описанные в теоретической части ЛР 14

4.2. Пример с функцией SWAP для целых 15

4.3. Пузырьковая сортировка целого массива (без функции) 15

4.4. Сортировка минимакс 16

5. Контрольные задание ЛР №5. 16

5.1. Создать макрос 16

5.2. Функция суммы 3-х чисел 17

5.3. Функция печати массива 17

5.4. Функция Swap 17

5.5. Функция минимума или максимума по варианту 17

5.6. Функция сортировки убывание 17

5.7. Рекурсивная функция 17

6. Варианты заданий для студентов СУЦ. 17

7. Дополнительные требования для студентов СУЦ (д.т.). 18

7.1. Вложенные макросы 18

7.2. Функция экстремума с параметром типа 18

7.3. Функция сортировки, настройка типа 18

7.4. Сумма двумерного целого массива 18

7.5. Функция Swap для строк разной длины 18

7.6. Сортировка символьного массива 18

7.7. Функция с переменным числом параметров 18

7.8. Рекурсивная функция 18

8. Демонстрация, защита ЛР и отчет по ЛР. 18

9. Контрольные вопросы по ЛР. 19

10. Литература. 19

1 Цель лабораторной работы № 5 по дисциплине ОП(Основы программирования) - СУЦ

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

2 Порядок выполнения лабораторной работы

  1. Познакомиться с методическими указаниями и основными понятиями данной ЛР

  2. Проработать порядок выполнения работы.

  3. Создать консольные проекты для проверки примеров и выполнения задания ЛР.

  4. Проверить в данном проекте примеры из методических указаний, выполнив их в отладчике в пошаговом режиме.

  5. Написать программу задания ЛР по варианту, выданному преподавателем и отладить ее.

  6. Продемонстрировать работу программы преподавателю в режиме отладчика по шагам и изменяемыми переменными.

  7. Подготовить отчет по ЛР по представленному шаблону.

  8. Защитить ЛР с предоставлением отчета и ответами на контрольные вопросы.

  9. Для продвинутых студентов выполнить задания для дополнительных (необязательных) требований и также отобразить их в отчете по ЛР.

3 Основные понятия

В теоретической части описания лабораторной работы вводятся основные понятия и рассматриваются принципы для работы со строками на языке программирования СИ.

4 Функции – основа процедурного программирования.

Возможно, термин функция введенный в язык программирования СИ несколько собьет с толку студентов, которые усиленно изучали и изучают математику. В программировании под функцией понимается отдельно записанный фрагмент текста программы, который можно вызывать многократно, задавая разные параметры. Кроме того, для каждой функции, в зависимости от ее назначения мы можем присвоить ей имя (или название), соответствующее ее назначению. Например: PrintArray (печать массива) или SortArray (сортировка массива), что во-первых легче запоминается, а во-вторых, делает программу более наглядной и читаемой (обозримой). Последний аспект относится к понятиям абстракции действий (функций или процедур). Это позволяет, в свою очередь, абстрагироваться (отвлекаться – не учитывать) от деталей внутреннего устройства функции.

Абстракция функций или процедур является основой концепции программирования, которая называется также концепцией процедурно – ориентированного программирования (ПОП). Исторически сложилось так, что ПОП была ранее разработана и в некоторой степени повторяла работу вычислителя – компьютера, основанного на модели Машины Тьюринга. Отметим также, что концепцию ПОП иногда называют структурным подходом к программированию, что, по сути, не совсем верно. В данной лабораторной работе мы рассмотрим вопросы, связанные с: описанием и использованием функций, передачей в них параметров, вызовом функций и многие другие аспекты, непосредственно связанные с использованием функций.

В концепции процедурно ориентированного программирования главной конструкцией (модулем, строительным блоком) является процедура/функция. Разрабатываются и изучаются способы построения процедур, разделение (декомпозиция) сложной задачи на процедуры, способы связи процедур и передачи параметров между ними, совместного функционирования процедур, отладки программных систем и многое другое. Некоторые элементы концепции ПОП мы рассмотрим в этой ЛР.

5 Понятие функции

Программа на языке программирования может быть представлена упорядоченной совокупностью последовательно расположенных операторов (Si):

< S1, S2, S3, S4…, Si, Si+1, Si+2 … Sk-2 ,Sk-1, Sk>

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

< S1, S2, S3, S4…, Si, Si+1, Si+2Sk-2 ,Sk-1, Sk>

Эти группы операторов могут быть и большими, и, кроме того, выполняться в разных условиях с разными переменными и исходными данными. Возникает естественное желание (кстати, как в математике новое обозначение) дать им отдельное имя, однократно разместить их в отдельном месте ( Sф = Si+1, Si+2 ) и обращаться к ним при необходимости. Если иметь специальный оператор вызова, с возможностью передачи параметров (Sвф1- вызов функции 1 - Sф1), то тогда нашу программу можно представить так:

< S1, Sвф1, S4…, Si, Sвф1Sвф1, Sk, > <Sф1 … >

Размер программы при этом значительно сокращается, она становиться более наглядной, но самое главное отлаживать теперь необходимо не все группы операторов (Si+1, Si+2) , а только одну группу (Sф1), которая называется функцией (или процедурой). В разных языках существуют и другие названия: процедуры, подпрограммы, subroutine, методы и т.д. Названия сути не меняет.

Разбиение программ на функции при программировании дает следующие преимущества, которые, отметим, появились на стадиях эволюционного развития языков программирования:

  • Функцию можно вызывать из разных мест программы, что позволяет избежать повторного программирования.

  • Одну и ту же функцию можно использовать в разных программах (библиотеки).

  • Использование функций повышают уровень структурированности программы и облегчают её проектирование.

  • Использование функций облегчает чтение и понимание программы, ускоряет поиск и исправление ошибок.

Следствием процедурного подхода является предписание на выполнения одной главной программы – функции с названием main. Эта функция является главной и всегда определяет “точку входа” в программу – первый выполняемый оператор (S1). Функция main является особой, она также имеет тип, и формальные параметры, но об этом речь пойдет ниже.

6 Понятия, связанные с функциями в программировании

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

  • Определение функции или описание функции (синонимы)

  • Прототип функции

  • Тип возврата функции

  • Формальные параметры функции

  • Вызов функции

  • Фактические параметры функции

  • Тело функции

Эти понятия мы подробно рассмотрим ниже, а здесь начнем с простейшего работающего примера с функцией. Пусть в отдельном модуле проекта (second.cpp, в проекте есть еще один исходный модуль - first.cpp), дано описание функции суммирования двух переменных - Summa:

// Описание-определение функции

int Summa (int a , int b) // формальные параметры функции а и b

{

// тело функции – всего один оператор return

return (a + b); // возвращаемое значение функции типа int

};

Оператор return в функции задает возвращаемое функцией значение. В главной программе main выполнено (в исходном модуле - first.cpp) обращение (вызов) к этой функции непосредственно в качестве параметра функции printf при печати результата:

#include <stdio.h>

#include <process.h>

// Прототип функции

int Summa (int a , int b);

// Главная функция main

int main()

{

// Руссификация проекта

system ( " chcp 1251 > nul " );

// Вызов функции в параметрах printf

printf ( "Сумма = %d \n" , Summa(12,13)); // фактические параметры константы

//

system(" PAUSE");

//

}

Результат работы такой программы:

Сумма = 25

Для продолжения нажмите любую клавишу . . .

7 Описания и определения функций

Термины описание функции и определение функции являются синонимами. Мы будем использовать оба этих термина. Описание функции дается однократно в каждой программе и должно быть доступно (уже известно – расположено выше по тексту) при первом вызове этой функции. При описании функции задаются:

  • Название функции, уникальное имя в пределах всей программы.

  • Тип возврата функции.

  • Список формальных параметров функции

  • Тело функции – составной оператор

Название функции это уникальное имя в программе, которое однозначно определяет действия, выполняемые данной функцией. Могут быть хорошие и плохие названия. Например, хорошие названия:

PrintArray, FindKey, PoiskMaximum и др.

Плохие названия функций:

А13, Fun1, Proc2 и т.д.

Стандартом хорошего названия являются правила так называемой “Венгерской нотации”, основной смысл которых является запись названия таким образом, что раскрывается смысл переменной или функции. Более подробно об этих правилах смотрите в литературе [10]. Формальное описание функции выглядит так:

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее