МУ_ЛР2_ОП (1079923)
Текст из файла
16
Методические указания к лабораторной работе № 2 по курсу
ОСНОВЫ ПРОГРАММИРОВАНИЯ
ГУИМЦ
"Операторы ветвления и циклов в программах"
( 4 часа)
Москва, МГТУ, СУЦ - 2014 год
_____________________________________________________________________________________________
СОДЕРЖАНИЕ
1. Цель лабораторной работы №2 по дисциплине ОП(Основы программирования) - СУЦ 4
2. Порядок выполнения лабораторной работы 4
3. Основные понятия 4
3.1. Разветвляющиеся вычислительные процессы. 4
3.2. Безусловный переход (goto) 5
3.3. Ветвление и операторы ветвления (if - else) 5
3.4. Переключатели (switch - case) 6
3.5. Циклы (for, while, do) 7
3.6. Отладка программ. 9
3.7. Модули 9
3.8. Понятие о блок-схемах 10
3.9. Библиотеки функций 11
4. Примеры программы с ветвлением и циклами. 11
4.1. Пример поиска максимального значения из трех переменных (А , B, C) 12
4.2. Решение квадратное уравнение 12
4.3. Использование условного оператора для организации цикла 13
4.4. Использование переключатели и операторы цикла 13
5. Контрольное задание ЛР №2. 13
5.1. Определение минимального значения 13
5.2. Использование переключателя 13
5.3. Цикл вычисления значений функции (if) 14
5.4. Цикл вычисления значений функции (for, do) 14
6. Варианты заданий для студентов СУЦ. 14
7. Дополнительные требования для студентов СУЦ (д.т.). 14
7.1. Определение максимального значения 14
7.2. Вычисления с запоминанием значений 14
7.3. Вычисления с запоминанием значений и вводом аргументов 15
7.4. Вычисления минимума в массиве 15
8. Демонстрация, защита ЛР и отчет по ЛР. 15
9. Контрольные вопросы по ЛР. 15
10. Литература. 16
1 Цель лабораторной работы №2 по дисциплине ОП(Основы программирования) - СУЦ
Целью данной ЛР по дисциплине ОП является получение начальных знаний и умений для программирования разветвляющихся программ на языке программирования СИ. Студенты используют консольные проекты и отлаживают программы в среде программирования MS VS 2005/2008/2010. Студенты знакомятся с операторами ветвления (условными и циклическими), выполняют отладку программы по своему варианту и получают исполнимую программу, готовую к выполнению, оформляют отчет по ЛР и защищают его.
2 Порядок выполнения лабораторной работы
-
Познакомиться с методическими указаниями и основными понятиями данной ЛР
-
Проработать порядок выполнения работы.
-
Создать консольные проекты для проверки примеров и выполнения задания ЛР.
-
Проверить в данном проекте примеры из методических указаний, выполнив их в отладчике в пошаговом режиме.
-
Написать программу задания ЛР по варианту, выданному преподавателем и отладить ее.
-
Продемонстрировать работу программы преподавателю в режиме отладчика по шагам и изменяемыми переменными.
-
Подготовить отчет по шаблону.
-
Защитить ЛР с предоставлением отчета и ответами на контрольные вопросы.
-
Для продвинутых студентов выполнить задания для дополнительных ( необязательных) требований и также отобразить их в отчете по ЛР.
3 Основные понятия
4 Разветвляющиеся вычислительные процессы.
Традиционно операторы выполняются последовательно (машина Тьюринга). Однако реально построить более или менее сложную программу, имеющую линейную последовательность выполняемых операторов невозможно. Для этого, помимо операторов выполняющих непосредственные вычисления (напомним – операторы присваивания значений) в языках программирования предусматриваются операторы управления или, более точно, операторы, управляющие последовательностью выполнения других операторов программы.
Возможные варианты изменения последовательности выполнения операторов следующие, они об условленны реальными потребностями программирования, а именно:
-
Необходимостью безусловного перехода к выполнению другого оператора, например завершающего программу (безусловный переход на метку).
-
Необходимость выбора альтернативных путей выполнения программы (условный оператор и оператор переключатель выполнения групп операторов).
-
Необходимость многократного повторения последовательности операторов ( операторы циклического повторения).
-
Вызов повторяющейся последовательности операторов, настраиваемых на заранее выделенные параметры (вызов процедур и функций).
Рассмотрим применительно к языку СИ предусмотренные в нем операторы управления.
5 Безусловный переход (goto)
Для безусловного перехода управления к другому оператору программы, не являющимся следующим по порядку, используется оператор goto. Место программы, в которое осуществляется передача управления, задается специальной меткой. Метка задается именем (идентификатором) и размещается перед оператором, к которому мы хотим перейти. Признаком метки является двоеточие, которое без пробела размещается за меткой. Формально это выглядит так:
goto <метка>;
............
<метка>: <оператор>;
Ниже приведен фрагмент программы, в котором используются метки (Lab0, Lab1) и операторы безусловной передачи управления goto. Оператор передачи управления на метку Lab0 закомментирован, так как при его использовании возникает бесконечный цикл – выполнение программы никогда не остановится.
// переход и метка
printf("Начало программы!!\n");
Lab0:
goto Lab1;
printf("Никогда не печатается!!!\n");
Lab1:
// goto Lab0; // Бесконечный цикл – закоментировано!
printf("Переходим сюда!!\n");
Операторы безусловной передачи управления используются в программах на СИ только в исключительном случае. Во-первых, доказано, что любой алгоритм можно реализовать без использования этого оператора, а, во-вторых, его применение может приводить к сложным для поиска ошибкам. В наших примерах, для организации циклов мы продемонстрирует использование этого оператора.
6 Ветвление и операторы ветвления (if - else)
Часто в процессе программных вычислений, в зависимости от логических условий, определяемых переменными программы, необходимо выполнять либо одни, либо другие действия. Характерным примером может служить программа, для вычисления корней квадратного уравнения. В зависимости от значения дискриминанта мы получаем либо действительные, либо комплексные значения корней уравнения (пример такой программы мы рассмотрим ниже).
Условный оператор (if - else) позволяет сделать проверку и обеспечивает ветвление в программе. В условном операторе проверяется логическое условие и, в зависимости от результата выполняется либо одна группа операторов (составной оператор в общем случае), либо другая группа операторов (составных операторов). Формализовано это может быть записано так:
if (<логическое условие>)
{ <составной оператор, выполняемый при истинности условия>}
[ else [ if ]
{ < составной оператор, выполняемый при ложности условия >} ]
;
Вторая часть условного оператора необязательна, в этом случае в программе выполняется составной оператор при истинности условия, в противном случае никаких действий просто не производится. Пример условного оператора для сравнения двух переменных, в котором по результатам сравнения выводится текст о том, какая из переменных больше:
// условный переход (максимум из двух переменных)
int a = 5;
int b = 3;
if ( a > b) // Простое условие
printf(" a>b !\n");
else
printf (" a<=b !\n");
Условные операторы могут быть вложены, внутри одного оператора, в теле составного оператора размещаются другие. Это показано на примере, в котором, после else, вставляется новый условный оператор:
if ( a > b)
printf(" a>b !\n");
else
{
if ( a < b) // вложенный условный оператор
printf (" a<b !\n");
else
printf (" a=b !\n");
};
Другой пример условного оператора:
if ( i > 5) // проверка условия
{ iMas[i] = 0; Flag = false;} // Старшим элементам массива присвоено значение 0
else
{ iMas[i] = iMasB[i]; Flag = true;}; // Младшим элементам массива - iMasB[i]
7 Переключатели (switch - case)
Переключатели (switch - case) позволяют сделать выбор из множества альтернатив. Здесь для краткости мы их не рассматриваем. С ними более подробно можно познакомиться в рекомендованной литературе. Кратко поясним следующее: в заголовке оператора (switch) проверяется целочисленное выражение (у нас просто - num); в зависимости от числа выполняется сравнение с константой указанной после частью выбора ( case); если значения совпадают, то выполняется группа операторов после case. Далее последовательно выполняются все операторы, которые расположены в данном переключателе (вне зависимости от сравнений case), если такое выполнение не прерывается с помощью оператора break. Если такой оператор (break) встретился в тексте, то далее выполняется оператор, который следует за переключателем. Если совпадений с константами case вообще не было, то при наличии выполняется группа операторов, которая следует за ключевым словом default, и проверки прекращаются. Ниже приводиться переключатель, в котором значение переменной num проверяется последовательно с константами 1, 2, 3.
// Переключатель
int num = 2;
switch ( num)
{
case 1:
printf("Выбор 1!\n");
break;
case 2:
printf("Выбор 2!\n");
case 3:
printf("Выбор 3!\n");
// break
break;
default:
printf("Выбор по умолчанию!!\n");
};
Результат работы данного текста такой (проанализируйте, почему так):
Выбор 2!
Выбор 3!
В методическом пособии [5] в разделе 8 посмотрите, пожалуйста, как оформляется в блок-схемах оператор переключатель.
8 Циклы (for, while, do)
Циклы – это фрагменты программы, которые для достижения результата нужно повторять многократно. Циклы содержат три основных элемента:
-
Начальные условия цикла, выполняемые однократно для начала цикла
-
Тело цикла – повторяющиеся операторы;
-
Условие, проверяющее завершение или продолжение циклических повторений.
В зависимости от того как в программе записаны эти элементы, в СИ предлагаются операторы цикла различного вида: повторить заданное число раз (for), повторить пока истинно условие (while) и выполнить, проверив условие продолжения(do - while). Во всех случаях начальные условия цикла могут быть заданы операторами предварительно. Условие продолжения записывается в самих операторах цикла. Тело цикла задается в виде составного оператора, который может включать и другие операторы цикла и директивы описания переменных. Такие циклы называются вложенными. Приведем примеры различных операторов цикла.
В операторе цикла for для управления циклом в его заголовке задаются три составляющие, разделенные знаком “;” – точка с запятой: задание начального значение переменной управления циклом (может даже включаться ее описание); проверка условия продолжения цикла и группа операторов, выполняемых после завершения каждого шага цикла перед проверкой условия. Приведенный ниже цикл (его тело – оператор печати) выполняется 5 раз для i от 1 до 5 включительно с шагом 1 (i++). Далее выполняется следующий оператор, расположенный после тела цикла.
// Цикл for
for (int i =1 ; i <= 5 ; i++ )
{
printf("Шаг цикла(for) - %d\n" , i);
};
В операторе цикла while сначала проверяется условие продолжения цикла, указанное в заголовке. Если условие истинно, то тело цикла выполняется, а затем снова проверяется условие продолжения. Когда устанавливается факт ложности условия, повторы тела цикла прекращаются. Приведенный ниже цикл выполняется 5 раз для k от 0 до 4. (Заметьте, последнее значение k равно 5-ти). Далее выполняется следующий оператор, расположенный после тела цикла.
// Цикл while
int k = 0;
while ( k < 5)
{
printf("Шаг цикла (while) - %d\n" , k);
k++;
};
В операторе цикла do сначала однократно (всегда) выполняется тело цикла, а затем проверяется условие продолжения цикла (while), указанное после тела. Если условие истинно, то тело цикла снова выполняется, а затем снова проверяется условие продолжения. Когда устанавливается факт ложности условия, повторы тела цикла прекращаются. Далее выполняется следующий оператор, расположенный после тела цикла. Приведенный ниже цикл выполняется 2 раза для i от 0 до 2, шагом 2. (Заметьте, последнее значение i равно 4-ти). Далее выполняется следующий оператор, расположенный после тела цикла.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















