Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie.docx
Скачиваний:
11
Добавлен:
28.09.2019
Размер:
149.14 Кб
Скачать

№1 Препроцессоры языка Си. Операторы передачи управления. Синтаксис использования оператора break.

Препроцессоры языка Си.

Препроцессор — это компьютерная программа, принимающая данные на входе и выдающая данные, предназначенные для входа другой программы (например,компилятора). Результат и вид обработки зависят от вида препроцессора; так, некоторые препроцессоры могут только выполнить простую текстовую подстановку, другие способны по возможностям сравниться с языками программирования. Наиболее частый случай использования препроцессора — обработка исходного кода перед передачей его на следующий шаг компиляции. Языки программирования C/C++  используют препроцессоры, значительно расширяющие их возможности.

В некоторых языках программирования этап компиляции и трансляции получили название «препроцессинга».

Препроцессинг в C/C++

Препроцессор Си

Наиболее широкое распространение среди лексических препроцессоров получил препроцессор языка Си, используемый в языках программирования Си и его потомке — C++. Препроцессор удаляет из кода комментарии, преобразует код в соответствии с макросами и выполняет иные директивы, начинающиеся с символа «#» (такие как #include, #define, разнообразные директивы типа #pragma).

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

 это break, continue, return, goto

break - прерывает текущую итерацию цикла и осуществляет выход из цикла

continue - прерывает текущую итерацию цикла и начинает новую

return - выход из функции (если функция типа void, иначе используется return <значение>, где <значение> - возвращаемый функцией результат соответствующего типа)

goto <метка> - переход на метку (на помеченный оператор)

Синтаксис использования оператора break.

Оператор break

Используйте оператор break для прерывания цикла switch или оператора с меткой label.  

Если Вы используете break без label, он немедленно прерывает ближайший содержащий while, do-while, for или switch и передаёт управление следующему оператору.

Если Вы используете break с label, он прерывает специфицированный помеченный оператор.

При возникновении некоторого события, в котором требуется возможность досрочно завершить цикл, для этого используется оператор Break;

Например:

Int a,n=8,I,g=33;

For(i=o; i<n; i++)

Cin>>a;

If(a==g) break;

If(i==n)

Cout<<g ne naiden;

Else cout<< g naiden pri i=<<i;

4. Что такое препроцессор? Что такое директива препроцессора? Привести примеры директив препроцессора.

Препроцессор — это компьютерная программа, принимающая данные на входе и выдающая данные, предназначенные для входа другой программы (например, компилятора). О данных на выходе препроцессора говорят, что они находятся в препроцессированной форме, пригодной для обработки последующими программами (компилятор). Результат и вид обработки зависят от вида препроцессора; так, некоторые препроцессоры могут только выполнить простую текстовую подстановку, другие способны по возможностям сравниться с языками программирования. Наиболее частый случай использования препроцессора — обработка исходного кода перед передачей его на следующий шаг компиляции. Языки программирования C/C++ и система компьютерной вёрстки TeX используют препроцессоры, значительно расширяющие их возможности.

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

В языки программирования Си и C++ встроена поддержка препроцессора. Строки в исходном коде, которые должны быть обработаны препроцессором в виде #define и #include называются препроцессорными директивами.

Директивы: Итак директивы препроцессора:

#include

#define

#undef

#if

#else

#endif

#ifdef (#if defined)

#ifndef (#if !defined)

#error

#line

#pragma

Например,

Код:

#include <iostream>

#include <stdlib.h>

решетка как раз и говорит, что это директива.

Другой пример: Код:

#define max(a,b) ((a) > (b) ? (a) : (b))

И если потом написать

Код:

z = max(x,y);

после обработки препроцессором он заменится на

Код:

z = ((x) > (y) ? (x) : (y));

5 Какие формы записи операторов if применяются в языке С ? Чем отличается оператор if от оператора switch? Привести примеры.

Простейшая, краткая форма оператора if используется для проверки одного условия, а затем либо выполнения, либо пропуска одного оператора или блока из не скольких операторов. В одну строку краткая форма If может быть записана так:

If<условие> Then<оператор> В блочной форме краткое ветвление выглядит следующим образом: If<условие>Then<оператор1><оператор2>Endl

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

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

If. . .Then. . . Else if: If<условие1>Then<блокОператоров!>Else if<условие2>Then<блокОператоров2> Else if<условие3>Then

<блокОператоровЗ>Elseif<условиеN>Then

<блокОператоровN>Else

<блокОператоров_Еlsе>EndI

Есть два вида условных операторов if( выражение ) оператор

if( выражение ) оператор else оператор

Во втором случае второй подоператор выполняется, если выражение есть 0. Как обычно, неоднозначность "else" разрешается посредством того, что else связывается с последним встреченным if, не имеющим else.

Оператор ifФормат оператора:

if (выражение) оператор-1; [else оператор-2;] Выполнение оператора if начинается с вычисления выражения.

Далее выполнение осуществляется по следующей схеме:

- если выражение истинно (т.е. отлично от 0), то выполняется оператор-1.

- если выражение ложно (т.е. равно 0),то выполняется оператор-2.

- если выражение ложно и отсутствует оператор-2 (в квадратные скобки заключена необязательная конструкция), то выполняется следующий за if оператор.

Пример:

if (i< j) i++: else { j = i-3; i++; }

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

Пример: intmain ( ) { intt=2, b=7, r=3; if (t>b) { if (b<r) r=b; } elser=t; return (0); } В результате выполнения этой программы r станет равным 2.

Если же в программе опустить фигурные скобки, стоящие после оператора if, то программа будет иметь следующий вид:

intmain ( ) { intt=2,b=7,r=3; if ( a>b ) if ( b<c ) t=b; elser=t; return (0); } В этом случае r получит значение равное 3, так как ключевое слово else относится ко второму оператору if, который не выполняется, поскольку не выполняется условие, проверяемое в первом операторе if.

Оператор switch — предлагает простой способ направления потока выполнения команд по различным ветвям кода в зависимости от значения управляющего выражения. Часто он оказывается эффективнее применения длинных последовательностей операторов if-else-if. Общая форма оператора switch имеет следующий вид:switch (выражение) { case значение1: // последовательность операторовbreak;

case значение2:// последовательность операторов break; ...

caseзначениеN:// последовательность операторов break;

default: // последовательность операторов, выполняемая по умолчанию

Оператор switch работает следующим образом. Значение выражения сравнивается с каждым из значений констант в операторах case. При обнаружении совпадения программа выполняет последовательность кода, следующую за данным оператором case. Если значения ни одной из констант не совпадает со значением выражения, программа выполняет оператор default. Однако этот оператор не обязателен. При отсутствии совпадений со значениями case и отсутствии оператора default программа не выполняет никаких дальнейших действий.Операторbreak внутри последовательности switch служит для прерывания последовательности операторов. Оператор switch можно использовать в последовательности операторов внешнего оператора switch. В качестве итога можно отметить следующие три важных свойства оператора switch.

•Оператор switch отличается от оператора if тем, что он может выполнять проверку только равенства, в то время как оператор if может вычислять булевское выражение любого типа. То есть оператор switch ищет только соответствие между значением выражения и одной из констант case.

•Никакие две константы case в одном и том же операторе switch не могут иметь одинаковые значения. Конечно, внутренний оператор switch и содержащий его внешний оператор switch могут иметь одинаковые константы case.•Как правило, оператор switch эффективнее набора вложенных операторов if.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]