- •Министерство образования и науки украины
- •Лабораторная работа № 1
- •Ход работы
- •Требования к отчетам
- •Отчёт должен содержать
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №2
- •Символы типа
- •Ход работы
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №3 Разработка программ со скалярными типами данных (2 часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №4 Разработка программ с циклическими вычислительными процессами
- •Теоретические сведения
- •Алгоритм работы оператора цикла for ():
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №5 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:), оператор switch, оператор break, оператор goto (2 часа)
- •Теоретические сведения
- •Условная тернарная операция (?:)
- •Оператор варианта switch
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №6 Операции с, их приоритеты и использование. Преобразование типов (4 часа)
- •Теоретические сведения
- •Приоритет операций и порядок выполнения (ассоциативность)
- •Преобразование типов
- •(Новый_тип) операнд
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №7
- •Синтаксис определения функций в с
- •Использование локальных и глобальных переменных в функциях. Вызов функции
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №8 Разработка программ с указателями (2 часа)
- •Теоретические сведения
- •Основные операции с указателями
- •Указатели и целые величины
- •Динамическое размещение указателей в памяти
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №9 Массивы. Селективная обработка массивов
- •Теоретические сведения
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №10
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №11
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 12
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 13
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 14
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 15 Использование указателей для работы с составными типами данных (2часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 16
- •Указатели как параметры функции
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №17
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 18
- •Использование администратора проектов
- •Lab18.Cpp- Основной файл проекта
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 19
- •Доступ к пикселям
- •Графические примитивы
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №20 Разработка программ с использованием классов (2 часа)
- •Теоретические сведения
- •Объявление и определение класса
- •Тело класса
- •Использование класса
- •Инкапсуляция. Управление доступом к членам класса
- •Классы памяти для объектов
- •Использование данных-членов класса
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №21
- •Инициализация объектов класса
- •Деструкторы
- •Вызов деструкторов
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №22 Использование наследования для создания иерархии классов (2 часа)
- •Теоретические сведения
- •"Друзья" классов (friend)
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №23 Использование виртуальных и указателей для работы с объектами классов (2 часа)
- •Теоретические сведения
- •Виртуальные базовые классы
- •Виртуальные деструкторы
- •Ход работы
- •Литература
- •Выходные данные
Условная тернарная операция (?:)
Синтаксис данной операции следующий:
<выражение1> ?<выражение2> : <выражение3>;
Результат операции будет равен <выражению2> в том случае, если <выражение1> истинно, в противном случае результат будет равен <выражению3>. Ниже показан пример реализации данной конструкции.
int result = (i<j) ? i : j ; // Переменной result присваивается наименьшее значение // (i или j), если i < j то i, иначе.
Оператор варианта switch
Оператор выбора варианта switch заменяет несколько операторов if…else. Обычно оператор switch используется тогда, когда требуется выбор и выполнение только одной последовательности операторов из нескольких возможных, хотя возможности оператора switch не ограничиваются этим случаем.
Синтаксис оператора switch:
switch (<выражение>)
{
case <константное_выражение_1>:
<оператор 1>
[case <константное_выражение_2>:
<оператор 2>]
...
[case <константное_выражение_n>
<оператор n>]
[default:
<оператор>]
}
После вычисления выражения типа int в ( в заголовке оператора switch) результат сравнивается последовательно с константными_выражениями, стоящими после зарезервированных слов case, которые вместе с константными_выражениями являются внутренними метками оператора, После константных_выражений обязательно ставится признак метки ":". Сравнение значения выражения начинается с самого верхнего константного_выражения и далее, пока не будет установлено их соответствие. Тогда выполняются операторы после соответствующей метки case, на которую передается управление. Для того чтобы прекратить последовательное выполнение операторов и выйти из оператора switch, необходимо после группы операторов, принадлежащих выбранному case, поставить оператор break. Если break отсутствует, то последовательно выполняются все операторы, а метки не учитываются.
Последовательность операторов, стоящих после слова default (умолчание), выполняется тогда, когда значение выражения не совпадает ни с одним константным_выражением. Пример показывает возможности оператора switch. Функция error_message выводит одно из трех сообщений в зависимости от значения, когда ошибки (параметр error_code).
Пример
void error_message(int error_code)
{ switch(error_code)
{ case 1: printf("\n сообщение 1"); break;
case 2: printf("\n сообщение 2"); break;
case 3: printf("\n сообщение 3"); break;
default : printf("\n неверный код ошибки");
}
}
Пример
/* ЗАНЯТИЕ N 5
Выполнил студент группы ......... Петров Ю.В.
Применение операторов if, switch, тернарной операции (? :)
на примере простого калькулятора. Более сложные условия
для оператора switch приведены в тексте программы */
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{ float a,b,rez;
int s,p,h;
char oper, flag=' ';
clrscr();
printf("\n Введите через пробел два числа: ");
scanf(" %f %f ", &a, &b);
printf(" Введите знак операции (+ - * /): ");
oper1: oper=getche();
switch(oper)
{ case '+': rez=a+b; break;
case '-': rez=a-b; break;
case '*': rez=a*b; break;
case '/': rez=a/b; break;
default : printf("\n Повторите ввод знака: ");
goto oper1;
}
printf("\n Результат операции: %5.2f\n",rez);
oper2: printf("\n Введите цифру в интервале (-9...+9) : ");
scanf("%d",&s); //Условия для оператора switch:
if(s<0) //если s=0, то - a++, p++, h++
{ s=abs(s); //если s=1, то - p++, h++
flag='-'; //если s=2, то - h++
} //если s=3, то - a--
else flag=' '; //если s=4, то - p--
if(s<=9) //если s=5, то - h--
//если s=6..7, то - a=1, p=1, h=1
switch(s) //если s=8, то - a=0, p=0, h=0
{case 0: a++;
case 1: p++;
case 2: printf("\tВы ввели %c%d",flag,s); h++; break;
case 3: printf("\tВы ввели %c%d",flag,s); a--; break;
case 4: printf("\tВы ввели %c%d",flag,s); p--; break;
case 5: printf("\tВы ввели %c%d",flag,s); h--; break;
case 6: case 7: printf("\tВы ввели %c%d",flag,s);
a=1; p=1; h=1; break;
case 8: printf("\tВы ввели %c%d",flag,s);
a=0; p=0; h=0; break;
default: printf("\tВы ввели %c%d \n\
на границе интервала",flag,s);
goto oper2;
}
else { printf("\tВы ввели число вне интервала (-9...+9)\n");
goto oper2;
}
printf("\n Результат switch: a=%5.2f p=%2d h=%2d\n",a,p,h);
getch();
if (p==0) {b=10; a=10;}
else {b+=b/p; a+=a/p;}
printf("\n Результаты вычислений: a=%5.2f b=%5.2f",a,b);
rez=(b<a)?b:a;
printf("\n Результат тернарной операции: res=%5.2f",rez);
getch();
return 0;
}
/*Введите через пробел два числа: 54 32
Введите знак операции (+ - * /): /
Результат операции: 1.69
Введите цифру в интервале (-9...+9) : -9
Вы ввели -9 на границе интервала
Введите цифру в интервале (-9...+9) : -6
Вы ввели -6
Результат switch: a= 1.00 p= 1 h= 1
Результаты вычислений: a= 2.00 b=64.00
Результат тернарной операции: res= 2.00 */