Смекни!
smekni.com

По предмету: «Основы информатики и программирования» (стр. 3 из 4)

- не может быть двух констант в одном операторе switch, имеющих одинаковое значение;

ОПЕРАТОРЫ ЦИКЛА

Оператор while

Оператор while организует повторное выполнение одного оператора или нескольких операторов, заключенных в операторные (фигурные) скобки, до тех пор, пока логическое выражение <условие> не примет значение ЛОЖЬ (0). Оператор while называют оператором цикла с предусловием, так как истинность <условие> проверяется перед входом в цикл. Следовательно, возможна ситуация, когда тело цикла не выполнится ни разу,, если на запрос ввести 0

Оператор do ... while

Если необходимо обеспечить выполнение цикла хотя бы один раз, то удобно использовать оператор цикла с постусловием:

do <оператор> while (<условие>);

или

do {<оператор_1>; <оператор_2>;…<оператор_n>;

} while(<условие>);

Здесь сначала выполняется <оператор> или группа операторов, а затем проверяется значение выражения <условие>. Повторение тела цикла (<оператор>) происходит до тех пор, пока <условие>не примет значение ложь.

Оператор for

При организации цикла, когда его тело должно быть выполнено фиксированное число раз, осуществляются три операции: инициализация счетчика, сравнение его величины с некоторым граничным значением и изменение значения счетчика при каждом прохождении тела цикла. Условное выражение, имеющееся в цикле while,берет на себя заботу о сравнении, а приращение значения счетчика осуществляется с помощью операции увеличения. Так же, как это делалось раньше, можно объединить эти два действия в одно выражение, используя запись i++<=n. Но инициализация счетчика осуществляется вне цикла. Сейчас мы рас смотрим управляющий оператор, использование которого позволяет избежать этих проблем. В операторе for используются три выражения, управляющие работой цикла. Они разделены символами "точка с запятой". Инициализирующее выражение вычисляется только один раз до начала выполнения какого-нибудь из операторов цикла. Рассмотрим детально работу этого оператора.

1. Выполняется поле <инициализация>. Оно служит для присваивания начальных значений переменным, используемым в цикле.

2. Проверяется значение <условие>, если ЛОЖЬ, то завершается выполнение цикла.

3. Выполняется тело цикла (<оператор> или группа операторов).

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

5. Далее возвращаемся к пункту 2.

Оператор for - это цикл с предусловием: решение, выполнить в очередной раз тело цикла или нет, принимается до начала его прохождения. Поэтому может случиться так, что тело цикла не будет выполнено ни разу. Оператор, образующий тело цикла, может быть как простым, так и составным. Если после цикла стоит единственный символ "точка с запятой", то выполняется "пустой" оператор.

Операторы break и continue

Оператор break, стоящий в теле цикла, немедленно прекращает выполнение цикла и передает управление на уровень выше, а точнее на следующий оператор, стоящий после данного цикла, содержащего break. Поэтому для прекращения выполнения многоуровневого цикла по «инициативе» на самом глубоком уровне приходится выполнять не один, а несколько операторов break.

Часто при написании программ необходимо при каком-то условии немедленно завершить данную итерацию и перейти на новую. Для этого служит оператор continue. Оператор continue вызывает пропуск той части цикла, которая находится после записи этого оператора. Необходимо обратите внимание на особенность выполнения оператора continue в циклах for или while. При использовании while часть цикла, располагающаяся, после continue не выполняется, а управление сразу передается на проверку условия в операторе while, что может привести к зацикливанию.

Оператор goto

Оператор goto, одно из важнейших средств ранних версий языков программирования BASIC, FORTRAN, и С. Керниган и Ритчи отзываются об операторе goto как о потенциальном источнике ошибок и советуют использовать его как можно реже, а еще лучше вообще отказаться от его применения.

Оператор goto состоит из двух частей: ключевого слова goto и имени метки. Именование меток производится по тем же правилам, которые соблюдаются именовании переменных, как в показанном ниже примере:

goto part2;

Чтобы этот оператор работал правильно, в программе должен присутствовать другой оператор с присвоенной ему меткой part2. В этом случае этому второму оператору предшествует метка, за которой идет двоеточие:

part2: printf("Уточненный анализ :&bsol;n");

Использование операторов goto в ситуации, когда в операторе if требуется выполнить сразу несколько операторов:

if (size > 12)

goto a;

goto b;

a: cost=cost*1.05;

flag=2;

b: bill=coct*flag

