Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП все ответы.doc
Скачиваний:
4
Добавлен:
28.10.2018
Размер:
312.83 Кб
Скачать

7. Директивы препроцессора.

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

Все директивыпрепроцессора нач-ся со знака # (include) <имя файла>

# include “имя файла” (включение в текст проги содержимого указанного файла). <> поиск файла осуществляется в стандартном каталоге для хранения заголовочных файлов, “ ” сначала поиск в каталоге с прогой, а потом в стандартном каталоге.

# define идентификатор последовательности символов. Замена кажд вхождения идентиф в тексте проги на указанную посл-ть символов(макроподстановка). # if – конст_выр-е

# endif - директива условной компиляции (если условие истинно,то текст обрабатывается препроц, в противном случ пропуск)

# error – сообщение об ошибке, когда препроцессор включает данную директиву,он прекращ компиляцию и выдаёт сообщ об ошибке

Все директивы д. записываться в одну строку

8. Организация ветвления.

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

1)Условные if(услов){послед-ть оп1} ; else {послед-ть оп2}

2)Выбора switch(кслов) {case конст1: послед-ть оп1; break; ….. default: послед оп}

Оп-р break использ для прерывания послед-ти выполнения оп-ов,указанных в блоке case.Выражен указ в default выполн,если выраж указ в switch не приним ни одно из значен case.

Пр1: if(x>y) { a=x;}else a=y;

Пр2: switch(code) {case o:x=x+1; break;….default: a=0;}

9. Организация циклов.

Операторы цикла:

1)С предуслов While(усл){посл-ть оп-ов;}

2)С постусловием do{посл оп}While(усл);

3)Со счётчиком for(нач значж усл циклажшаг){тело цикла;}

Пр1:int digits=0; While(N>0) {digits;N=N\10}

Пр3:for(i=0;i<N,i++) print(“Макс”);

Оп-р переходав goto метка

Оп-р возврата return <значение>

10. Массивы.

Массив-Это набор несколких величин одного и того же типа.

Объявление: тип имя массива [конст]

Int mas[23]

Доступ к эл масс осуществл так же,как и в др яп: a[i],a[0],b[]…….

Пр1:char array[5]={‘A’,’B’,’V’,’Y’,’O’};

Пр2:int m[10] [5]

Пр3:double a[] [2]={{3.2,4.8},{2.8,-5}}

Обработка и создание массивов. Массив может быть введен с клавиатуры. Обработка эле массива производ в цикле For (i=0; i<11; i++) cin >> a[i];

11-12 Функции. Основные понятия. Рекурсия.

Проги на C и C++ состоят только из одной ф-ии(main).Объявляется ф-я аналогично определению переменной.Определяется сначало только имя ф-ии,тип результата ф-ии,а также в (аргум ф-ии и их типы).

Int sum(int a,int b,int с).Тип аргум долж совпад или быть совместимым с типом паров.

Объявления и определения ф-й. < возвращаемый тип > < имя ф-и > (<список типизир парам-ов>) {  < тело ф-и >}            

Список парам-ов с указанием типов д им сл вид:[const ] < тип1><параметр1>, [const ] тип2 параметр2,...

Общая форма задан ссылочных парам-ов: [const] <тип 1&><парам 1>, [const]<тип 2&>парам 2>...

Способы передачи аргум в ф-ю:

1)Передача копии переменной

2)по указателю-перемен,содержащая адреса памяти,распределённой для размещен др переменных. Int*p

3)по ссылке P=&a;

Обычно объявленная ф-я явл глобальной, т.е. она доступна всем др ф-м.Еслиобъявить прототип ф-и в той, из кот она вызыв, то прототип будет скрыт от др ф-й. При вызове ф-и необх поставить в соответствие парам передаваемые аргум.

Ключ слово return передает в вызывающую ф-ю возвращаемое знач,если оно существует. Если тип возвращ-го ф-ей значения - void, вы не обязаны использовать оп-ор return

Рекурсия.такая конструкция,при которой ф-я вызывает саму себя.

Рекурсивн ф-ии:

1)пряморекурс-содерж в своём теле вызов самой себя

2)косвеннорекурсивная-ф-я содержит другую ф-ю,котор в свою очередь содержит первую.

Int Fact(int n) { int ( n<0) return 0; else return n*fakt (n-1);}

13, Ф-ции.Передача парам-в.

1)по указателю(-это переменная сод-щая адреса памяти распределенной для размещения др-х переем-х):пр, int *p. Реализование указателя:пр, *p= ‘a’. В С сущ-ет только такой способ передачи аргументов в ф-цию(передачи по ссылке аргументов нет).Пр,

int a=2; int b=1;

int f(int*a, int*b)

{

(*a)--;

return (*a-*b);

}

printf(“% d”, f (&a,&b));

printf (“% d”,a);

2)по ссылке: для получения адреса переменной в языках С,С++ исп.оп-р взятия адреса. Обозначается &. Пр, int *p;

p=&a;

Пр, int a=2; int b=1;

int f(int &a, int &b)

{

a--;

return a-b;

}

printf(“% d”, f (a, b));

printf (“% d”,a);

Фактически механизм передачи аргументов по ссылке введен в С++(в яз. С отсутствует) для упрощения работы с указателем. При передаче аргументов в ф-цию по ссылке или указателю в ф-ции д-е аргумента могут изм-ся. В большинстве случаев этого следует избегать (в некот.случав необходимо)передачи по ссылке (указателю). Однако большие объекты значительно эф-ны передавать по ссылке или указателю,чем по значению. Поэтому такой объект объявляется с модификатором const.Пр,

void f (const int & arg)

{

//arg нельзя изм-ть(без исп-ния явных преобразований)

}

14, Ф-ции.Передача массивов в качестве парам-в.

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

#include <iostream.h>

int sum(int x[5])

{ int res=0

for(int i=0; i=5; i++)

res+=x[i];

return res;

}

void main()

{ int mas[3] [5], i, j;

for(j=0; j<3; i++)

for(j=0, j<5; j++)

mas[i][j]=i*j;

for(j=0; j<3; i++)

cout<<“\n res=”<< sum(mas[i])

}

2. Массив в качестве параметра в функции может быть объявлен без указания его размера. Так как сам массив в стек не копируется, то размер массива в общем случае компилятору не требуется. Контроль правильности использования индекса массива возлагается на программиста. В этом случае используется указатель на первый элемент массива.

int sum(int x[])

{ int res=0;

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

res+=x[i];

return res;

}

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

#include<stdio.h>

int sum (int*x)

{ int res=0;

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

res+=*x++;

return res;

}

void main ()

{ int mas[3][5], i, j;

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

for(j=0, j<5; j++)

mas[i][j]=i*j;

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

printf(“\n res=%d”, sum(&mas[i][0]));

}

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

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