СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Основы алгоритмизации

Категория: Информатика

Нажмите, чтобы узнать подробности

Презентация к уроку основы алгоритмизации на С++

Просмотр содержимого документа
«Основы алгоритмизации»

Понятие оператора используется для обозначения завершенных действий (законченных предписаний для исполняющей системы) Любое выражение, заканчивающееся точкой с запятой ( ; ), является оператором Отдельно стоящая точка с запятой интерпретируется компилятором как нуль-оператор:  ;  ;;;;;;  ;  ;;;;;; К простым операторам относятся также операторы-выражения:  d = a *( b + c )/ 2 ;  alpha++;  d = a *( b + c )/ 2 ;  alpha++;
  • Понятие оператора используется для обозначения завершенных действий (законченных предписаний для исполняющей системы)
  • Любое выражение, заканчивающееся точкой с запятой ( ; ), является оператором
  • Отдельно стоящая точка с запятой интерпретируется компилятором как нуль-оператор:

;

;;;;;;

  • ; ;;;;;;
  • К простым операторам относятся также операторы-выражения:

d = a *( b + c )/ 2 ; alpha++;

  • d = a *( b + c )/ 2 ; alpha++;

Операторы управления

  • Операторы управления работой программы называют управляющими конструкциями программы
  • В языке С выделяют 4 группы операторов управления:
  • составные операторы составной оператор блок операторы выбора условный оператор ( if ) переключатель ( switch ) операторы циклов цикл с параметром ( for ) цикл с предусловием ( while ) цикл с постусловием ( do while ) операторы перехода break (выход из цикла или переключателя) continue (завершение текущей итерации цикла) return (возврат из функции) goto (безусловный переход)
  • составные операторы составной оператор блок
  • составной оператор
  • блок
  • операторы выбора условный оператор ( if ) переключатель ( switch )
  • условный оператор ( if )
  • переключатель ( switch )
  • операторы циклов цикл с параметром ( for ) цикл с предусловием ( while ) цикл с постусловием ( do while )
  • цикл с параметром ( for )
  • цикл с предусловием ( while )
  • цикл с постусловием ( do while )
  • операторы перехода break (выход из цикла или переключателя) continue (завершение текущей итерации цикла) return (возврат из функции) goto (безусловный переход)
  • break (выход из цикла или переключателя)
  • continue (завершение текущей итерации цикла)
  • return (возврат из функции)
  • goto (безусловный переход)
составной оператор – последовательность операторов, заключенная в фигурные скобки  (по правилам языка точка с запятой после закрывающей фигурной скобки не ставится)  {t=a; a=b; b=t} – составной оператор  {a+=b; b=a-b; a-=b;};  – составной оператор и ; блок  –  последовательность операторов, заключенная в фигурные скобки, содержащая определения переменных  {int t; t=a; a=b; b=t}  – блок  чаще всего блок используется в качестве тела функции
  • составной оператор – последовательность операторов, заключенная в фигурные скобки

(по правилам языка точка с запятой после закрывающей фигурной скобки не ставится)

{t=a; a=b; b=t} – составной оператор

{a+=b; b=a-b; a-=b;}; – составной оператор и ;

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

{int t; t=a; a=b; b=t} – блок

чаще всего блок используется в качестве тела функции

условный оператор ( if ) переключатель ( switch )
  • условный оператор ( if )
  • переключатель ( switch )
Условный оператор Условный оператор является простейшим средством для программирования разветвленных алгоритмов. Формат условного оператора:  if (выражение_условие)   оператор1 ;   else   оператор2 ;    if (выражение_условие)   оператор1 ;   else   оператор2 ;    if (выражение_условие)   оператор1 ;   else   оператор2 ;   в качестве выражения_условия может использоваться арифметическое выражение, отношение и логическое выражение (т.е. произвольное выражение, приводимое к логическому значению)  Сначала вычисляется значение выражения, стоящего в скобках, если результатом является логическое значение

Условный оператор

  • Условный оператор является простейшим средством для программирования разветвленных алгоритмов.
  • Формат условного оператора:

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

  • if (выражение_условие) оператор1 ; else оператор2 ;
  • if (выражение_условие) оператор1 ; else оператор2 ;

