Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка программ с циклическими вычислительными процессамиСодержание книги
Поиск на нашем сайте
(2 часа) Цель работы: Изучить написание программ на языке С, используя итерационные (циклические) методы, освоить основные операторы, поддерживающие работу с циклами (for, while, do... while ). Научиться писать программы, используя данные операторы. Теоретические сведения Каждый оператор С заканчивается оператором (;), который является пустым оператором. Циклы или итерационные процедуры позволяют выполнять отдельные операторы или блоки операторов (составные операторы {…}). Число повторов определяется выражением в скобках, значение которого сравнивается с Æ (Æ- прекращение цикла). Циклы бывают с проверкой значения выражения перед началом выполнения тела цикла (с предусловием), по окончанию выполнения тела (с постусловием) или внутри тела цикла. В С определено три вида операторов цикла: оператор цикла с предусловием - while, оператор цикла с постусловием do...while и оператор цикла for. Рассмотрим эти операторы детально: Цикл while имеет следующий формат: while (<выражение>) <оператор> Условие выполнения итерации в цикле while предварительно проверяется и в случае истинности выражения (не равно Æ) выполняются те операторы, которые описаны в теле цикла. В противном случае цикл заканчивается, и программа продолжает свое выполнение с того места, где закончилось тело цикла. Если тело цикла содержит несколько операторов, оно ограничивается операторными скобками: "{" и "}" и являетсясоставным оператором. Прервать выполнение цикла можно, используя операторы break, goto, return. Ниже продемонстрировано два примера работы с циклом while в виде фрагментов программ. Первый пример демонстрирует применение операторов while и break, перекрывающего цикл. Второй пример показывает использование цикла while для проверки ответа, который вводится с клавиатуры.
Оператор цикла do while() является циклом с постусловием. В этом случае тело цикла всегда выполнится хотя бы один раз. Формат оператора цикла следующий: do <оператор> while(<выражение>); Телом цикла может являться один или несколько операторов (составной оператор). Ниже приведены аналогичные примеры реализации цикла с постусловием.
Оператор цикла for является наиболее удобным и мощным средством организации циклических вычислений в С. Формат цикла for: for([<выражение1>];[<выражение2>];[<выражение3>]) <оператор> где:< выражение1> - производит инициализацию тех переменных, которые будут непосредственно изменяться в цикле, в частности, задаётся начальное значение переменной-счётчика <выражение2> -определяет условие выхода из цикла. При равенстве его значения Æ цикл прерывается; <выражение3> - это выражение задает изменение на каждом шаге переменных, проинициализированных в <выражении1 >. Можно задавать также изменение других переменных, не связанных с <выражением1>. Каждое из описанных выражений может отсутствовать. Оператор цикла for, заданный как for(;;){<тело_цикла>}, является бесконечным циклом. Алгоритм работы оператора цикла for (): 1 Вычисляется первое выражение (если оно присутствует). 2 Вычисляется второе выражение (если оно присутствует), проверяется условие окончания цикла :(<выражение 2>= =Æ “ Ложно ”) т.е. Если оно не равно Æ (“Истинно”) – происходит переход к пункту 3, иначе выход из цикла. 3 Исполняется тело цикла. 4 Вычисляется третье выражение, если оно присутствует. 5 Переход к пункту 2. Появление в любом месте тела цикла оператора continue - приводит к прекращению выполнения операторов в теле цикла 4 немедленному переходу к шагу 2. Выход из циклавозможен аналогично while с помощью операторов break, goto, return. Пример 1 (вариант 1) (вариант 2)
Для демонстрации гибкости оператора for перепишем пример в следующем виде (вариант 3): for(int i=100;i>=0; printf("\n%d",i), i - =2);
Пример
/* ЗАНЯТИЕ N 4 Разработал........... Cтрока символов записывается в обратном порядке с применением различных операторов организации циклов */ #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> # define N 23 main() {int t,b; char string[]="\"Инициализация строки\""; char m; clrscr(); // Цикл for -с предусловием printf("Вывод исходной строки\n"); for (t=0;t<N;t++) printf("%c ",string[t]); for (t=0,b=N-2;t<(N-1)/2;t++,b--) {m=string[t]; string[t]=string[b]; string[b]=m; } printf("\nВывод строки в обратном порядке\n"); for (t=0;t<N;t++) printf("%c ",string[t]); printf("\nВвод новой строки -y, нет-n:\t"); m=getche(); if(m!='n') new_str: scanf("%s",string); else printf("\n"); // Цикл while -с предусловием t=0; while(string[t]!='\0') {printf("%c",string[t]); t++; } printf("\nКоличество символов =%2d\n",t); // Цикл d0...while -с постусловием printf("Вывод строки в обратном порядке\n"); b=t-1;t=0; do {m=string[t]; string[t]=string[b]; string[b]=m; t++;b--; }while(t<b); printf("%s ",string); printf("\nВвод новой строки -y, нет-n:\t"); m=getche(); if(m=='y') goto new_str; //new_str -метка else getch(); } /* Вывод исходной строки " И н и ц и а л и з а ц и я с т р о к и " Вывод строки в обратном порядке " и к о р т с я и ц а з и л а и ц и н И " Ввод новой строки -y, нет-n: n "икортс яицазилаицинИ" Количество символов =22 Вывод строки в обратном порядке "Инициализация строки" Ввод новой строки -y, нет-n: y qwert12345 Количество символов =10 Вывод строки в обратном порядке 54331trewq Ввод новой строки -y, нет-n: n */
Ход работы
1 По индивидуальному заданию преподавателя составить программу с различными вариантами применения операторов цикла: while, do… while, for. Предусмотреть дополнительные возможности выхода из циклов (операторы break, goto). 2 Набрать программу на компьютере, выявить и устранить ошибки. 3 Ознакомиться с работой операторов цикла в языке С. 4 Получить результаты работы программы. 5 Оформить отчет и сделать выводы о проделанной работе, изучив контрольные вопросы по теме. Требования к содержанию отчёта приведены в лабораторной работе №1.
Индивидуальное задание к лабораторной работе №4 Найти сумму ряда y = , где a £ x £ b, D x = c. Варианты заданий приведены в таблице 4.1. Таблица 4.1 - индивидуальное задание
Контрольные вопросы для подготовки и самостоятельной работы 1 С помощью каких операторов можно досрочно завершать выполнение операторов цикла? 2 Какие выражения можно использовать в операторе цикла? 3 Как интерпретируются значения <выражений> операторов цикла? Какого типа могут быть эти <выражения>? 4 Можно ли записать следующие операторы: for (;;); while (Æ); do while(i--); for (; i && j; i++, j- -); for (int i, k;; i+=2) j++; k-=5;?: Объясните, почему можно или нельзя? 5 Объясните результат работы приведенных операторов. 6 В чём разница в работе операторов с предусловием и с постусловием? 7 Каково назначение выражений в операторе for? 8 Зачем используются составные операторы (операторные скобки)? 9 С помощью какого оператора можно прекратить выполнение текущей итерации в цикле? 10 Назовите порядок вычисления и интерпретации выражений в операторе for. 11 Объясните работу операторов в примерах. Лабораторная работа №5 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... else, условная операция (?:), оператор switch, оператор break, оператор goto (2 часа) Цель работы: Изучить реализацию в языке ветвящихся вычислительных процессов. Научиться писать программы, используя операторы: ветвления if...else, переключения switch в паре с оператором break, оператор перехода goto, тернарную условную операцию (?:). Теоретические сведения Разветвляющийся вычислительный процесс применяется в тех случаях, когда необходимо произвести выбор одного из вариантов дальнейших действий или вычислений в зависимости от текущих значений переменных и логических условий. Например, произвести вычисление по одной или по другой формуле. Оператор if…else (если…иначе) Формат оператора if…else приведен ниже: if(<выражение>) <оператор 1> [else <оператор2>] Действия оператора зависят от значения выражения. Реализация различных возможностей выполняется следующими способами. Если <выражение> в скобках не равно Æ(“Истинно”), то будет выполнятся <оператор1>. В противном случае, если указанное <выражение> равно Æ (“Ложно”), то будет выполняться <оператор2> в блоке else, если он присутствует. В теле оператора if может находиться один или более операторов. Если должны выполняться два или более операторов, их необходимо заключить в операторные скобки: "{" и " }". <Выражение > представляет собой запись логического условия или условий. Например: 1) if(i<=j)...; 2) if(size= =a)...; 3) if(t>10 && v<3)..; 4) if(a){…}else{…}; 5) if(!a){…}else{…}. В первом случае < выражение> истинно, если значение переменной i будет меньше или равно значению переменной j; во втором случае условие будет истинно, если значения переменных size и a будут равны; в третьем выражении истина будет соблюдаться, когда переменная t будет больше десяти “И” (&&) переменная v будет меньше трех. В четвертом случае первый блок будет выполняться при а не равном Æ, в противном случае выполняется блок после else. В пятом выполняются действия, обратные, указанные в четвертом варианте. Вместо переменных можно использовать выражения, которые будут непосредственно вычисляться, например: if ((i+2)/3 < 4*j)...выделение. Основные операции, которые ставятся между сравниваемыми величинами, следующие:
Основные логические операции, которые ставятся между сравниваемыми выражениями (если их два как в примере 3 или более), следующие: ! - операция "НЕ". Пример: if (!(num % 2))... // истина -если num нечетно. && - операция " И ". Пример 3 (см. выше). || - операция " ИЛИ ".Пример: if (i+n*2<l || i%2=0)... Детально логические операции будут рассмотрены в следующей лабораторной работе. Ниже приведен фрагмент программы, который выполняет следующие действия: запрашивает на ввод три числа и выдает в результате сравнения наименьшее из них. Оператор if…else допускает возможность вложенности при ветвлении, что обеспечивает гибкость реализации логики и компактность записи операторов. Пример ... printf ("Ввести три числа через пробел: "); scanf(" %d%d%d ", &a, &b, &c); if (a<=b && a<=c) printf (" \ n Наименьшее: %d", a); else if (b<=a && b<=c) printf (" \ n Наименьшее: %d", b); else printf (" \ n Наименьшее: %d", c); ...
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-26; просмотров: 387; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.148.107.193 (0.009 с.) |