на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Операторы языка Си
p align="left">}

case 3: b-=c; break;

:

}

Операторы цикла

Оператор цикла for

Оператор for - это наиболее общий способ организации цикла. Он имеет следующий формат:

for ( выражение 1 ; выражение 2 ; выражение 3 ) тело

Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла.

Схема выполнения оператора for:

1. Вычисляется выражение 1.

2. Вычисляется выражение 2.

3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.

Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным.

Пример:

int main()

{

int i,b;

for (i=1; i<10; i++) b="i*i;" return 0; }

В этом примере вычисляются квадраты чисел от 1 до 9.

Некоторые варианты использования оператора for повышают его гибкость за счет возможности использования нескольких переменных, управляющих циклом.

Пример:

int main()

{

int top, bot;

char string[100], temp;

for ( top=0, bot=100 ; top < bot ; top++, bot--)

{

temp=string[top];

string[bot]=temp;

}

return 0;

}

В этом примере, реализующем запись строки символов в обратном порядке, для управления циклом используются две переменные top и bot. Отметим, что на месте выражение 1 и выражение 3 здесь используются несколько выражений, записанных через запятую, и выполняемых последовательно.

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

Пример:

for (;;)

{

...

... break;

...

}

Так как согласно синтаксису языка С оператор может быть пустым, тело оператора for также может быть пустым. Такая форма оператора может быть использована для организации поиска.

Пример:

for (i=0; t[i]<10 ; i++) ;

В данном примере переменная цикла i принимает значение номера первого элемента массива t, значение которого больше 10.

Оператор цикла с предусловием while

Оператор цикла while называется циклом с предусловием и имеет следующий формат:

while (выражение) тело ;

В качестве выражения допускается использовать любое выражение языка Си, а в качестве тела любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая:

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

Оператор цикла вида

for (выражение-1; выражение-2; выражение-3) тело ;

может быть заменен оператором while следующим образом:

выражение-1;

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

{

тело

выражение-3;

}

Так же как и при выполнении оператора for, в операторе while вначале происходит проверка условия. Поэтому оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять.

Внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов.

Оператор цикла с постусловием do-while

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

do тело while (выражение);

Схема выполнения оператора do while :

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break.

Операторы while и do while могут быть вложенными.

Пример:

int i,j,k;

...

i=0; j=0; k=0;

do { i++;

j--;

while (a[k] < i) k++;

}

while (i<30 && j<-30);

Практические задания

Убираем оператор goto

Запишите без оператора goto следующий фрагмент

m: if(A)

{

B;

goto m;

}

Упрощаем логические выражения

Перепишите операторы условного перехода так, чтобы их условия не содержали логических операций.

if(A && B || !C)

D;

else if(B || C)

E;

else

F;

Взаимозаменяемость циклов

Вычислить факториал
n! тремя способами с помощью трех видов цикла.

Компактный for

Запишите двойной цикл

for (int i = 0; i<5; i++)

{

printf(“\n”);

for (int j = 0; j<4; j++)

printf(“%3d”, i*j);

}

с помощью одинарного цикла с теми же счетчиками i, j.

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

Замените оператор

if(A)

B;

Эквивалентным оператором цикла for.

Лабораторные задания

Линейное уравнение

Операторы if-else if, switch. Написать программу, которая решает линейное уравнение a • x + b = 0. Использовать операторы if-else if. Логические выражения в условиях этих операторов не должны содержать логических операций && и ||. Предусмотреть четыре возможных исхода при решении уравнения:

- нет решения,

- найдено единственное решение,

- любое число является решением,

- решение единственное, но не входит в диапазон типа переменной x.

В операторе if-else if определить некоторую переменную flag, которая принимает четыре значения, соответствующих возможному исходу решения. Вывод текстовой информации с результатами решения организовать с использованием оператора switch, условие которого содержит flag. Выход из программы должен быть единственным.

Организовать проверку корректности данных при вводе коэффициентов a и b.

Ввод русской буквы

Операторы
while, switch. С клавиатуры вводятся символы. После анализа символа программа выводит на экран одно из следующих сообщений:

- русская гласная буква такая-то,

- русская согласная буква такая-то,

- английская буква такая-то,

- символ псевдографики такой-то,

- другой символ.

В программе вместо числовых констант вида 128 использовать символьные константы вида `А'. Обработать символы с расширенным кодом. Выход из программы происходит по нажатию клавиши Escape.

Таблица умножения

Использование двойного цикла
for. В программе вводятся шестнадцатеричные числа m и n, после чего на экран выводится таблица умножения в шестнадцатеричной системе счисления следующего вида

Таблица 1.

1

2

n

1

2

m

Из таблицы должно быть видно, что например, 112 = 121, 122 = 144, 132 = 169.

При больших размерах таблицу целесообразно выводить в файл. Это можно сделать из командной строки DOS с помощью команды

tabl.exe >> tabl.txt

ASCII-таблица

Использование двойного цикла
for. Вывести на экран ascii-таблицу без управляющих символов в следующем виде

Таблица 2.

2

3

E

F

0

1

2

F

Символ с шестнадцатеричным кодом 0xST находится на пересечении столбца S и строки T.

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

Машинный ноль и машинный эпсилон

Операторы
while. Найти машинный ноль и машинный эпсилон для вещественных типов данных: float, double, long double.

Сравнить с теоретическими результатами и со справочной информацией в Help оболочки.

Учесть, что в арифметических выражениях вида 1+x>1 компилятор использует повышенную точность во внутренних вычислениях. Поэтому значение 1+x необходимо запомнить во вспомогательной переменной того же типа, который имеет переменная x.

Дополнительные задания

1. Найдите сумму цифр целого числа типа unsigned long. Число вводится с клавиатуры.

2. Найдите вероятность счастливого шестизначного трамвайного билета. У такого билета сумма первых трех цифр равняется сумме трех последних.

3. С клавиатуры вводится число типа int. Найдите сумму битов этого числа.

4. Вывести на экран все простые числа до N включительно. Число N имеет тип unsigned int и вводится с клавиатуры.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си: Задачи по языку Си. М.: Финансы и статистика, 1985. - 192с.

2. Керниган Б., Ритчи Д. Язык программирования Си. М.: Финансы и статистика, 1992. - 272с.

3. Подбельский В.В., Фомин С.С. Программирование на языке Си. Учеб. пособие. М.: Финансы и статистика, 2004. 600 с.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.