в качестве выражения_условия может использоваться арифметическое выражение, отношение и логическое выражение (т.е. произвольное выражение, приводимое к логическому значению)

Сначала вычисляется значение выражения, стоящего в скобках, если результатом является логическое значение "истина" (выражение отлично от нуля), то выполняется оператор1 . В противном случае выполняется оператор2 в else-части условного оператора

Условный оператор Сокращенная форма условного оператора: if (выражение_условие)   оператор ; if (выражение_условие)   оператор ; if (выражение_условие)   оператор ;  выражение-  условие ложно (0) выражение-  условие истинно (!0) ложно (0) истинно (!0) оператор1 оператор2 оператор

Условный оператор

  • Сокращенная форма условного оператора:

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

  • if (выражение_условие) оператор ;
  • if (выражение_условие) оператор ;

выражение- условие

ложно (0)

выражение- условие

истинно (!0)

ложно (0)

истинно (!0)

оператор1

оператор2

оператор

y ) max = x; else max=y; Найти наибольшее из трёх чисел. Возможны варианты: if (xy) if(xz) max=x; else max=z; else if(yz) max=y; else max=z; if((xy)&&(xz)) max=x; else if(yz) max=y; else max=z; " width="640"

Условный оператор: примеры

  • Найти наибольшее из двух чисел

Решение:

if ( xy ) max = x;

else max=y;

  • Найти наибольшее из трёх чисел.
  • Возможны варианты:

if (xy)

if(xz)

max=x;

else

max=z;

else

if(yz)

max=y;

else

max=z;

if((xy)&&(xz))

max=x;

else

if(yz)

max=y;

else

max=z;

0)if(a b) z = a; else z = b; – к какому if относится else ? В конструкциях , где один оператор if вложен в другой, else-часть связывается с ближайшим оператором if : if(n 0) if(a b) z = a; else z = b; if(n 0) if(a b) z = a; else z = b; if(n 0) if(a b) z = a; else z = b; Правило: “ else относится к ближайшему оператору if ” Чтобы изменить это соглашение, необходимо использовать фигурные скобки: if(n 0){ if(a b) z = a; } else z = b; if(n 0){ if(a b) z = a; } else z = b; if(n 0){ if(a b) z = a; } else z = b; Поскольку запись без скобок ненаглядна , рекомендуется ставить скобки для избежания ошибок " width="640"

Условный оператор

  • if(i – может быть как простой так и составной оператор
  • if(n 0)if(a b) z = a; else z = b; – к какому if относится else ?
  • В конструкциях , где один оператор if вложен в другой, else-часть связывается с ближайшим оператором if :

if(n 0)

if(a b) z = a;

else z = b;

  • if(n 0) if(a b) z = a; else z = b;
  • if(n 0) if(a b) z = a; else z = b;

  • Правило: else относится к ближайшему оператору if

  • Чтобы изменить это соглашение, необходимо использовать фигурные скобки:

if(n 0){

if(a b) z = a;

}

else z = b;

  • if(n 0){ if(a b) z = a; } else z = b;
  • if(n 0){ if(a b) z = a; } else z = b;

  • Поскольку запись без скобок ненаглядна , рекомендуется ставить скобки для избежания ошибок
0) printf(“2”); else if(D == 0) printf(“1”); else printf(“0”); D = sqrt(b) – 4 * a * c; if(D 0) printf(“2”); else if(D == 0) printf(“1”); else printf(“0”); D = sqrt(b) – 4 * a * c; if(D 0) printf(“2”); else if(D == 0) printf(“1”); else printf(“0”); " width="640"

Условный оператор: примеры

  • Рассмотрим задачу: найти количество корней квадратного уравнения с заданными коэффициентами.
  • Всего существует три варианта: «два корня», «один» и «нет корней». Результатом является число, но не существует арифметической формулы, позволяющей вычислить этот результат. Для того, чтобы ответить на поставленный вопрос, необходимо выполнить следующие действия:
  • Вычислить дискриминант. Если дискриминант больше нуля, вывести число 2. Если дискриминант равен нулю, вывести число 1. Если дискриминант меньше нуля, вывести число 0.
  • Вычислить дискриминант.
  • Если дискриминант больше нуля, вывести число 2.
  • Если дискриминант равен нулю, вывести число 1.
  • Если дискриминант меньше нуля, вывести число 0.
  • Решение:

D = sqrt(b) – 4 * a * c;

if(D 0)

printf(“2”);

else

if(D == 0)

printf(“1”);

else

printf(“0”);

  • D = sqrt(b) – 4 * a * c; if(D 0) printf(“2”); else if(D == 0) printf(“1”); else printf(“0”);
  • D = sqrt(b) – 4 * a * c; if(D 0) printf(“2”); else if(D == 0) printf(“1”); else printf(“0”);
Напишите часть программы: y=abs(x); a=max(x, y); a=max(x, y); b=min(x, y); переменной k присвоить номер четверти плоскости, в которой находится точка с координатами (x, y) (xy != 0) y=abs(x); a=max(x, y); a=max(x, y); b=min(x, y); переменной k присвоить номер четверти плоскости, в которой находится точка с координатами (x, y) (xy != 0) Запишите условный оператор, эквивалентный оператору присваивания x=a||b&&c , в котором не используются логические операции Запишите оператор присваивания, эквивалентный условному оператору if(a) x=b; else x=c; ( все переменные - логические )
  • Напишите часть программы:
  • y=abs(x); a=max(x, y); a=max(x, y); b=min(x, y); переменной k присвоить номер четверти плоскости, в которой находится точка с координатами (x, y) (xy != 0)
  • y=abs(x);
  • a=max(x, y);
  • a=max(x, y); b=min(x, y);
  • переменной k присвоить номер четверти плоскости, в которой находится точка с координатами (x, y) (xy != 0)
  • Запишите условный оператор, эквивалентный оператору присваивания x=a||b&&c , в котором не используются логические операции
  • Запишите оператор присваивания, эквивалентный условному оператору if(a) x=b; else x=c; ( все переменные - логические )
Переключатель switch Переключатель позволяет осуществлять многовариантный выбор, заменяя группу вложенных операторов if-else . В общем случае от имеет следующий формат:  switch (expression){   case const-expression: statements  . . .  default: statements  . . .  case const-expression: statements  }  где любая case - или default -часть может отсутствовать, а также могут быть опущены statements в любой из этих частей

Переключатель switch

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

switch (expression){

case const-expression: statements

. . .

default: statements

. . .

case const-expression: statements

}

  • где любая case - или default -часть может отсутствовать, а также могут быть опущены statements в любой из этих частей
Предварительно вычисленное значение выражения в круглых скобках сравнивается с const-expression во всех вариантах case и управление передается той группе операторов statements , которая соответствует найденному значению. В том случае, когда значение ни одного из константных выражений не совпало со значением выражения expression , выполняются операторы, связанные с меткой default , а при ее отсутствии - оператор, непосредственно следующий за оператором switch . Никакие два константные выражения в одном операторе-переключателе не могут иметь одинаковых значений
  • Предварительно вычисленное значение выражения в круглых скобках сравнивается с const-expression во всех вариантах case и управление передается той группе операторов statements , которая соответствует найденному значению. В том случае, когда значение ни одного из константных выражений не совпало со значением выражения expression , выполняются операторы, связанные с меткой default , а при ее отсутствии - оператор, непосредственно следующий за оператором switch . Никакие два константные выражения в одном операторе-переключателе не могут иметь одинаковых значений
В следующем примере значение переменной operation , имеющей тип char , определяет ту арифметическую операцию, которая должна быть выполнена над переменными x и y :   switch (operation){   case '+': z = x + y; break;   case '-': z = x - y; break;   case '*': z = x*y; break;   case '/': z = x/y;  }  Ключевое слово case вместе с const-expression служат «меткой» соответствующих операторов, и если будут выполняться операторы для некоторого варианта case , то далее будут выполняться операторы всех последующих вариантов до тех пор, пока не встретится оператор  break
  • В следующем примере значение переменной operation , имеющей тип char , определяет ту арифметическую операцию, которая должна быть выполнена над переменными x и y :

switch (operation){

case '+': z = x + y; break;

case '-': z = x - y; break;

case '*': z = x*y; break;

case '/': z = x/y;

}

  • Ключевое слово case вместе с const-expression служат «меткой» соответствующих операторов, и если будут выполняться операторы для некоторого варианта case , то далее будут выполняться операторы всех последующих вариантов до тех пор, пока не встретится оператор break
