Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике.doc
Скачиваний:
118
Добавлен:
02.05.2014
Размер:
1.53 Mб
Скачать

Использование цикла while (предусловие)

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

while (тестовое выражение)

{ оператор 1;

оператор 2;

……………

оператор n;

}

Так же, как и цикл do, цикл while выполняется до тех пор, пока является истинным условие, но в отличие от конструкции do...while, условие проверяется до начала выполнения цикла, даже если цикл выполняется первый раз. Если условие окажется ложным, цикл не будет выполнен ни разу.

Операторы передачи управления Оператор безусловного перехода goto

Этот оператор организует переход на строку с так называемой меткой (произвольно выбранный идентификатор).

В примере оператор goto передает управление оператору, стоящему за меткой alpha, при достижении переменной i величины, превышающей m.

#include <iostream.h>

void main ()

{

int n=10;

int m=4;

int s=0;

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

{

s+=i;

if (i>m) goto alpha;

}

alpha: cout<<”\ns= ”<<s;

}

Результат:

s=15.

Использование goto в практике программирования настоятельно не рекомендуется, т.к. он затрудняет понимание программ и возможность их модификации.

Оператор break

Оператор break передает управление на первый оператор, стоящий после цикла.

#include <iostream.h>

void main ()

{

int t=1;

int s=0;

while (t<10)

{s+=t;

if (s>20) break:

t++;

}

cout<<”\nsum= ”<<s;

}

Результат:

sum=21.

Оператор continue

C помощью этого оператора завершается текущая итерация и начинается проверка условия дальнейшего продолжения цикла.

Сумма только отрицательных чисел:

#include <iostream.h>

main()

{

int sum, i, n, ch;

sum=0;

cin>>n;

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

{

cin>>ch;

if(ch>=0) continue;

sum+=ch;

}

cout<<sum;

return 0;

}

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

Препроцессор (макропроцессор) - это составная часть стандартного пакета языка Си, которая обрабатывает исходный текст программы до того, как он пройдет через компилятор.

Препроцессор читает строки текста и выполняет действия, определяемые командными строками. Если первый отличный от пробела символ в строке управляющий (#), то такая строка рассматривается препроцессором как командная. Строки, не являющиеся командными, либо подвергаются преобразованиям, либо остаются без изменения.

Макрогенерация (замена лексических единиц)

Командная строка вида #define name text вызывает в оставшейся части программы замену всех вхождений идентификатора name на строку text.

Например, определение #define p1 3.14159265 позволяет использовать в программе имя p1 вместо константы 3.14159265.

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

Внутри строк, заключенных в кавычки, подстановка не производится, так что, например, для определенного выше имени P1 в printf("P1"); подстановки не будет.

Директива #define предписывает компилятору заменить имя константы на то, что следует за этим именем. Если после имени константы ввести какую-нибудь инструкцию, компилятор тоже произведет подстановку. Например, в следующей инструкции мы подставляем на место константы ENTER функцию printf():

#define ENTER printf("Пожалуйста, введите число: ")

Теперь, при необходимости отобразить сообщение, записанное в аргументе функции printf(), достаточно в соответствующем месте программы использовать инструкцию ENTER:

#define ENTER printf("Пожалуйста, введите число: ")

main()

{

int age, size;

ENTER;

scanf("%d", &age);

ENTER;

scanf("%d", &size);

}

Директива #undef

Директива #undef используется для отмены действия директивы #define. Синтаксис этой директивы следующий #undef идентификатор

Директива отменяет действие текущего определения #define для указанного идентификатора.

Включение файлов

Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:

#include "имя файла"

#include <имя файла>

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

Директива #include может быть вложенной, т.е. во включаемом файле тоже может содержаться директива #include, которая замещается после включения файла, содержащего эту директиву.

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

Условная компиляция

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

#if константное_выражение

Проверяется значение выражения, составленного из констант и если оно не равно нулю, компилируется (включается) последующий текст.

#ifdef идентификатор

Последующий тест компилируется, если "идентификатор" уже был опредеоен для препроцессора в команде #define.

#ifndef идентификатор

Последующий текст компилируется, если "идентификатор" в данный момент не определен. Конструкция

#undef идентификатор

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