В ранних версиях языков программирования BASIC и FORTRAN к оператору if относился только один оператор, непосредственно следующий за условием. Операторы break и continue, по сути, представляют собой специализированные формы оператора goto. Преимущество их использования заключается в том, что их названия говорят, для чего они предназначены, и в том, что можно не опасаться, что метки будут расставлены не там, где надо, поскольку они вообще не имеют дела с метками.

МАССИВЫ

Одномерные массивы

Массив - это группа расположенных друг за другом в памяти элементов одного типа и имеющих одно общее имя. Определение массива должно включать его имя и содержать информацию о типе и количестве составных элементов. Доступ к элементам массива осуществляется по имени массива и индексу элемента. Индекс - это порядковый номер элемента в массиве; индекс первого элемента всегда 0, далее следуют целые положительные числа (1, 2 и т. д.).

Массивы объявляются так же, как и обычные переменные, но после имени следуют квадратные скобки, в которых может быть заключена константа или константное выражение, которое задает количество элементов массива:

float аггау12]; // массив аггау, содержащий 12 элементов

// типа float

int buffer[10*5]; // массив buffer, содержащий 50 элементов

// типа int

int п=15; int bad[n]; /* ошибочное объявление, так как переменная не может задавать размер массива */

Константное выражение, определяющее размер массива, не может принимать нулевое значение.

Как и обычные переменные, массивы при объявлении могут быть явно проинициализированы. Для этого при объявлении помещается список начальных значений элементов, заключенный в фигурные скобки:

Char array[5]={'А', 'Е', 'Г, 'О', 'U'};

Здесь объявлен массив из пяти элементов, все элементы этого массива проинициализированы соответствующими значениями. Количество инициализаторов элементов массива не должно превышать его размерность, иначе будет выдано сообщение об ошибке. Следующий пример объявления показывает, что инициализировать можно не все элементы, а любое количество первых:

int array[15]={3, 5, 10, 16};

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

Допустимо также объявлять массивы только со списком начальных значений. В этом случае число элементов массива компилятор определяет по списку инициализации:

int array[]={34, 78, 3, 98}; // массив из четырех элементов

Чтобы получить доступ к определенному элементу массива, нужно указать его порядковый номер в массиве, заключенный в квадратные скобки. Самый первый элемент массива имеет порядковый номер 0. В качестве индекса разрешается использовать любое выражение целого типа, а также любое выражение, значение которого можно преобразовать в целый тип. В остальном вы работаете с массивом, как с обычной переменной. Следующий оператор присваивает значение 125 четвертому элементу массива аггау:

array[3]=125;

Так же можно присвоить значение некоторого элемента массива переменной или другому элементу массива, например:

tmp = array[3];

array[0]=array[2];

Здесь значение переменной tmp не определено. Для упрощения контроля границ индекса массива удобно использовать оператор sizeof, который применительно к массивам возвращает количество байт памяти, зарезервированных для массива:

int array[1б];

int quant;

quant = sizeof(array)/sizeof(int); // quant = = 16

Вы не ограничены использованием в индексах массивов только численных выражений. Рассмотрим такой пример.

index=2;

array[index]=5;

Здесь второй оператор ссылается на третий элемент массива. Можно сделать даже так:

array[3]=4;

buffer[array[3]]=7;

Оператор во второй строке присваивает значение пятому элементу массива.

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

Примеры программ с использованием массивов

Пример в языке С. Программа запрашивает с клавиатуры десять чисел, а затем выводит их на экран в обратном порядке.

include <iostrem.h>

void main()

{

signed int I;

int array[10];

cout<<”Введите 10 целых чисел:”;

for(i=0;i<10;i++)

cin>>array[i];

for(i=9;i>=0;i--)

cout<<array[i]<<””;

cout<<”n”

}

Пример в языке С. Ввести массив чисел и вычислить сумму элементов массива.

include <iostream.h>

void main()

{

int y[100],i,n,s=0;

cout<<”n=?”;

cin>>n;

for(i=0;i<n;i++)

{

cin>>[i];

s+=i[y]; /* можно и так: s+=y[i] */

}

cont<<”summa=”<<s<<end;

}

Многомерные массивы

Многомерный массив - это массив массивов, т. е. массив, элементами которого являются массивы. Размерность массива - это количество индексов, используемых для ссылки на конкретный элемент массива. Многомерные массивы объявляются точно так же, как и одномерные, только после имени массива ставится более одной пары квадратных скобок. Пример определения двухмерного массива (матрицы) с 10 строками и 30 столбцами: