(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Использование операторов передачи управления GOTO

Источник: realcoding
Макагон Сергей

1. Немного теории:

Оператор GOTO
Конструкция оператора имеет вид:

goto <имя метки>;
***
<имя метки>: оператор;

  Оператор goto передает управление непосредственно на оператор, обозначенный меткой <имя метки>. Обозначеный оператор выполняется сразу же после выполнения оператора goto, если оператор с данной меткой отсутствует или есть больше одного оператора обозначенного одной и той же меткой, то выдается сообщение про ошибку.
  Пример:

if ( errorcode > 0 )
goto exit;
***
exit: return(errorcode);

  В примере оператор goto передает управление на оператор, обозначенный меткой exit, когда происходит ошибка.
Метка - это простой идентификатор. Ее имя не должно совпадать с любыми служебными или зарезервированными словами С. Названия меток для одной ф-и должны быть разными.

Оператор CONTINUE
  Данный оператор передает управление на следующую итерацию в операторах цикла do, for, while. Операторы, которые остались в теле вышеуказаных циклов при этом не выполняются. В середине циклу do, while такая итерация означает переход к перерасчету условных выражений и цикла. Для оператора for такая итерация приводит к приросту переменных цикла і перерасчету условного выражения цикла.
Пример:

while (i > 0 )
{
x = f(i);
if (x == 1) continue;
y = x*x;
}

   Тело оператора выполняется, если і > 0. сначала значение f(i) присваивается переменной х, потом, если х = 1 выполняется оператор сontinue, при этом остальные операторы тела цикла игнорируются и выполнение цикла повторяется с его заголовка.

2. Теперь предлагается для рассмотрения исходник квадратного уравнения, написанный с использованием вышеуказаных операторов, с соответствующими месту комментариями. //кв.уравнение

#include <stdio.h>           //библиотека ввода/вывода
#include <math.h>            //библиотека матем. функций
#include <conio.h>           //библиотека для работы с экраном - для getch() и clrscr()
#include <iostream.h>        //библиотека потокового ввода/вывода - для cout и cin

float a,b,c,d,x1,x2;         //переменные
void main ()                 //главная ф-я
{
clrscr();                    //очистим экран
cout << "nVvedit A->";      //организуем ввод коэфициэнтов уравнения с помощью 
cin >> a;                    //ф-й потокового ввода-вывода (cout и cin с библиотеки iostream.h) 
cout << "nVvedit B->";
cin >> b;
cout << "nVvedit C->";
cin >> c;
d = pow(b,2)-(4*a*c);        //найдем дискриминант
if (d < 0) goto d1;            //проверяем условия, и, с помощью
if (d==0) goto d2;           //меток переходим к соответствующему блоку
if (d>0) goto d3;
 d1: {                       //блок 1: дискриминант < 0
  printf("nKoreniv nema");
  goto exit;                 //безусловный переход на exit
 }
 d2: {                       //блок 2: дискриминант=0
  x1=-b/(2*a)
  printf("nx = %f",x1);
  goto exit;                 //безусловный переход на exit
  }
 d3:  {                      //блок 3: дискриминант>0
  x1=(-b-sqrt(d))/(2*a);
  x2=(-b+sqrt(d))/(2*a);
  printf("nx1 = %f",x1);
  printf("nx2 = %f",x2);
  goto exit;                 //безусловный перехід на exit
 }
exit:                        //метка использована для перехода к 
                             //концу программы
getch();                     //программа ждет нажатия любой клавиши для перехода далее        
}                            //конец програми

  Заметка: Не стоит злоупотреблять операторами передачи управления - я думаю (хотя, не только я), что это рушит логическую структуру программы, однако, если они действительно необходимы, ими можно пользоваться.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 23.11.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год.
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft 365 Business Standard (corporate)
Microsoft Office 365 для Дома 32-bit/x64. 5 ПК/Mac + 5 Планшетов + 5 Телефонов. Подписка на 1 год.
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерный дизайн - Все графические редакторы
Все о PHP и даже больше
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100