Если нескольким различным значениям выражения expression должны соответствовать одни и те же действия, можно воспользоваться следующей конструкцией:   switch (key){   case '0':  case '1':  case '2':  case '3':  case '4':  case '5':  case '6':  case '7':  case '8':  case '9': printf (
  • Если нескольким различным значениям выражения expression должны соответствовать одни и те же действия, можно воспользоваться следующей конструкцией:

switch (key){

case '0':

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9': printf ("Это цифра");

}

=‘0’ && key ){ case 1 : printf ("Это цифра"); } " width="640"

switch (key =‘0’ && key ){

case 1 :

printf ("Это цифра");

}

switch (key){    case '0': case '2': case '4':   case '6': case '8':    printf (“Четная цифра

switch (key){

case '0': case '2': case '4':

case '6': case '8':

printf (“Четная цифра");

break;

case '1': case '3': case '5':

c ase '7': case '9':

printf (“Нечетная цифра");

break;

}

switch (key ‘9’ ? 0 :    (key-’0’)%2 ? 1 : 2 ){   case 1 :    printf (

switch (key ‘9’ ? 0 :

(key-’0’)%2 ? 1 : 2 ){

case 1 :

printf ("Это нечетная цифра");

break;

case 2 :

printf ("Это четная цифра");

break;

case 0:

printf ("Это вовсе не цифра");

break;

}

while do while for while do while for while do while for while do while for while do while for
  • while do while for
  • while do while for
  • while do while for
  • while do while for
  • while
  • do while
  • for
Оператор циклов while Оператор while позволяет циклически выполнять определенную последовательность операторов до тех пор, пока истинно некоторое условие, проверяемое перед началом очередной итерации цикла (цикл с предусловием). Формально его синтаксис может быть описан следующей формулой:   while (expression) statement где  while  - ключевое слово языка Си; expression - произвольное выражение, приводимое к логическому значению (условие продолжения итераций); statement - простой или составной оператор (тело цикла)

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

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

while (expression) statement

  • где while - ключевое слово языка Си; expression - произвольное выражение, приводимое к логическому значению (условие продолжения итераций); statement - простой или составной оператор (тело цикла)
Если значение выражения expression истинно (отлично от нуля), то тело цикла выполняется до тех пор, пока это выражение не станет ложным (равным нулю), причем проверка производится всякий раз перед началом очередной итерации цикла. Если же значение выражения ложно в момент инициализации цикла, то тело цикла не выполняется ни разу и управление передается оператору, следующему за оператором while
  • Если значение выражения expression истинно (отлично от нуля), то тело цикла выполняется до тех пор, пока это выражение не станет ложным (равным нулю), причем проверка производится всякий раз перед началом очередной итерации цикла. Если же значение выражения ложно в момент инициализации цикла, то тело цикла не выполняется ни разу и управление передается оператору, следующему за оператором while

В качестве примера использования оператора цикла с предусловием, рассмотрим фрагмент программы, определяющей длину строки символов string :   count = 0;  while (string[count] != '\0') count++;  После окончания работы этого фрагмента, значение переменной count равно количеству символов в строке string , не считая завершающего нуль -символа
  • В качестве примера использования оператора цикла с предусловием, рассмотрим фрагмент программы, определяющей длину строки символов string :

count = 0;

while (string[count] != '\0') count++;

  • После окончания работы этого фрагмента, значение переменной count равно количеству символов в строке string , не считая завершающего нуль -символа
Оператор циклов do while Принципиальное назначение этого оператора такое же, как и рассмотренного оператора while . Семантическое различие двух этих операторов цикла состоит лишь в том, что в рассматриваемом случае условие продолжения проверяется после завершения очередной итерации (цикл с постусловием). В общем виде оператор do  while записывается следующим образом:   do statement while (expression);  где do и while - ключевые слова языка Си; statement - простой или составной оператор (тело цикла); expression - произвольное выражение, приводимое к логическому значению (условие продолжения итераций)

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

  • Принципиальное назначение этого оператора такое же, как и рассмотренного оператора while . Семантическое различие двух этих операторов цикла состоит лишь в том, что в рассматриваемом случае условие продолжения проверяется после завершения очередной итерации (цикл с постусловием). В общем виде оператор do while записывается следующим образом:

do statement while (expression);

  • где do и while - ключевые слова языка Си; statement - простой или составной оператор (тело цикла); expression - произвольное выражение, приводимое к логическому значению (условие продолжения итераций)
После однократного выполнения тела цикла вычисляется значение выражения expression . Если найденное значение истинно (отлично от нуля), то выполняется очередная итерация цикла. Этот процесс повторяется до тех пор, пока значение выражения не станет ложным (равным нулю), после чего управление передается оператору, непосредственно следующему за оператором do-while . Таким образом, тело цикла всегда будет выполнено хотя бы один раз  В качестве примера использования цикла с постусловием, приведем фрагмент программы, выполняющей копирование строки символов string1  в строку string2 :   count = 0;  do string2[count] = string1[count];  while (string1[count++]);
  • После однократного выполнения тела цикла вычисляется значение выражения expression . Если найденное значение истинно (отлично от нуля), то выполняется очередная итерация цикла. Этот процесс повторяется до тех пор, пока значение выражения не станет ложным (равным нулю), после чего управление передается оператору, непосредственно следующему за оператором do-while . Таким образом, тело цикла всегда будет выполнено хотя бы один раз
  • В качестве примера использования цикла с постусловием, приведем фрагмент программы, выполняющей копирование строки символов string1 в строку string2 :

count = 0;

do string2[count] = string1[count];

while (string1[count++]);

Оператор циклов for Оператор for является наиболее мощным средством реализации циклических алгоритмов и управления циклическими процессами. Он объединяет в себе инициализацию переменных, проверку условия продолжения итераций и модификацию переменных перед выполнением очередной итерации, что по своей сути эквивалентно следующей группе операторов:   expression1  while(expression2){   statement expression3;  }

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

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

expression1

while(expression2){

statement expression3;

}

Общая форма записи оператора цикла for такова:   for (expression1; expression2; expression3)  statement  где for - ключевое слово языка Си; expression1,  expression2 и expression3 - произвольные выражения, причем второе из них приводится к логическому значению; statement - простой или составной оператор (тело цикла) Любое из трех выражений, входящих в заголовок цикла, может быть опущено при сохранении следующей за ним точки с запятой
  • Общая форма записи оператора цикла for такова:

for (expression1; expression2; expression3)

statement

  • где for - ключевое слово языка Си; expression1, expression2 и expression3 - произвольные выражения, причем второе из них приводится к логическому значению; statement - простой или составной оператор (тело цикла)
  • Любое из трех выражений, входящих в заголовок цикла, может быть опущено при сохранении следующей за ним точки с запятой
Перед началом выполнения цикла вычисляется значение инициализирующего выражения expression1 и значение выражения expression2 , играющего роль условия продолжения итераций. Если  expression2 истинно (отлично от нуля), то выполняется оператор statement  тела цикла, вычисляется корректирующее выражение  expression3 и вновь проверяется истинность выражения expression2  Этот процесс повторяется до тех пор, пока условие продолжения итераций не станет ложным (равным нулю), после чего управление передается оператору, следующему за оператором for . В случае отсутствия выражения expression2 ему условно присваивается постоянное значение
  • Перед началом выполнения цикла вычисляется значение инициализирующего выражения expression1 и значение выражения expression2 , играющего роль условия продолжения итераций. Если expression2 истинно (отлично от нуля), то выполняется оператор statement тела цикла, вычисляется корректирующее выражение expression3 и вновь проверяется истинность выражения expression2
  • Этот процесс повторяется до тех пор, пока условие продолжения итераций не станет ложным (равным нулю), после чего управление передается оператору, следующему за оператором for . В случае отсутствия выражения expression2 ему условно присваивается постоянное значение "истина", что равносильно бесконечному циклическому процессу
В следующем программном фрагменте, вычисляющем сумму элементов числового массива, оператор цикла for используется для организации последовательного доступа ко всем элементам этого массива:   s = 0;  for (i = 0; i   Каждое из выражений в заголовке цикла может состоять из нескольких подвыражений, связанных между собой операцией запятая ( , ). Эта операция обеспечивает последовательное вычисление своих операндов слева направо, причем ее результатом является значение самого правого операнда
  • В следующем программном фрагменте, вычисляющем сумму элементов числового массива, оператор цикла for используется для организации последовательного доступа ко всем элементам этого массива:

s = 0;

for (i = 0; i

  • Каждое из выражений в заголовке цикла может состоять из нескольких подвыражений, связанных между собой операцией запятая ( , ). Эта операция обеспечивает последовательное вычисление своих операндов слева направо, причем ее результатом является значение самого правого операнда
Применительно к оператору цикла for , операция запятая чаще всего используется в тех случаях, когда необходимо иметь несколько инициализирующих и корректирующих выражений  Эту ситуацию можно проиллюстрировать следующим программным фрагментом, выполняющим инвертирование последовательности из n элементов:   for (i = 0, j = n-1; i   { buf = a[i]; a[i] = a[j]; a[j] = buf; }
  • Применительно к оператору цикла for , операция запятая чаще всего используется в тех случаях, когда необходимо иметь несколько инициализирующих и корректирующих выражений
  • Эту ситуацию можно проиллюстрировать следующим программным фрагментом, выполняющим инвертирование последовательности из n элементов:

for (i = 0, j = n-1; i

{ buf = a[i]; a[i] = a[j]; a[j] = buf; }

0; gap /=2) for (i=gap; i for (j=j-gap; j=0 && v[j]v[j+gap]; j -=gap) {temp = v[j]; v[j]=v[j+gap]; v[j+gap]=temp; } Пример: Поворот строки void reverse(char s[]) { int c,i,j; for (i=0, i=strlen(s)-1; i { c=s[i]; s[i]=s[j]; s[j]=c; } } " width="640"
  • Пример: Следующая подпрограмма упорядочивает массив чисел

void shell(int v[],n)

{ int gap,i,temp;

for (gap=n/2; gap0; gap /=2)

for (i=gap; i

for (j=j-gap; j=0 && v[j]v[j+gap]; j -=gap)

{temp = v[j]; v[j]=v[j+gap]; v[j+gap]=temp; }

  • Пример: Поворот строки

void reverse(char s[])

{ int c,i,j;

for (i=0, i=strlen(s)-1; i

{ c=s[i]; s[i]=s[j]; s[j]=c; }

}

g oto b reak c ontinue return g oto b reak c ontinue return g oto b reak c ontinue return g oto b reak c ontinue return g oto b reak c ontinue return
  • g oto b reak c ontinue return
  • g oto b reak c ontinue return
  • g oto b reak c ontinue return
  • g oto b reak c ontinue return
  • g oto
  • b reak
  • c ontinue
  • return
Оператор перехода break В ряде случаев возникает необходимость завершить выполнение какого-либо оператора цикла или оператора-переключателя раньше, чем это произойдет в соответствии с принятой семантикой этих операторов. Для этой цели служит оператор break , прекращающий выполнение ближайшего вложенного оператора while, do-while, for или switch и передающий управление оператору, следующему за заканчиваемым

Оператор перехода break

  • В ряде случаев возникает необходимость завершить выполнение какого-либо оператора цикла или оператора-переключателя раньше, чем это произойдет в соответствии с принятой семантикой этих операторов. Для этой цели служит оператор break , прекращающий выполнение ближайшего вложенного оператора while, do-while, for или switch и передающий управление оператору, следующему за заканчиваемым
= 0) s = s + a[i]; else break; Заметим, что появление оператора break вне одного из операторов while, do-while, for или switch приводит к ошибке на этапе компиляции программы " width="640"
  • Пусть, например, необходимо найти сумму элементов числового массива до первого отрицательного элемента. Эту задачу можно решить с помощью следующего программного фрагмента:

s = 0;

for (i = 0; i

if (a[i] = 0) s = s + a[i]; else break;

  • Заметим, что появление оператора break вне одного из операторов while, do-while, for или switch приводит к ошибке на этапе компиляции программы
Оператор перехода continue При возникновении необходимости прекратить выполнение текущей итерации ближайшего внешнего оператора while, do-while или for и перейти к началу следующей итерации, может быть использован оператор continue . В случае операторов while и do-while очередная итерация начинается с вычисления и проверки истинности выражения expression , а в операторе for - с вычисления значения корректирующего выражения expression3  Пусть теперь необходимо найти сумму всех положительных элементов числового массива. Используя оператор continue , это можно сделать следующим образом:  s = 0;   for (i = 0; i    if (a[i]   }

Оператор перехода continue

  • При возникновении необходимости прекратить выполнение текущей итерации ближайшего внешнего оператора while, do-while или for и перейти к началу следующей итерации, может быть использован оператор continue . В случае операторов while и do-while очередная итерация начинается с вычисления и проверки истинности выражения expression , а в операторе for - с вычисления значения корректирующего выражения expression3
  • Пусть теперь необходимо найти сумму всех положительных элементов числового массива. Используя оператор continue , это можно сделать следующим образом:

s = 0;

for (i = 0; i

if (a[i]

}

Оператор перехода goto Как и в подавляющем большинстве языков программирования, в языке Си имеется возможность безусловной передачи управления любому оператору в пределах текущей функции, хотя гибкость управляющих конструкций этого языка позволяет почти всегда обходиться без такой возможности. Формальный синтаксис оператора перехода описывается следующей формулой:   goto label;  где goto - ключевое слово языка Си, а label - метка оператора в пределах текущей функции

Оператор перехода goto

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

goto label;

  • где goto - ключевое слово языка Си, а label - метка оператора в пределах текущей функции
Согласно синтаксическим правилам языка Си, каждому оператору программы может быть присвоено уникальное имя, называемое меткой этого оператора. Сама метка является правильным идентификатором языка, за которым следует символ двоеточие ( : ). Метки операторов могут быть использованы только лишь как объекты ссылок в операторе goto . Во всех остальных случаях они игнорируются компилятором  В качестве примера использования оператора goto для выхода из вложенных управляющих операторов, рассмотрим задачу нахождения первого элемента двумерного массива, равного заданному числу x :  x = 17;  for (i = 0; i   for (j = 0; j   if (a[i][j] == x) goto L01;  /* Действия, выполняемые в случае, если элемент x не найден */  ... L01: ...
  • Согласно синтаксическим правилам языка Си, каждому оператору программы может быть присвоено уникальное имя, называемое меткой этого оператора. Сама метка является правильным идентификатором языка, за которым следует символ двоеточие ( : ). Метки операторов могут быть использованы только лишь как объекты ссылок в операторе goto . Во всех остальных случаях они игнорируются компилятором
  • В качестве примера использования оператора goto для выхода из вложенных управляющих операторов, рассмотрим задачу нахождения первого элемента двумерного массива, равного заданному числу x :

x = 17;

for (i = 0; i

for (j = 0; j

if (a[i][j] == x) goto L01;

/* Действия, выполняемые в случае, если элемент x не найден */

...

L01: ...

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

Оператор перехода return

  • Оператор return прекращает выполнение текущей функции и возвращает управление той функции, из которой была вызвана текущая. В общем случае он имеет следующий формат:

return expression;

  • где return - ключевое слово языка Си, а expression - произвольное необязательное выражение
После прекращение выполнения текущей функции и передачи управления вызвавшей функции, выполнение последней продолжается с оператора, непосредственно следующего за точкой вызова. Кроме этого, при наличии выражения expression его значение передается (возможно после предварительного преобразования типа) вызвавшей функции. Если же выражение в операторе return  отсутствует, то возвращаемое текущей функцией значение считается неопределенным  Замечание. В случае использования оператора return в главной функции (т.е. функции, имеющей имя main() ), его действие приводит к прекращению выполнения программы и передаче управления операционной системе
  • После прекращение выполнения текущей функции и передачи управления вызвавшей функции, выполнение последней продолжается с оператора, непосредственно следующего за точкой вызова. Кроме этого, при наличии выражения expression его значение передается (возможно после предварительного преобразования типа) вызвавшей функции. Если же выражение в операторе return отсутствует, то возвращаемое текущей функцией значение считается неопределенным
  • Замечание. В случае использования оператора return в главной функции (т.е. функции, имеющей имя main() ), его действие приводит к прекращению выполнения программы и передаче управления операционной системе


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!