Файл: Лабораторная работа 1 Изучение среды разработки программ 3 Лабораторная работа 2 Исследование базовых типов данных языка Си 18.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 287

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Лабораторная работа № 1Изучение среды разработки программ

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

Лабораторная работа № 2Исследование базовых типов данных языка Си

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

Лабораторная работа № 3Исследование операций языка Си Цель занятия: Совершенствование навыков объявления, инициализации переменных и ввода и вывода информации Совершенствование навыков разработки программ в среде программирования MS Visual C++ Исследование возможностей языка С++ для реализации арифметических, логических и поразрядных операций над данными Время на выполнение работы: 4 часаПрограмма исследований: Исследование арифметических операций Исследование логических операций Исследование поразрядных операций Подготовка к выполнению работы: Изучить рекомендованную литературу (структура программы на языке высокого уровня, алфавит и элементарные конструкции языка Си, переменные и константы, стандартные типы данных, выражения и операции в языке Си). Изучить материал настоящего руководства. Материалы для подготовки к занятию: Конспект лекций. [1] стр. 31-38. Содержание отчета: Цели исследования. Программа работы. Листинги программ. Результаты исследований. Выводы по каждому пункту и общий вывод. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ Любое выражение языка состоит из операндов (переменных, констант и др.), соединенных знаками операций. Знак операции - это символ или группа символов, которые сообщают компилятору о необходимости выполнения определенных арифметических, логических или других действий. Операции выполняются в строгой последовательности. Величина, определяющая преимущественное право на выполнение той или иной операции, называется приоритетом. В таблице 3.1 перечислены различные операции языка Си. Их приоритеты для каждой группы одинаковы. Чем большим преимуществом пользуется соответствующая группа операций, тем выше она расположена в таблице. Приоритеты могут регулироваться с помощью круглых скобок. Таблица 3.1 – Операции языка Си Знак операции Назначение операции ( ) Вызов функции [ ] Выделение элемента массива . Выделение элемента записи -> Выделение элемента записи (тождественно(.)) ! Логическое отрицание Поразрядное отрицание - Изменение знака ++ Увеличение на единицу -- Уменьшение на единицу & Взятие адреса * Обращение по адресу (тип) Преобразование типа (т.е. (float) a) sizeof( ) Определение размера в байтах * Умножение / Деление % Определение остатка от деления + Сложение - Вычитание << Сдвиг влево >> Сдвиг вправо < Меньше, чем <= Меньше или равно > Больше, чем >= Больше или равно = = Равно != Не равно & Поразрядное логическое "И" ^ Поразрядное исключающее "ИЛИ" | Поразрядное логическое "ИЛИ" && Логическое "И" || Логическое "ИЛИ" ?: Условная (тернарная) операция = Присваивание +=, - =, *=, /=, %=, <<=,>>=, &=, |=, ^= Бинарные операции (например, а *= b(т.е. a = a * b) и т.д.) , Операция запятая Для исключения путаницы в понятиях "операция" и "оператор", необходимо отметить, что оператор - это наименьшая исполняемая единица программы. Различают операторы выражения, действие которых состоит в вычислении заданных выражений (например: a = sin(b)+c; j++;), операторы объявления, составные операторы, пустые операторы, операторы метки, цикла и т.д. Для обозначения конца оператора в языке С++ используется точка с запятой. Что касается составного оператора (или блока), представляющего собой набор логически связанных операторов, помещенных между открывающей ({) и закрывающей (}) фигурными скобками ("операторными скобками"), то за ним точка с запятой не ставится. Отметим, что блок отличается от составного оператора наличием определений в теле блока. Охарактеризуем основные операции языка С++. Сначала рассмотрим одну из них - операцию присваивания (=). Выражение вида х = у + z;присваивает переменной х значение суммы переменных у и z. Наличие « ; » в конце операции говорит о том, что записан оператор. На первый взгляд все просто. Но очень часто у начинающих программистов возникает путаница в понимании этого оператора. Это связано с тем, что с точки зрения математики следующие два выражения в общем-то эквивалентны:х = у + z;у + z = х;Но программирование – есть процесс записи на формализованном языке последовательности команд, которые необходимо выполнить для достижения конечного результата. Из этого аспекта и вытекает ключевая разница из этих, казалось бы, тождественных выражений.Для любого языка программирования операция присваивания « = » в обязательном порядке подразумевает следующий порядок ее выполнения. Справа от знака « = » задается источник присваивания (то, что присваивается), а слева – приемник (или то, чему присваивается источник): х = у + z; Приемник Источник Первым вычисляется результат источника, который затем присваивается приемнику, НО НЕ НАОБОРОТ! Именно поэтому выражение у + z = х не имеет смысла! Источником может быть любая последовательность операций. Приемником – только переменная.По этой же причине оператор у + z;тоже бессмыслен, так как результат операции никуда не сохранен! (За исключением использования механизма перегрузки операции в классах, который будет рассмотрен во втором семестре). Операцию "=" разрешается использовать многократно в одном выражении, например: x = y = z = 100;Различают унарные, бинарные итернарные операции. У первых из них один операнд, у вторых – два и у третьих - три. В языке Си выделяют три группы операций: арифметические операции; логические операции и операции отношения; операции с битами. 1. Арифметические операции задаются следующими символами (таблица 3.1): +, -, *, /, %, -, !, . Например: a = b + c;a = b - c;a = b * c;a = b / c;a = b % c; a = !b;a = -b;a = b;a = sizeof (b);Операции +, -, * интуитивно понятны и не нуждаются в объяснении.Операции увеличения и уменьшения на 1 (++ и --).Эти операции, называемые также инкрементом и декрементом, имеют две формы записи - префиксную, когда операция записывается перед операндом, и постфиксную. В префиксной форме сначала изменяется операнд, а затем его значение становится результирующим значением выражения, а в постфиксной значением выражения является исходное значение операнда, после чего он изменяется.Операция определения размера sizeof предназначена для вычисления размера объекта или типа в байтах, и имеет две формы:sizeof выражение или sizeof( тип )Операции отрицания (-, ! и ). Арифметическое отрицание (унарный минус-) изменяет знак операнда целого или вещественного типа на противоположный. Логическое отрицание(!) дает в результате значение 0, если операнд есть истина( не нуль), и значение 1, если операнд равен нулю. Операнд должен быть целого или вещественного типа, а может иметь также тип указатель. Поразрядное отрицание(), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении целочисленного операнда.Деление (/) и остаток от деления(%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется до целого числа, в противном случае тип результата определяется правилами преобразования. Операция остатка от деления применяется только к целочисленным операндам. Знак результата зависит от реализации.Бинарные операции +=, -=, *= и /= эквивалентны следующим: a += 3;a -= 3;a *= 3;a /= 3;  a = a + 3;a = a - 3;a = a * 3;a = a / 3; 2. Поразрядные операции задаются следующими символами (таблица 3.1): <<, >>, &, |, ^. Например:a = b << 3;a = b >> 2;a = b & c;a = b | c;a = b ^ c;Операции сдвига (<< и >>) применяются целочисленным операндам. Они сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом. При сдвиге влево (<<) освободившиеся разряды обнуляются. При сдвиге вправо (>)освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае. Операции сдвига не учитывают переполнение и потерю значимости.Примеры: int i=10, j, k ; /* i = 0000 1010 */k = i<<2 ; /* k = 0010 1000 */j = k<<1 ; /* j = 0101 0000 */i = j>>4 ; /* i = 0000 0101 */Битовые операции (&, |, ^) применяются только к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитового (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго, и т д.).При поразрядной конъюнкции, или поразрядном И (операция обозначается &) бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1.При поразрядной дизъюнкции, или поразрядном ИЛИ (операция обозначается |) бит результата равен 1 тогда, когда соответствующие биты хотя бы одного из операндов равен 1.При поразрядном исключающем ИЛИ (операция обозначается ^) бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов равен 1.Примеры: int i=6, j=5, k ; /* i = 0110, *//* j = 0101 *//* --------- */k = i&j ; /* k = 0100 */k = i|j ; /* k = 0111 */k = j^j ; /* k = 0011 */3. Логические операции и операции отношения задаются следующими символами (таблица 3.1): <, <=, >, >=, ==, !=, &&, ||.Логические операции (&&и ||). Операнды логических операций И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов. Преобразования типов не производятся, каждый операнд оценивается с токи зрения его эквивалентности нулю (операнд, равный нулю, рассматривается как false, не равный нулю - как true).Результатом логической операции является true или false. Результат операции логическое И имеет значение true только если оба операнда имеют значение true. Результат операции логическое ИЛИ имеет значение true, если хотя бы один из операндов имеет значение true. Логические операции выполняются слева направо. Если значение первого операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется. Результаты логических операций могут быть представлены следующим образом:Таблица 3.2 – Логические операции языка Си x y x && y x || y 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 1 Операции отношения (<, <=, >, >=, = =, !=) сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false (любое значение, не равное нулю, интерпретируется как true). Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения. Результаты операций отношения могут быть представлены следующим образом:Таблица 3.3 – Операции отношения языка Си  x y x < y x <= y x > y x >= y x = = y x != y 0 0 false true false true true false 0 1 true true false false false true 1 0 false false true true false true 1 1 false true false true true false 1>2>1   2   3   4   5   6   7   8   9   ...   22

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ Исследование арифметических операций для заданных исходных данных исследовать влияние типа данных на конечный результат для всех арифметических операций. Пример:typedef signed short int INT;int main(int argc, char* argv[]){INT a=12678, b=-19003, c;float x=a,y=b,z;char d=156,e=68,f;cout<<"\n------------------\nInteger: a="<c=a-b; cout<<"\n-: "<c=a*b; cout<<"\n*: "<c=a/b; cout<<"\n/: "<c=a%b; cout<<"\n%: "<c=-a; cout<<"\n-: "<c=!a; cout<<"\n!: "<c=a; cout<<"\n

Лабораторная работа № 4Применение управляющих инструкций языка для организации ветвлений в программе

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

Лабораторная работа № 5Исследование циклов

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

Лабораторная работа № 6Применение массивов и указателей для решения прикладных задач

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

Лабораторная работа № 7Исследование массивов и указателей

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

Лабораторная работа № 8Применение функций работы со строками для решения прикладных задач

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

Практическое занятие № 6Использование функций для работы с массивами

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

Практическое занятие № 7Программирование рекурсивных алгоритмов

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

Практическое занятие № 8Применение производных типов данных для решения прикладных задач

ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

ПРОГРАММА РАБОТЫ

Лабораторная работа № 5Исследование методов доступа к файлам данных

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

Лабораторная работа № 6Исследование связанных списков данных

МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

ЗАДАНИЕ НА ИССЛЕДОВАНИЕ

ЛИТЕРАТУРА

Лабораторная работа № 4
Применение управляющих инструкций языка для организации ветвлений в программе



Цель занятия:


  • Совершенствование навыков разработки программ в среде программирования MS Visual C++

  • Получение начальных навыков использования ветвлений в программах


Время на выполнение работы: 2 часа
Учебные вопросы:


  1. Применение оператора выбора

  2. Применение меток и оператора безусловного перехода

  3. Применение оператора множественного выбора


Подготовка к выполнению работы:


  1. Изучить рекомендованную литературу (структура программы на языке высокого уровня, алфавит и элементарные конструкции языка Си, переменные и константы, стандартные типы данных, выражения и операции в языке Си, операторы ветвления).

  2. Изучить материал настоящего руководства.


Материалы для подготовки к занятию:


  1. Конспект лекций

  2. [1] стр. 38-44.



ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ



Условный оператор обеспечивает выполнение или невыполнение некоторого опе­ратора или группы операторов в зависимости от результата выполнения заданного условного выражения. Оператор ifявляется одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Он может использоваться в одной из следующих форм:

  1. if (условное выражение) оператор1

  2. if (условное выражение) оператор1

else оператор2

  1. if (условное выражение)

{

оператор1.1

оператор1.2

. . .

оператор1.N

}

  1. if (условное выражение)

{

оператор1.1

оператор1.2

. . .

оператор1.N

}

else

{

оператор2.1

оператор2.2

. . .

оператор2.M

}

Если значение условного выражения истинно (отлично от нуля), то выполняется оператор1; если ложно (равно нулю), то для первой формы onepamop1 пропускается, а для второй формы после пропуска оператора 1 выполняется оператор2, стоящий после слова else. Иногда после проверки условия необходимо выполнить более чем один оператор, тогда требуемая для выполнения после ifчасть программы заключается в блок с помощью фигурных скобок {}.


Пример 1. Найти минимум из двух чисел хиу.

if(x < y) min = x;

else min = у;

cout<<"min = "<
Пример 2. Проверка правильности ввода переменной, которая может содержать числа от 1 до 31.

cin>>den;

if(den31) соut«"0шибка ввода";

Операторы if могут быть вложены друг в друга.

Пример 3. Отыскание максимума из трех чисел а, b, с.

if(a>b && a>c) max=a;

else if(b>c) max=b;

else max=c;

cout<<"max="<
Операция условия. В языке C++ имеется короткий способ записи оператора if ... else. Для этого используют операцию условия. Она имеет следующую форму записи:

(условное выражение) ? выражение! : выражение2

Если условное выражение истинно, то выполняется выражение1, если ложно - выражение2.

Пример 4. Найти максимум из двух чисел х и у.

max=(х>у)?х:у;

cout<<"max="<
Операцию условия удобно использовать в случаях выбора значения из двух возможных. Применение этой операции не является обязательным, так как тех же результатов можно достичь при помощи оператора if ... else. Однако получаемые при использовании операции условия выражения более компактны и их применение приводит к получению более компактного машинного кода.

Рассмотренные выше операция условия и условный оператор if ... else позволяют легко осуществить выбор между двумя вариантами. Однако иногда возникает необходимость осуществить выбор одного варианта из нескольких.

В этом случае самым простым (но только на первый взгляд!) может показаться способ использования множества вложенных операторов условного выбора с использованием меток и операторов безусловного перехода. При этом сама программа становится более сложной, а главное — менее доступной для понимания и анализа.

Метки в языке С++ реализуются посредством следующей нотации:

Имя_метки:

Обращение к метке осуществляется посредством ее вызова.

Оператор безусловного перехода goto используется совместно с метками:

goto Имя_метки;

Пример 5: фрагмент программы, реализующей простой калькулятор с использованием меток и операторов безусловного перехода:

. . .

cin>>a;

cin>>oper;

cin>>b;

if (oper==’+’) goto Lebel_1;

else if (oper==’-’) goto Lebel_2;

else if (oper==’*’) goto Lebel_3;

else if (oper==’/’) goto Lebel_4;

else goto Lebel_5;

Lebel_1:

c=a+b;

cout<

goto Lebel_6;

Lebel_2:

c=a-b;

cout<


goto Lebel_6;

Lebel_3:

c=a*b;

cout<


goto Lebel_6;

Lebel_4:

if(b==0)

{

cout<<”\nОшибка! Деление на ноль!”;

goto Lebel_5;

}

else

{

c=a/b;

cout<


goto Lebel_6

}

Lebel_5:

cout<<”\nНеверная операция! Повторите сначала!”;

Lebel_6:

...

Из этого примера очевидно, что за видимой сначала простотой реализации такого алгоритма стоит сложная структура программы, которая делает ее менее доступной для понимания и анализа.

Удобным средством для осуществления выбора из множества вариантов является оператор switch, который имеет следующую форму записи:

switch ( выражение )

{

case константа1: оператор1; break;

. . .

case константаN: операторN; break;

default: оператор; break;

};

Оператор выбора работает следующим образом. Сначала вычисляется выражение, стоящее в скобках после слова switch. Затем осуществляется переход на одну из меток, обозначенную словом case, значение константы после которой совпало со значением выражения в скобках после switch. Константа, стоящая после case, должна быть целого типа. Если проверяемое выражение не совпало ни с одной из проверяемых констант, то осуществляется переход на метку default (ее использование не является обязательным).

Опытные программисты для поиска ошибок часто включают default, даже когда учтены все возможные случаи.

Обычно действие каждой ветви заканчивается оператором break. Выполнение этого оператора приводит к выходу из оператора switch. Если break отсутствует, то управление передается следующему оператору, помеченному case или default. Подобным образом выполняются все последующие операторы внутри switch, пока не встретится оператор break.

Ключевые слова case и default не могут находиться за пределами блока switch.

Пример 6: фрагмент программы, реализующей простой калькулятор с использованием оператора switch.

. . .

cin>>a;

cin>>oper;

cin>>b;

switch (oper)

{

case ‘+’:

c=a+b;

cout<


break;

case ‘-‘:

c=a-b;

cout<


break;

case ‘*‘:

c=a*b;

cout<


break;

case ‘\‘:

if(b==0) cout<<”\nОшибка! Деление на ноль!”;

else

{

c=a/b;

cout<


}

break;

default: cout<<”\nНеверная операция! Повторите сначала!”;

};

Как видно из примера, анализируемая переменная oper помещается после switch. Ее значение сравнивается поочередно со значениями, стоящими после case. Если совпадение произошло, то выполняется соответствующая ветвь. Если не выявлено ни одного совпадения, выдается сообщение об ошибке.


ПРОГРАММА РАБОТЫ





  1. Применение оператора выбора

  • реализовать в среде программирования приведенные в материале методической разработки примеры 1-4;

  • отладить и запустить их.

  1. Применение меток и оператора безусловного перехода

  • реализовать в среде программирования приведенный в материале методической разработки пример 5 с использованием меток и операторов безусловного перехода;

  • отладить и запустить его.

  1. Применение оператора множественного выбора

  • реализовать в среде программирования приведенный в материале методической разработки пример 6;

  • отладить и запустить его.



ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ





  1. Заданы два целых числа A и B. Разработать программу проверки кратности числа A числу B.

  2. Разработать программу проверки корректности и правильности числового пароля. Примем, что пароль считается корректным, если содержит не менее 4, но не более 8 цифр. Сначала проводится проверка корректности пароля, а затем - его правильности. Пароль пользователь вводит с клавиатуры.

  3. Разработать программу вычисления корней квадратного уравнения.


Занятие 5

Лабораторная работа № 5
Исследование циклов



Цель занятия:

  • Совершенствование навыков разработки программ в среде программирования MS Visual C++

  • Совершенствование навыков в реализации циклических алгоритмов

  • Исследование способов задания условных выражений в циклах

  • Исследование способов прерывания циклов


Время на выполнение работы: 4 часа
Программа исследований:

  1. Исследование способов задания условных выражений в циклах

  2. Исследование способов прерывания циклов


Подготовка к выполнению работы:

  1. Изучить материал настоящего руководства и рекомендованную литературу (структура программы на языке высокого уровня, алфавит и элементарные конструкции языка Си, переменные и константы, стандартные типы данных, выражения и операции в языке Си, циклы и способы их прерывания).

  2. Практически освоить порядок работы на ПЭВМ в интегрированной среде разработки Borland C++ Builder.



Материалы для подготовки к занятию:


  1. Конспект лекций.

  2. [1] стр. 44-51.


Содержание отчета:

  1. Цели исследования.

  2. Программу работы.

  3. Алгоритмы программ

  4. Листинги программ

  5. Результаты исследований

  6. Выводы по каждому пункту и общий вывод.


МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ


Операторы цикла используются для организации многократно повторяющихся вычислений. Любой цикл состоит из тела цикла, то есть тех операторов, которые выполняются несколько раз, начальных установок, модификации параметра цикла и проверки условия продолжения выполнения цикла.

Один проход цикла называется итерацией. Проверка условия выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости вы­полнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу. Переменные, изменяющиеся в теле цикла и используемые при проверке условия продолжения, называются параметрами цикла. Целочисленные параметры цик­ла, изменяющиеся с постоянным шагом на каждой итерации, называются счет­чиками цикла. Начальные установки могут явно не присутствовать в программе, их смысл со­стоит в том, чтобы до входа в цикл задать значения переменным, которые в нем используются. Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение, как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto . Передавать управление извне внутрь цикла не реко­мендуется. Для удобства, а не по необходимости, в C++ есть три разных оператора цикла - while, do while и for.

Цикл с предусловием (while). Цикл с предусловием имеет вид:

while ( выражение )

{ оператор1;

. . .

операторN;};

Выражение определяет условие повторения тела цикла, представленного про­стым или составным оператором. Выполнение оператора начинается с вычисле­ния выражения. Если оно истинно (не равно
false), выполняется тело цик­ла. Если при первой проверке выражение равно false, цикл не выполнится ни разу. Тип выражения должен быть арифметическим или приводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Цикл с постусловием (do while). Цикл с постусловием имеет вид:

do

{

оператор1;

. . .

операторN;

}while ( выражение );

Сначала выполняется простой или составной оператор, составляющий тело цик­ла, а затем вычисляется выражение. Если оно истинно (не равно false), тело цик­ла выполняется еще раз. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управле­ния. Тип выражения должен быть арифметическим или приводимым к нему.

Цикл с параметром (for). Цикл с параметром имеет следующий формат:

for (инициализация; выражение; модификации)

{ оператор1;

. . .

операторN; }

Инициализация используется для объявления и присвоения начальных значений величинам, используемым в цикле. В этой части можно записать несколько опе­раторов, разделенных точкой с запятой (операцией «последовательное выполнение». Областью действия переменных, объявленных в части инициализации цикла, яв­ляется цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение определяет условие выполнения цикла: если его результат, приве­денный к типу bool, равен true, цикл выполняется. Цикл с параметром реализо­ван как цикл с предусловием.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую. Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запя­той надо оставить на своих местах!). Конструкция языка Си позволяет располагать эти элементы таким образом, чтобы их можно было сразу же обнаружить. Действия, связанные с инициализацией, проверкой и обновлением параметра цикла (или переменной цикла), образуют область управления циклом, состоящую из трех частей и заключенную в скобки. Каждая часть является выражением, причем точка с запятой отделяет одно выражение от другого. Например,