Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Практическая работа №3. Условный оператор и циклыСодержание книги
Поиск на нашем сайте
Цель работы: изучение синтаксиса условного оператора и циклов в С++. Задачи: 1. Изучить теоретический материал 2. Написать программу согласно индивидуальному варианту задания. 3. Ответить на контрольные вопросы. 4. Оформить отчет.
Теоретический материал Оператор if if (выражение) оператор_1; [else оператор_2;] Если выражение истинно, выполняется оператор_1, в противном случае – оператор_2. Если оператор_1 или оператор_2 – составные, то они заключаются с {}. Пример: if (a>0) x=1.5; else x=2.3; или x=(a>0)?1.5:2.3;
Оператор switch Оператор switch (переключатель) – оператор выбора варианта. switch (выражение) { case метка1: [оператор1] case метка2: [оператор2] ..... [default: оператор n] } Работа оператора: - вычисляется значение выражения (ключа): - это значение последовательно сравнивается в каждой меткой: - если значение ключа = значению метки, то выполняется оператор, соответствующий этой метке. Как выражения, так и метки должны иметь значения целого типа (включая тип char); метки должны быть константами или константными выражениями. Если некоторому значению выражения не соответствует никакая метка, управление передается оператору с меткой default (если такой имеется). В противном случае управление передается оператору, следующему за оператором switch. Операторы цикла К операторам цикла с предусловием в Си относится оператор while, с постусловием - do-while, к операторам цикла с параметром - оператор for. Оператор while while (выражение) оператор Оператор, образующий тело цикла может быть либо простым, либо составным. Выполнение оператора циклически повторяется до тех пор, пока выражение не станет ложным, или равным нулю. Приведенная ниже программа подсчитывает сумму цифр введенного числа N. Цикл while последовательно выделяет и суммирует каждую цифру исходного числа, начиная с последней; для выделения применяется операция взятия остатка (%) от деления целых чисел. При делении целых чисел любая дробная часть отбрасывается, поэтому после оператора N=N/10; исходное число уменьшается в 10 раз при каждом "обороте” цикла, пока, наконец, не станет равным нулю, после чего цикл завершается и на экран дисплея выдается значение переменной S, в которой накоплена сумма цифр числа. #inciude <stdio.h> main() { int N,S,Z; S=0; printf (“BBEДИ N \n"); scanf("%d",&N); while (N!= 0) { Z=N%10; // Остаток от деления числа N на 10 N=N/10; S=S+Z; } printf(”Сумма цифр=%d\n”,S); } ВВЕДИ N 32767 СУММА ЦИФР=25
Оператор do while В языке Си имеется также конструкция цикла с постусловием (условием на выходе), где истинность условия проверяется после выполнения каждой итерации цикла. Этот подход реализуется с помощью цикла do while do оператор while (выражение); Выполнение оператора повторяется до тех пор, пока выражение не станет ложным или равным нулю. Например: do scanf("%d", &number); while (number!= 20); do { ch = getchar(); putchar(ch); } while (ch!='\n'); Тело цикла do while всегда выполняется по крайней мере один раз, поскольку проверка осуществляется только после его завершения. Оператор for for (инициализация; проверка условия; коррекция) оператор В операторе for используются три выражения, управляющие работой цикла; они разделены символами "точка с запятой". Инициализирующее выражение вычисляется только один раз до начала выполнения какого-нибудь выражения цикла. Если проверяемое выражение оказывается истинным (или не равным нулю), то тело цикла выполняется один раз. Затем вычисляется значение корректируемого выражения, и значение проверяемого выражения определяется вновь. Тело цикла выполняется до тех пор, пока проверяемое условие не станет ложным, или равным нулю. Например: for (count = 1; count <= NUMBER; count++) printf("текст"); Пример программы, печатающей таблицу квадратов целых чисел: main() { int num; for (num = 1; num < = 6; num++) printf("%5d %5d \n", num, num*num): } Эта программа выводит на печать числа от 1 до 6 и их квадраты: Цикл for часто используется для реализации в программе временной задержки с целью согласования скорости реагирования (в данном случае замедления) машины с возможностями восприятия человека. for(n - 1; n <= 10000; n++); Этот цикл заставляет машину считать до 10000. Единственный символ «точка с запятой», расположенный во второй строке, информирует о том, что никаких других действий в этом цикле не производится. Такой уединенный символ «точка с запятой» можно представлять себе как «пустой» оператор, т. е. оператор, который не выполняет никаких действий. Можно даже опустить одно или более выражений (но при этом нельзя опустить символы «точка с запятой»). Необходимо только включить в тело цикла несколько операторов, которые в конце концов приведут к завершению его работы. Тело цикла for (;;) printf(" Я хочу сделать что-нибудь\n "); будет выполняться бесконечное число раз, поскольку пустое условие всегда считается истинным. Первое выражение не обязательно должно инициализировать переменную. Вместо этого, например, там мог бы стоять оператор printf(). Необходимо помнить только, что первое выражение вычисляется только один раз перед тем, как остальные части цикла начнут выполняться. for (printf("Запоминайте введенные числа!\n"); num == 6;) scanf("%d", &num); В этом фрагменте первое сообщение оказывается выведенным на печать один раз, а затем осуществляется прием вводимых чисел до тех пор, пока не поступит число 6. Операторы цикла в языке С++ взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае. Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы один раз, - например, если в цикле производится ввод данных. Оператором while удобнее пользоваться в тех случаях, когда, либо число итераций заранее неизвестно, либо очевидных параметров цикла нет, либо модификацию параметров удобнее записывать не в конце тела цикла. Оператор for предпочтительнее в большинстве остальных случаев. Однозначно - для организации циклов со счетчиками, то есть с целочисленными переменными, которые изменяют свое значение при каждом проходе цикла регулярным образом (например, увеличиваются на 1). Задача 1.1. Вычисление значения функции, заданной графически Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика (рис 1.1)
Запишем решение функции в виде формул:y= 0 x<-2 -x-2 -2<=x<-1 x -1<=x<1 -x+2 1<=x<2 0 x>=2 Запишем первый вариант программы:
#include <iostream.h> int main(){ float x,y; cout << "Введите значение аргумента" << endl; cin>>x; if (x<-2) y=0; if (x>=-2 && x<-1) y=-x-2; if (x>=-1 && x<1) y=x; if (x>=1 && x<2) y=-x+2; if (x>=2) y=0; cout << "Для х=" << x << " значение функции y=" << y << endl; }
Рисунок 1.1 - Функция для задачи 1.1
При работе приведенной выше программы всегда выполняются один за другим все пять условных операторов, при этом истинным оказывается только одно условное выражение и, соответственно, присваивание значения переменной у выполняется один раз. Запишем условные операторы так, чтобы уменьшить количество проверок if (x<-2) y=0; else if (x>=-2 && x<-1) y=-x-2; else if (x>=-1 && x<1) y=x; else if (x>=1 && x<2) y=-x+2; else y=0; Приведем вариант программы с использованием функций ввода вывода в стиле С: #include <stdio.h> int main(){ float x,y; printf ("Введите значение аргумента:\n"); scanf("%f", &x); if (x<-2) y=0; if (x>=-2 && x<-1) y=-x-2; if (x>=-1 && x<1) y=x; if (x>=1 && x<2) y=-x+2; if (x>=2) y=0; printf(" Для х=%5.2f значение функции y=%5.2f\n",x,y); } Задача 1.2. Клавиши курсора Написать программу, определяющую, какая из курсорных клавиш была нажата.
В составе библиотеки есть функция getch(), возвращающая код нажатой пользователем клавиши. В случае нажатия функциональных или курсорных клавиш эта функция возвращает 0 либо 0хЕ0 (в зависимости от компилятора), а ее повторный вызов позволяет получить расширенный код клавиши. #include <stdio.h> #include <conio.h> int main(){ int key; printf("\n Нажми на одну из курсорных клавиш:\n"); key=getch(); key=getch(); switch(key){ case 77: printf("стрелка вправо\n"); break; case 75: printf("стрелка влево\n"); break; case 72: printf("стрелка вверх\n"); break; case 80: printf("стрелка вниз\n"); break; default: printf("не стрелка \n"); } return 0; }
Задача 1.3. Написать программу печати таблицы значений функцииy= t x<0 tx 0<=x<10 2t x>=10
для аргумента, изменяющегося в заданных пределах с заданным шагом. Если t>100, должны выводиться целые значения функции.
#include <Stdio.h> #include <math.h> int main(){ double xn,xk,dx,t,y; printf("Enter xn,xk,dx,t \n"); scanf("%lf %lf %lf %lf",&xn,&xk,&dx,&t); printf("----------------------------\n"); printf("| x | y \n"); printf("----------------------------\n"); double x=xn; while (x<=xk) { if (x<0) y=t; if(x>=0 &&x<10) y=t*x; if (x>=10) y=2*t; if (t>100) printf ("|%9.2lf |%9d |\n",x,(int)y); else printf ("|%9.2lf |%9.2lf |\n",x,y); x+=dx; } printf("----------------------------\n"); return 0; }
Вот та же программа с использованием оператора for: #include <stdio.h> #include <math.h> int main() { double xn,xk,dx,t,y; printf("Enter xn,xk,dx,t \n"); scanf("%lf %lf %lf %lf",&xn,&xk,&dx,&t); printf("----------------------------\n"); printf("| x | y \n"); printf("----------------------------\n"); for (double x=xn;x<=xk; x+=dx) { if (x<0) y=t; if(x>=0 && x<10) y=t*x; if (x>=10) y=2*t; if (t>100) printf ("|%9.2lf |%9d |\n", x, (int)y); else printf ("|%9.2lf |%9.2lf |\n", x, y); } printf("----------------------------\n"); return 0; } Индивидуальные варианты заданий
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая выводит таблицу квадратов первых десяти целых положительных чисел.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая вычисляет сумму первых целых положительных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая вычисляет сумму первых n целых положительных четных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая выводит таблицу степеней двойки от нулевой до десятой.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая вычисляет факториал введенного с клавиатуры числа. (Факториалом числа n называется произведение целых чисел от 1 до n. Например, факториал 1 равен 1, 8 — 40320).
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая вычисляет среднее арифметическое вводимой с клавиатуры последовательности чисел. Количество чисел должно задаваться во время работы программы.
где a, b, c – действительные числаЗначения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Напишите программу, которая выводит на экран таблицу умножения, например, на 7.
где a, b, c – действительные числа Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел.
где a, b, c – действительные числа. Значения a, b, c, Хнач, Хкон, dX ввести с клавиатуры.
Написать программу, которая вычисляет сумму первых целых положительных целых чисел. Количество суммируемых чисел должно вводиться во время работы программы.
Контрольные вопросы 1. Синтаксис условного оператора. 2. Синтаксис оператора множественного выбора. 3. Цикл с предусловием. 4. Цикл с постусловием. 5. Цикл с заданным количеством повторений.
Содержание отчета 1. Титульный лист 2. Цели, задачи работы 3. Индивидуальное задание 4. Блок-схема алгоритма (для каждой задачи) 5. Листинг программы(для каждой задачи) 6. Результат выполнения программы – скриншот (для каждой задачи) 7. Ответы на контрольные вопросы
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-04-20; просмотров: 207; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.179.30 (0.008 с.) |