Сделай Сам Свою Работу на 5

putch(7) //звуковой сигнал для неверного символа





Операторы присваивания,

Операторы ввода и вывода данных,

Операторы вызова функций,

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

Операторы преобразования данных:

(последовательно выполняемые операторы)

 

Все они являются операторами – выражениями.

Выражение, оканчивающееся ‘ ; ‘ – это оператор - выражение :

 

1. Оператор – выражение - вызов функции , не возвращающей никакого значения.

Форма:

имя функции ( список фактических параметров);

Пример:

Void main ()

{ void cd (char) ; // прототип функции

cd ( ‘ *’) ; // оператор - выражение

}

 

2. Оператор – присваивания является оператором –выражением.

 

Оператор простого присваивания:

L-значение = выражение ;

 

Оператор составного присваивания:

L-значение op= выражение ;

 

Примеры:

x*= i; … i=x-4*i;

 

3. Оператор – выражение – инкремент или декремент L-значения:

(L-значение)++;

- -(L-значение);

Пример:

i++;

 

4. Операторы ввода - вывода данных также являются операторами –выражениями.



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

Препроцессорная директива

#include <iostream.h>

 

подключает к программе библиотеку средств ввода-вывода, построенную на основе механизма классов.

Поток – это обмениваемая последовательность байт между оперативной памятью и внешними устройствами (файл на диске, принтер, клавиатура, дисплей, стример и т.п.), или между различными участками оперативной памяти.

 

cin– имя стандартного входного потока ( по умолчанию связанного с клавиатурой);

cout– имя стандартного выходного потока (по умолчанию связанный с экраном дисплея);

>> - операция извлечение данных из потока или операция ввода;

<< - операция вставки данных в поток или операция вывода;

 

Операции возвращают ссылки на соответствующие потоки (т.е. фактически сами потоки)

Операции извлечения данных из потока и вставки данных в поток являются основой для операторов ввода-вывода данных.



 

Форма оператора ввода ( ввод данных с внешнего устройства в ОП) :

cin >> L-значение ;

L-значение –это именованный участок оперативной памяти, значение которого можно изменять, частный случай – имя переменной. В последнем случае формат оператора ввода таков:

 

cin >> имя переменной ;

 

Из потока cin (с клавиатуры) извлекается значение и помещается в оперативную память, выделенную под переменную.

Но не так все просто. Дело в том, что визуальное представление данных не является формой хранения данных в ЭВМ. Внутри ЭВМ данные хранятся в виде двоичных кодов, которые регламентированы для каждого типа данных. При вводе выполняется преобразование символов из потока (с клавиатуры) в двоичные коды внутреннего представления данных, при этом происходит автоматическое распознавание типов вводимых данных. В отличие от функции scanf,при использовании потока cinне надо указывать правила преобразования данных.

 

Форма оператора вывода (вывод данных из ОП на внешнее устройство):

cout<< выражение ;

 

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

 

 

Операторы управления работой программы

 

1. Пустой оператор .

;

Пример – циклический оператор, все циклические действия которого определены в заголовке, тело цикла – пустой оператор.



for ( n = 0 , m =1 ; n < 7 ; n++, m * =n ) ;

 

2. Составной оператор- последовательность операторов, заключенная в фигурные скобки.

 

3. Блок - определения, описания и раздел операторов, заключенные в фигурные скобки .

 

После составного оператора и блока не ставится ‘ ; ‘

Возможно вложение блоков и составных операторов

4. Описания и определения , после которых стоит ‘ ; ‘ также считаются

операторами .

 

Перед любым оператором может стоять метка (перед пустым оператором, перед описаниями и определениями и т.д.), метки – это идентификаторы, они локализуются в теле функции.

Иногда удобно поставить метку перед пустым оператором в конце функции.

Примеры:

t: x= 4+x *3;

m: int r = 5, q = 2;

k: ;

 

5. Операторы выбора реализуют в программе алгоритмические схемы ветвления:

Условный оператор:

(схема – развилка)

If (выражение) оператор 1 else оператор 2

 

Выражение – может быть любым скалярным выражением, результат должен иметь арифметический тип или тип указателя;

Оператор– один простой или составной.

 

Если Выражение истинно, то есть его значение не равно нулю или не пустой указатель (NULL) - выполняется оператор 1, в противном случае выражение – ложно и выполняется оператор 2.

