Скачать 382.32 Kb.
|
Выполнение лабораторной работы 1. Составьте алгоритм решаемой задачи.
Контрольные вопросы 1. Что собой представляет среда программирования С++.
Лабораторная работа №2 Изучение операторов цикла Цель работы
ОБЩИЕ СВЕДЕНИЯ Циклы используют в случае, если некоторые действия надо выполнить многократно, каждый раз с новыми данными. Операторы тела цикла определяют эти действия. Количество их повторений определяется в зависимости от типа оператора заголовка цикла. Начало выполнения цикла может производиться только через операторы заголовка цикла. Завершение цикла любого типа может быть: - в соответствии с условиями, определенными заголовком цикла; - по оператору goto - перехода на оператор вне тела цикла; - по оператору break - выхода за цикл; - по оператору return - выхода из функции. В языке Си++ есть операторы цикла for, while и do-while. Если количество повторений заранее известно, то целесообразно использовать оператор for, а если количество повторений определяется условиями, то операторы while или do-while. В языке Си++ допускаются вложенные циклы (циклы в цикле) любого типа. FOR – оператор цикла с параметром Оператор for - это оператор цикла с параметром (с шагом) и с предусловием, так как анализ конца цикла производится до начала выполнения тела цикла. Оператор for - наиболее общая и гибкая форма цикла в языке Си++. Он используется, если заранее известно начальное значение параметра или параметров цикла, условие его завершения и коррекция - выражение (выражения) для изменения параметра (параметров) цикла. Форма оператора цикла for for ( сп. 1 ; сп. 2 ; сп. 3 ) - заголовок цикла; S ; - тело цикла, где сп. 1 - список операторов, инициирующих начальные значения; выполняется 1 раз, до начала выполнения тела цикла; как правило, используется для установки начальных значении параметров цикла; сп. 2 — список операторов и выражений для проверки конца цикла; конец цикла обычно определяется на основе анализа значения параметра цикла; выполняется перед каждым выполнением тела цикла; если значение последнего выражения сп.2 истинно (!= 0), тело цикла выполняется, а если ложно (= 0) - завершается; сп. 3 — список операторов и(или) выражений для корректировки параметров цикла; выполняется, после каждого выполнения тела цикла; S - простой или составной оператор тела цикла; составной - для выполнения более одного оператора тела цикла. Все три списка в заголовке цикла необязательны. Основные правила выполнения цикла for: 1) выполняется сп. 1 один раз, до начала выполнения тела цикла; 2) выполняются операторы и выражения сп. 2; производится анализ полученного значения последнего выражения сп. 2: а) если оно истинно (= 0), то тело цикла выполняется; б) если оно ложно (= 0), то выполнение цикла завершается; если оно ложно до первого выполнения тела цикла, то тело цикла не выполняется ни разу; 3) после выполнения тела цикла выполняются операторы и выражения сп. 3 и осуществляется переход к п. 2 данного перечня правил; 4) появление в любом месте тела цикла оператора continue дает переход к выполнению сп. 3, т. е. к п. 3 данных правил; 5) появление в любом месте тела цикла оператора break вызывает переход к оператору, следующему после оператора цикла; после выхода из цикла по оператору break или goto параметр цикла сохраняет значение, при котором произошло завершение выполнения цикла; 6) после нормального завершения цикла (не по goto за цикл) значение параметра цикла равно значению, которое привело к завершению выполнения цикла. Например, если пределы изменения значений параметра цикла определены в виде for ( i = 1; i 5; i++ ), то для значений i от 1 до 4 выполняются операторы тела цикла, а при значении i = 5 выполнение цикла завершается; 7) если нет сп. 1 и(или) сп. 2, то их ; должны остаться в операторе заголовка цикла; например, for ( ; ; ) for ( i = 1; ; i++ ) - это бесконечные циклы, из которых надо выйти другими способами, например, оператором, break, return или goto на метку вне цикла. Пример оператора заголовка цикла: for ( i = 0; i < 20; 1++ ) где i - параметр заголовка цикла, изменяется от 0 до 19 с шагом 1; в соответствии с этим заголовком тело цикла выполнится 20 раз, если выполнение цикла не будет завершено другим способом. С помощью сокращенной формы оператора for можно реализовать в программе временную задержку процесса выполнения программы. Например, для ограничения времени ожидания ответа пользователя. Пример цикла с пустым оператором S: for (n = 1; n = 10000; n++); Этот цикл считает значения n от 1 до 10000, ничего больше не делая. Символ ; после заголовка цикла - это пустой оператор. Любой список заголовка цикла может содержать операцию ‘запятая’, т. е. несколько операторов и выражений, разделенных запятыми, которые выполняются слева направо. Таким образом, оператор цикла for может иметь как бы несколько параметров цикла, изменяющихся синхронно (одновременно). Чаще всего списки сп. 1 и сп. 3 - операторы присваивания или обращения к функциям, а сп. 2 содержит выражение отношения или логическое выражение. Если нет сп. 1 и сп. 3, то параметр цикла как бы не рассматривается. Если нет сп. 2 (от него остается только ;), то считается, что условие проверки конца цикла истинно, при этом цикл не может быть завершен по условию конца цикла в заголовке цикла (бесконечный цикл), а может быть завершен только по оператору goto (переход на оператор вне тела цикла), с помощью операторов break или return. Например, определить сумму четных чисел от 1000000 до 0. Переменная i - параметр цикла. После каждого выполнения тела цикла ее значение изменяется на шаг параметра цикла, равный -2. По завершении выполнения цикла значение параметра цикла i = 0. Текст цикла for ( s = 0.0, i = 1000000; i> = 2; i -= 2 ) s += i; Пример. Дано n. Определить и вывести значения х = 2 - степени двойки от i = 1 до n(n > 1) по 5 значений в строке. #include #include void main() { int i, n; long x; - clrscrf); - очистить экран printf(“Введите число - максимальную степень двойки\n”); scanf (%d, &n); printf (“\n n = %d\n”, n); //- ввод и вывод n for ( x = i = 1; i <= n; i++ ) { x = 2; printf ( “ %51d” , x); //- определение и вывод х if ( i % 5 == 0 ) printf (“\n”); } // - переход на следующую строку printf (“n\Для завершения программы нажмите любую клавишу\n”) getch(); //- нажать любую клавишу } В приведенных выше примерах оператор for языка Си++ аналогичен подобным операторам других языков. Но, кроме того, for языка Си++ имеет ряд других возможностей. Вот некоторые из них. 1) Для изменения значения параметра цикла (шага) можно использовать любые значения и операции; примеры заголовков цикла, где коррекция параметра цикла производится по формуле: for ( п = 1000; п > 0; п— ) // n = n - 1 for ( n = 1000; п > 0; п -= 13 ) // n = n - 13 for ( х = 0; х <= 200; х += 1.5 ) // х = х + 1.5 for ( х = 1000; х > 0; х -= 3.7 ) // х = х - 3.7 for ( х = 1; х <= 2000; х* = 1.2 ) // х = х * 1.2 2) Можно использовать и изменять значения параметра цикла, являющиеся символами; например, for ( с = 'а'; с = 'z'; с++ ) putch (с) ; При выполнении этого цикла будут выведены все буквы латинского алфавита от а до z, для представления которых используется отрезок натурального ряда чисел. 3) В сп. 1 можно использовать оператор-запятую, т. е. несколько операторов присваивания, разделенных запятыми. Например, вычислить сумму значений i для i = 1 -;- 100. for { s = 0.0, i = 1; i< = 100; i++ ) s += i ; В примере устанавливаются начальные значения переменных s и i; параметром цикла является i. 4) В качестве сп. 3 также можно использовать один или несколько операторов и выражений для изменения переменных и(или) параметров цикла. Например for ( х = 1; у <= уmах; у = 5 * х + 10, х++ )(...) В заголовке цикла примера устанавливается начальное значение х, а на конец цикла проверяется значение у, а не х; в сп. 3 изменяются значения и у и х; 5) Параметры, входящие в сп. 2 и сп. 3, можно изменять при выполнении операторов тела цикла. Например, for ( n = 1; < 100; n += dn ) - заголовок цикла. После нескольких итераций можно с помощью if внутри тела цикла проанализировать необходимость изменения и изменить значение dn. Например, оператором if ( а > b && n > 10 ) dn = dn * 2; Так, в случае необходимости можно изменить значения переменных cп.2 (значения, по которым производится анализ конца цикла) в теле цикла for ( а = 2, п = 3; а <= b; ,) ( ... а = а * n; b = 3 * а;...} В примере n остается равным 3, а значения а и b изменяются в теле цикла и анализируются для определения конца цикла. 6) Сп. 1 необязательно должен инициировать параметр цикла. Там может стоять, например, оператор вывода, который выполняется 1 раз, до начала выполнения тела цикла. Пример программы, использующей в качестве сп. 1 оператор вывода. Из программы на экран выводится предложение “Угадайте число” до начала выполнения тела цикла, и программа переходит в режим ожидания ввода числа с клавиатуры. После ввода числа оно проверяется на совпадение с заданным выражением сп. 2 заголовка цикла for. Процесс повторяется до тех пор, пока не будет введено заданное значение = 6). После этого выведется второе сообщение “Это то, что надо” #include #include void main() { int n = 0; clrscr(); //- очистить экран for ( printf (“\n Угадайте число\n”); n != 6; ) scanf (%d, &n ); //- очередной ввод числа printf ( “ %d - Это то, что надо!\n”, n ) ; printf (\nДля завершения программы нажмите любую клавишу\n”); getch(); \\ - нажать любую клавишу } 7) С помощью оператора continue можно пропустить выполнение одного и более операторов тела цикла и перейти к выполнению сп. 3. Например, for ( i = 1; i < n; i++ ) { if (a[i] == 0) continue; b = b a[i]; ... } 8) С помощью оператора break можно закончить выполнение цикла и перейти к выполнению оператора, следующего после оператора цикла. 9) Гибкость использования цикла for увеличивает операция ‘запятая’. Она позволяет включать в его заголовок несколько инициализирующих или корректирующих выражений. Именно в операторах заголовка цикла for операция ‘запятая’ используется особенно часто. Однако включение в заголовок цикла for посторонних вычислений считается плохим стилем; лучше заголовок цикла for использовать только для операций по управлению циклом. Пример заголовка цикла, с помощью которого синхронно изменяются два разных параметра цикла, i и х for (i = 1, х = xn; i <= 20; i++, x += dx) ( ... ) В этом операторе заголовка цикла for синхронно изменяются значения i и х. Значение i определяет условие конца цикла. 10) Операцию ‘запятая’ можно использовать в операторе тела цикла. Например, for (i = 1; i <= 5; i++ ) j = i, a += i, printf(“ j= %d a = %f\n”, j, a ); 11) В операторах заголовка цикла можно использовать параметр перечисляемого типа. В примере приведена программа для вывода двоичного представления целых чисел. В программе используются операторы for и операции сдвига. Переменные программы : - i - номер анализируемого разряда числа k; - j - значение i-разряда числа, равное 1; - k - десятичное число для вывода его в двоичном представлении. В программе значение j изменяется от 214 до 2. После каждого выполнения тела цикла значение j уменьшается вдвое с помощью операции сдвига числа вправо на 1 разряд. Анализ значения j-го разряда числа k производится с помощью выражения k & j. Результатом поразрядного побитового логического умножения k на j могут быть только значения: - j - если i-разряд числа k равен 1 или - 0 - если i-разряд числа k равен 0. Анализ результата позволяет вывести значение i-разряда двоичного представления числа k: - 1 - если результат k & j истинно, т. е. i-й разряд числа k равен 1 и - 0 - если результат k & j ложно, т. е. i-й разряд числа k равен 0. #include FILE *f; // - для файла результатов void main() { int i, j, k; f = fopen(“16.rez”, “w”); // - для вывода в файл f = fopen (“con”, “w”); // - для вывода на экран clrscr(); // - очистить экран fprintf(f, “ Работа со сдвигами\n”); fprintf (f, “ Двоичное представление целых чисел:\n”); for (k = 1; k <= 10; k++) // - перебор значений k { j = 16384; // j = 214 fprintf (f, “k = %2i =” , k ); 'for (i = 15; i >= 1; i—) // - перебор номеров разрядов k { if (k & j) // - анализ i-разряда числа k fprintf (f, “1”); // - обнаружена 1 else fprintf(f, “0”); // - обнаружен О j = j » 1; //- сдвиг j на 1 разряд вправо } // - конец блока оператора for i fprintf(f, “\n”); // - переход на следующую строку } // - конец блока оператора for k printf (“\nДля завершения программы нажмите любую клавишу\n”); getch(); // - нажать любую клавишу } Результаты выполнения программы Работа со сдвигами Двоичное представление целых чисел k = 1 = 000000000000001 k = 2 = 000000000000010 k = 3 = 000000000000011 k = 4 = 000000000000100 k = 5 = 000000000000101 k = 6 = 000000000000110 k = 7 = 000000000000111 k =. 8 = 000000000001000 k = 9 = 000000000001001 k = 10 = 000000000001010 |
«Разработка алгоритмов и программирование на языке Pascal» Лабораторный практикум содержит методические указания к выполнению лабораторных работ по алгоритмизации и программированию на языке... | Конспект урока на тему Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | ||
Конспект урока по русскому языку Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | Урок речеведения в 6 классе №144-145 «Соединение в тексте разных типов речи» Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | ||
Использование электронных образовательных ресурсов в процессе обучения... Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | Программа по формированию навыков безопасного поведения на дорогах... Н 73 Физика. Пособие к выполнению лабораторных работ м-3, м-4, м-10. Часть 13. М.: Мгту га, 2005. 28 с | ||
Сборник методических указаний для студентов по выполнению лабораторных работ дисциплина «химия» Методические указания для выполнения лабораторных работ являются частью основной профессиональной образовательной программы Государственного... | Конспект урока по информатике Тема урока: «Язык програмирования Паскаль.... Развивать навыки программирования на алгоритмическом языке высокого уровня на примере языка Паскаль | ||
Ветвление на языке Паскаль Вести понятие условного оператора на языке программирования Паскаль, обучить приемам построения простых вычислительных алгоритмов... | Учебно-методическое пособие к выполнению выпускных квалификационных работ Смирнова И. В., Кашенцева Н. П. Финансы и кредит: Учебно-методическое пособие к выполнению выпускных квалификационных работ. 2-е... | ||
Практикум по физической химии на видео. Выполнение лабораторных работ... На её фоне текст: «Пособие разработано в рамках реализации Программы развития ниу-нгу». Затем название работы | Методические указания к выполнению лабораторных работ Ставрополь Учебное пособие предназначено для студентов высших учебных заведений, оно может быть использовано также преподавателями вузов, учителями... | ||
Рабочая программа по дисциплине с 3 «Технологии и методы программирования» Цель преподавания дисциплины: Целью изучения дисциплины «Технологии и методы программирования» является изучение современных технологий... | Методические указания по выполнению лабораторных работ Федеральное государственное образовательное учреждение высшего профессионального образования | ||
Методическое пособие по выполнению курсовой работы по курсу «К омпьютерная графика» Методические указания предназначены для обучающихся по специальности 031601 «Реклама» факультета специального профессионального образования.... | Тезисы доклада Черчаго А. Я., Ярошевский А. Н., Кравченко А. Б. Финаев В. И. 1 «скэнар-терапия» Календарный план отражает содержание лекций, лабораторных работ и индивидуальных работ. В соответствии с умк осуществляется подготовка... |