Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Часто при вознекновении некоторого события удобно иметь возможность досрочно завершить цикл. Используемый для этой цели оператор break(разрыв) вызывает немедленный выход из циклов, организуемых с помощью операторовfor, while, do-while,а также прекращение оператора switch. Приведенная ниже программа обеспечивает поиск в заданном иассиве элемента, равного g(пример 4.9). В случае обнаружения такого элемента оператор breakпрекращает дальнейшее выполнение цикла. Так как параметр iсохраняет значение после выхода из цикла, то дальнейший анализ его значения (if(i==n)) позволяет судить об удачном (i<=n)илинеудачном (i==n) поиске. В случае вложенных циклов оператор breakнемедленно прекращает выполнение самого внутреннего из объемлющих его циклов. Пример 4.9
/*линейный поиск*/ #include <stdio.h> int a[]={1,2,3,33,5,6,0,8}; int n=8; main() { int i,g=33; for(i=0;i<n;i++) if(a[i]==g) break; if(i==n) printf("%d не найден\n",g); else printf("%d на %d месте \n"g,i); }

На примере 5.0 приведена программа, которая ведет подсчет числа различных элементов в массиве. Каждый очередной элемент a[i] сравнивается с последующими элементами массива. Если он не совпадает ни с одним из этих элементов, в счетчик k добавляется еденица. В противном случае внутренний цикл прерывается оператором break и начинается новая итерация внешнего цикла.

Пример 5.0

/*число разных элементов*/ #include <stdio.h> main() { static a[]={7,3,7,4,3,6}; int i,j,m,k=1;m=6; for(i=0;i<m-1;i++) { for(j=i+1;j<m;j++) if(a[i]==a[j]) break; if(j==m) k++; } printf("%d разных элем. \n", k); }

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

Пример 5.1

#include <stdio.h> main() { static int a[]={1,2,-3,4,-5,6}; int i,n,s; n=6; s=0; for(i=0; i<n; i++) { if(a[i]<=0) continue; /*пропуск 0*/ s+=a[i]; } printf("сумма = %d \n",s); }

Выражения

Пример (сохраните как expression.py):

length = 5

breadth = 2

area = length * breadth

print ('Площадь равна', area)

print ('Периметр равен', 2 * (length + breadth))

Вывод:

$ python expression.py

Площадь равна 10

Периметр равен 14

Как это работает:

Длина и ширина прямоугольника хранятся в переменных length и breadth соответственно. Мы используем их для вычисления периметра и площади прямоугольника при помощи выражений. Результат выражения length * breadth сохраняется в переменнойarea, после чего выводится на экран функцией print. Во втором случае мы напрямую подставляем значение выражения 2 * (length +breadth) в функцию print.

Также обратите внимание, как Python “красиво печатает” результат. Несмотря на то, что мы не указали пробела между 'Площадьравна' и переменной area, Python подставляет его за нас, чтобы получить красивый и понятный вывод. Программа же остаётся при этом легкочитаемой (поскольку нам не нужно заботиться о пробелах между строками, которые мы выводим). Это пример того, как Python облегчает жизнь программисту.

1.4.11. ОПЕРАТОР RETURN

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

return [выражение];

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

Если в какой-либо функции отсутствует оператор return, то передача управления в вызывающую функцию происходит после выполнения последнего оператора вызываемой функции. При этом возвращаемое значение не определено. Если функция не должна иметь возвращаемого значения, то ее нужно объявлять с типом void.

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

Пример:

int sum (int a, int b) { renurn (a+b); }

Функция sum имеет два формальных параметра a и b типа int, и возвращает значение типа int, о чем говорит описатель, стоящий перед именем функции. Возвращаемое оператором return значение равно сумме фактических параметров.

Пример:

void prov (int a, double b) { double c; if (a<3) return; else if (b>10) return; else { c=a+b; if ((2*c-b)==11) return; } }

В этом примере оператор return используется для выхода из функции в случае выполнения одного из проверяемых условий.

Оператор который не выполняет ни каких действий

Оператор вибору використовується замість декількох неповних операторів.

Загальний вигляд Приклад
Case n of b1: s1; b2: s2; … else s; end; case n of 1..5: writeln(' робочий '); 6,7: writeln(' вихідний '); else writeln('error'); end;

if (<умова>)
{
<Блок операторів 1>;
}
else
{
<Блок операторів 2>;
}

if (<умова>)
{
<Блок операторів>;
}

for (ініціалізація; умова; приріст) оператор;

for(x=1; x <= 100; x++) printf("%d ", x);

While(условия){то что он должен делать};

Цикл з післяумовою do – while:

Основна форма запису:

do

оператор;

while (умова);

де оператор – це простий, складовий чи порожній оператор.

Тіло циклу виконується до тих пір, поки умова справджується.

auto — автоматическая (локальная). Автоматические переменные создаются при входе в функцию и уничтожаются при выходе из неё. Они видны только внутри функции или блока, в которых определены. В C++0x значение слова auto изменили. #include <stdio.h>
main()
{
int t;
{
int t=2;
{
int t=3;
printf("%d\n",t);
}
printf("%d\n",t);
}
printf("%d\n",t);

}

register — регистровая переменная (локальная). Это слово является всего лишь «рекомендацией» компилятору помещать часто используемую переменную врегистры процессора для ускорения программы.

static — статическая переменная (локальная). 1) Если static - внутри функции. Статические переменные имеют такую же область действия, как локальные(автоматические), но они не исчезают, когда содержащая их функция закончит свою работу. Их значения сохраняются от одного вызова функции до другого. 2) static вне функции имеет другое значение. *статические переменные*/
#include <stdio.h>
plus1()
{
static int x=0;
x=x+1;
printf("x=%d\n",x);
}
main()
{
plus1();
plus1();
plus1();
}