Таким образом, выражение в условном операторе всегда является логическим!

Его всегда проверяют на истинность или ложность.

 

Операторами 1,2 не могут быть описания и определения, но могут быть блоки с описаниями и определениями

Перед else ставится ‘ ; ‘, если оператор 1 – простой оператор.

if ( x>0) { x = -x ; q (x) ;} else { int i=3; q( i*x) ;}

 

Сокращенная форма

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

Пример:

if( a>b) a = -a ;

В случае ложности выражения никаких действий не выполняется.

 

ВЛОЖЕННЫЕ УСЛОВНЫЕ ОПЕРАТОРЫ

 

Если оператор1или орератор2илиоператорявляются условными операторами, то эти операторы являются вложенными условными операторами. При определении, к какому условному оператору относится каждая альтернативная ветвь, существует правило: каждый else соответствует ближайшему к нему, свободному оператору if.

 

Пример:

… if (x = =1) if ( у = =1) cout << '' x =1 и y =1 “ ;

else cout << “ x != 1” ;

- оператор составлен не правильно.

 

Верные варианты:

 

if ( x = = 1) { if ( у = = 1) cout << '' x =1 и y =1 “ ;}

else cout << “ x != 1” ;

или

 

if (x= =1) if ( y= =1) cout<<'' x =1 и y =1 “ ;

else ; else cout << “ x != 1” ;

 

Алгоритмическая схема – ветвление реализуется с помощью оператора switch,который имеет две формы.

Переключатель:

 

Switch ( переключающее выражение)

{

case константное варажение1: операторы1;

case константное выражение N: операторы N;

default: операторы;

}

 

переключающее выражение – целочисленного (возможно символьного) типа;

константные выражения того же типа что и переключающее выражение и различны;

Возможны несколько выражений:

сase 1 : case 5: операторы;

 

Альтернативный выбор

Switch (выражение)

{

case const1 : операторы ;

break;

case constN : операторы ;

break;

default: операторы;

}

можно включать описания и определения объектов в операторы, но их следует включить в блоки:

 

int i; … switch (i)

{ case 4: { char d=' q '; float f=56.9;

if ( int(d) >int( f ) ) cout<<d; else cout<<f;}

break;

case 1 : cout << i ;

break;

}

 

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

 

1) цикл с предусловием

(при входе в цикл проверяется условие)

 

While (выражение условия) тело цикла

 

2) цикл с постусловием

(при входе в цикл выполняется тело цикла , а затем проверяется условие)

do

Тело цикла

while (выражение условия) ;

 

3) итерационный цикл с параметром

( цикл с предусловием)

 

for ( инициализация цикла ;

выражение условия ;

Список выражений )

Тело цикла

 

Выражение условия- скалярное выражение (ариф., сравн., логич., типа указателя)

- Цикл повторяется пока значение выражения –условия не станет равным нулю ( или NULL).

- Тело цикла не может быть описанием или определением,

Это оператор простой или составной или блок.

Функция подсчета длины строки:

int lt (char*stroka)

{ int ln =0; while ( * stroka++) ln++ ;

return ln ;}

Выражения условия:

while (a<b) , while (point != NULL) (point-указатель) ,

while(point) , while (point ! = 0)

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

Бесконечные циклы : while (1) ;

do ; while (1);

Примеры:

1)… char letter;

cout <<”Вы желаете продолжить? ( Y/N ) “;

letter = getch(); // чтение буквы с клавиатуры

letter = toupper(letter); // преобразование в прописную

while ((letter != 'Y') && ( letter != 'N'))

{ putch(7); //звуковой сигнал для неверного символа

letter = getch() ;

letter = toupper(letter);

}

 

2) … cout <<”Вы желаете продолжить? ( Y/N ) “

do {

letter = getch(); // чтение буквы с клавиатуры

letter = toupper(letter); // преобразование в прописную

if ( ( letter != 'Y' ) && (letter != 'N') )

putch(7) //звуковой сигнал для неверного символа

}

while ((letter != 'Y') && ( letter != 'N'));

 

Цикл for

Заголовок после зарезервированного слова forв круглых скобкахвключает три части: секция инициализации, выражение условия и список выражений для коррекции, которые разделяются - ‘ ; ‘ . Каждая из этих частей может отсутствовать, но даже если они отсутствуют, разделители ‘;’ должны присутствовать в заголовке.