extern — внешняя (глобальная) переменная. Внешние переменные доступны везде, где описаны, а не только там, где определены. Включение ключевого слова extern позволяет функции использовать внешнюю переменную, даже если она определяется позже в этом или другом файле.
#include <stdio.h>
int x=145;/*Описание внешней переменной*/
main()
{
extern int x,y;
printf("x=%d y=%d \n",x,y);
}
int y=541; /*Описание внешней переменной*/

Одновимірний масив — це послідовність однотипних даних.

a[1], a[2],..., a[n]

A [3] [4] = {{1, 4, 2, 6},
{11, 1 4, 1 2, 1 6},
{1, 4, 2, 6}
};
Перший розмір масиву, тобто кількість рядків, при повній ініціалізації можна не вказувати.
int A [] [4] = {{1, 4, 2, 6},
{11, 1 4, 1 2, 1 6},
{1, 4, 2, 6}
};

Як було зазначено вище, одновимірні масиви застосовуються для зберігання послідовностей. Проте для багатьох структур даних зображення у вигляді послідовності є неприйнятним. Наприклад, результати матчів футбольного чемпіонату найзручніше подавати у вигляді квадратної таблиці. Для зберігання таких структур даних застосовують багатовимірні масиви, серед яких найбільш широко використовуються двовимірні масиви (матриці). У даному розділі розглядаються базові операції над елементами двовимірних масивів, а також техніка програмного розв'язування деяких матричних задач лінійної алгебри.

int m[4] [3] [6] [5];

те функція, що приймає цей масив, має бути оголошена приблизно так:

void func1(int d[][3][6][5])

{

/*... */

}

тип ім'я_масиву [ Размер1 ][ Размер2 ]...[ РозмірN ];

Потоки


В C++11, работа с потокам осуществляется по средствам класса std::thread (доступного из заголовочного файла<thread>), который может работать с регулярными функциями, лямбдами и функторами. Кроме того, он позволяет вам передавать любое число параметров в функцию потока.

#include <thread>

void threadFunction()

{

// do smth

}

int main()

{

std::thread thr(threadFunction);

thr.join();

return 0;

- cin відповідає стандартному вводу (тобто для вводу об’єктів стандартних типів), зв’язаний з клавіатурою;

- cout відповідає стандартному виводу (тобто для виводу об’єктів стандартних типів), зв’язаний з дисплеєм;

- cerr відповідає стандартному виводу для повідомлень про помилки, зв’язаний з дисплеєм;

- cprn відповідає стандартному виводу (тобто для виводу об’єктів стандартних типів), зв’язаний з принтером;

Форматування введення-виведення засобами мови С++

Існують два способи форматування введення/виведення.

Перший спосіб передбачає використання функцій для установки певних прапорів форматування, які перераховані в класі ios_base

enum { skipws = 0x0001 left = 0x0002 right = 0x0004 internal = 0x0008 dec = 0x0010 oct = 0x0020 hex = 0x0040 showbase = 0x0080 showpoint = 0x0100 uppercase = 0x0200 showpos = 0x0400 scientific = 0x0800 fixed = 0x1000 unitbuf = 0x2000 stdio = 0x4000 };

Розглянемо що роблять перераховані вище прапори.

Прапор Опис  
skipws Наступні на початку символи-роздільники (пропуски, символи табуляції і нового рядка) при виконанні введення відкидаються.  
left Здійснюється введення з лівим вирівнюванням  
right Здійснюється введення з правим вирівнюванням (за умовчанням)  
internal Знак або префікс системи числення вирівнює зліва, число вирівнює справа  
dec Чисельні значення виводяться в десятковій формі (за умовчанням)  
oct Чисельні значення виводяться у вісімковій формі  
hex Чисельні значення виводяться в шістнадцятковій формі  
showbase Дозволяє при виведенні указувати числову базу (десяткову, вісімкову, шістнадцяткову)  
showpoint Приводить до виведення десяткової коми і нулів справа для всіх чисел з плаваючою комою поза залежністю, потрібно це чи ні  
uppercase При виведенні чисел з плаваючою крапкою при використанні експоненціальної форми виводиться велика буква E. Також при виведенні чисел в шістнадцятковій формі символ 'x' виводиться у верхньому регістрі.  
showpos Призводить до того, що перед додатнім числом буде виводиться знак "+"  
scientific Числа з плаваючою комою виводяться з використанням наукової нотації  
fixed Числа з плаваючою комою виводяться в нормальній нотації  
unitbuf При кожній операції вставки виведення дані негайно заноситься в потік  
     

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

int add (int x, int y)

{ i

nt z;

z = x + y;

return z; }

Прототипы функций.

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

- функция определена в другом файле,

- функция определена после обращения к ней,

- функция определена в библиотеке функций, которая подключается к программе на этапе её компоновки или выполнения.

Например, функция сложения двух чисел имеет следующий прототип:

int add (int x, int y);

При объявлении функции в списке параметров можно указывать только типы параметров, опуская их названия. Например, функцию add можно объявить следующим образом:

int add (int, int); Заметим, что объявление функции заканчивается символом ‘;’

Тип функції можна не зазначати. За замовчуванням функція повертає у програму дане цілого типу int. Функцію, яка не повертає у програму жодного результату, оголошують з типом void. Для функції, яка не залежить від жодних параметрів, у круглих дужках записують службове слово void.

Назву функції надає користувач за правилом створення ідентифікаторів.

У списку формальних параметрів через кому записують змінні, зазначаючи їхні типи. Тип необхідно зазначати для кожної змінної окремо. Імена змінних можна опускати. Якщо функція не набуває жодних значень, то список формальних параметрів може бути відсутній. Круглі дужки опускати не можна.





Дата публикования: 2015-10-09; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...