Инициализация – это выражения, определения , описания ,разделенные ‘ ,’ Вычисляются один раз при входе в цикл.

Выражение условия- логическое выражение, аналогично другим циклам, если его нет, полагают, что оно истинно.

Выражения из списка – вычисляются на каждой итерации после выполнения тела цикла

Тело цикла – простой, составной оператор или блок.

For ( ; ; ) ; - бесконечный цикл

For ( ; 1 ;) ; - бесконечный цикл

For – цикл с заданным числом повторений, для подсчета числа проходов используется управляющая переменную цикла

Управляющая переменная может изменяться на любую требуемую величину

For ( c =0 ; c<=100 ; c +=10)…;

For ( b =100 ; b >= -100 ; b -= 25)… ;

For ( letter =’A’ ; letter <= ‘Z’ ; letter ++)…;

For ( pr =0.0 ; pr <= 100.0 ; pr +=0.5 ) …;

Пример:

… for ( int i = 0 ; i< 3 ; i++) cout << i ;

for ( ; i > 0 ; i -- ) cout << i ;

0 1 2 32 1

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

Вложенные циклы

Разрешено вложение любых циклов в любые циклы.

Правило: для каждой итерации (каждого прохода) внешнего цикла выполняются все итерации внутреннего цикла.

… void main()

{ for (int i =0 ; i < 3 ; i ++ ) // внешний цикл

{ cout <<’\n’<< i ; // переменная i действует до конца блока

// функции main

for ( int i = 6 ; i>3 ; i-- ) cout << i ; //переопределение

// другой переменной с тем же именем до конца блока

// внешнего цикла

cout << i ;

}

} 0 6 5 4 3

1 6 5 4 3

2 6 5 4 3

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

1) Оператор безусловного перехода.Форма:

goto идентификатор метки;

запрет : нельзя передавать управление через описание, содержащее инициализацию объекта

можно перескакивать через вложенные блоки (с описанием с инициализацией)

Ex.1

Goto A; - ошибка

float x = 1.2;

Goto A; - допустимо

{int n=2;

x*=n;}

A: cout <<x;

Рекомендации:

1) не входить внутрь блока извне;

2) не входить внутрь условного оператора;

3) не входить внутрь переключателя;

4) не передавать управление внутрь цикла;

Применение:

1) выход из вложенных циклов или переключателей;

2) к одному участку программы необходимо перейти из разных мест функции;

2) Оператор возврата из функции.Форма:

return выражение;

return ;

Значение выражения (только скалярного) возвращает функция.

Если функция типа void ,то в return нет выражения, или return отсутствует.

3) Оператор выхода из цикла или переключателя:

break;

Осуществляет передачу управления к следующему за циклом или переключателем оператору.

Если циклы (или переключатели) вложенные позволяет выйти из внутреннего цикла во внешний цикл.

 

4) Оператор перехода к следующей итерации :

continue:

- завершает текущую итерацию цикла ( используется только в циклах ) и начинается проверка условия продолжения цикла (следующей итерации)

- равносилен передаче управления на пустой оператор в самом конце тела цикла

#define n 100

Void main ()

{ int k, i ;

float x [n] = { …} , s ;

for ( s=0.0 , k = 0, i = 0 ; i < n ; i++ )

{ if ( x[i] <=0.0) continue ;

k++ ; //количество только положительных элементов

s + = x[i]; // сумма положительных элементов

}

 

 

Функции printf () и scanf ()

- осуществляют форматированный вывод и ввод в стандартные потоки (по умолчанию на консоль)

- прототипы в файле STDIO.H

int printf ( char * управляющая строка , arg… );

int scanf ( char * управляющая строка , arg…) ;

1) первый параметр всегда символьная строка, содержащая некоторые символы и команды (спецификаторы) формата сообщающие какие данные надо вводить или как надо выводить аргументы.

Спецификаторы задаются с помощью знака % с буквами и цифрами

2) последующие параметры (их переменное число)- аргументы

для printf – это значения выражений, в частности числа, переменные, константы , строки.

для scanf – это список адресов переменных типы которых, указанных в строке формата для каждого аргумента последовательно ( первый формат соответствует первому аргументу, второй – второму и т. д.)

printf

Функция printf() возвращает общее число выводимых значений при успешном выводе

Int result;

Result =printf (“ … \n”, …)

int

%d , %i – для вывода десятеричных значений;

%0 - в восьмеричном формате;

% x, % X –в шестнадцатеричном;

 

int v = 255;

printf (“ значение %d в восьмеричном формате %0\n”, v, v )

printf('' значение %d в шестн. формате %x и %X\n’’, v, v,v)

значение 255 в восьмеричном формате 377

значение 255 в шестн. формате ff и FF

unsigned int

%u unsigned int a = 42000

printf (“%u % d\n’’, a, a ) 42000

-23536

long floatshot unsignedlong double

long int % ld % f % hu % lf

 

символы % и 0 и x ,X

%% %#0 %#x %#X

char

% c printf ( “ буква %c\n’’ , ‘A’); буква А

printf ( “ буква %c\n’’ , 65); буква А

 

Вывод чисел с плавающей точкой в экспоненциальном виде: %e или %E

Float a=3.14159 , b= 2.0031;

Printf (‘’ %e %E” , a, b )

3.14159e +00 2.0031E+00

на усмотрение машины %g

printf ( “ %g\n’’, 0.1234) ; printf (“%g\n”,0.000001234)

0.1234 1.234e-06

Строки

%s char t [255]=” Pascal”;

printf ( “ Название-%s\n”, t)

Название – Pascal

Вывод указателей

%p , %n

int v ; printf(“Адрес переменной=%p\n”, &v)

Адрес переменной= FFF4

Вывод числа со знаком(положительным и отрицательным)

%+d %+f int a=5, b=-5; float c= 1.5, d=-1.5;

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

+5 -5 +1.5 -1.5

Количество символов- мест для вывода

Int v = 5;

Printf( “%1d \n”,v) 5

Printf( “%2d \n”,v) 5

Printf( “%3d \n”,v) 5

Если дано меньше, чем надо для вывода целого , символьной строки , добавляется необходимые места

Вывод целых с ведущими нулями

Printf( “ %01d\n”, v) 5

Printf( “ %02d\n”, v) 05

Форматирование чисел с плавающей точкой

1) число указывает общее количество символов для вывода

2) число указывает количество символов справа от десятичной точки

float f =1.23456;

printf( “ %8.1f\n”,f) _ _ _ _ _ 1.2

printf( “ %8.3f\n”,f) _ _ _ 1.235

форматирование экспоненциального представления аналогично:

printf( “ %12.1 e\n”, f) _ _ _ _ _ 1.2e+00

printf( “ %12.5 e\n”, f) _ 1.23456e+00

Выравнивание влево и вправо:

Printf ( “ %5d , 5) _ _ _ _ 5

Printf ( “ %-5d , 5) 5 ­_ _ _ _

Scanf()

Функция производит ввод данных с клавиатуры в переменные, адреса которых задаются аргументами (arg)

Возвращаемое значение функцией – количество успешно введенных и присвоенных значений

Управляющая строка содержит спецификации формата, пробелы и др. символы.

Спецификации:

%c - чтение символа

%d – чтение десятичного целого

%i – чтение десятичного целого

%e- чтение числа типа float

%h- чтение числа типа short int

%0- чтение восьмеричного числа

%s- чтение строки

%x- чтение шестнадцатеричного числа

%p- чтение указателя

-Спецификация формата не содержит пробелов.

Пробельные символы - пробелы ( _ ), символы табуляции ( ‘\t’) , новой строки ('\n') перевода каретки ('\r’) - разделители между двумя вводимыми символами. Символы очередного значения выделяются до первого пробельного символа.

Другие символы (ненулевые) указывают на чтение и отбрасывание этих символов, это любые символы, которые надо игнорировать.

Scanf(“%dplus%d” , &i , &j) поток символов 5plus10

i=5 , j = 10

Переменные должны указываться адресом:

Scanf(“%d %d “, &i , & j);

Scanf(“%5s “, str)

Возможно задать множество поиска - список символов в квадратных скобках

Char s[10],t[10];

Scanf (“%[0123456789]%s’’,s ,t )

Поток ввода : 123прлаы456

S= “123” t= “прлаы456”

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.