Билеты 1-25 программирование. Алгоритм и его свойства
Скачать 51.04 Kb.
|
|
Int(16) | -32767;32767 | 2 |
Int(32) | -32767;32767 | 4 |
Short int | -32767;32767 | 2 |
Long int | -2147483647;2147483647 | 4 |
Signed int | То же самое, что и int | |
Unsigned int | 0;65535 | |
Булевский (логический) тип.
Булевский тип называется скалярным, строгим, дискретным, упорядоченным. Состоит из значений true и false. Источником булевских значений являются сравнения, имеющие следующую структуру: <выражение>< значение сравнения><выражение>. В общем случае выражения должны быть одного типа <, >, <=, >=, ==, !=. над значениями логического типа определены операции: [!, &&, ||]
Вещественный тип.
Знак мантиса | Абс. величина мантисы | Знак порядка | Абс. величина порядка |
1 бит | Сколько применим, сколько и будет. Опред. Точность. | 1 бит | Сколько применим, сколько и будет. Диапазон объема. |
Описание переменных и констант.
Константа-лексема, изображающая числовое, строковое или символьное значение. Константы делятся на 5 групп: целые, вещественные (с плавающей точкой), перечисление, символьные, строковые. Компилятор определяет тип константы, относя ее к той или иной группе. Целый константы, зависящие от значения, компилятор относит к тому или иному типу. Вещественные константы имеют 2 формы представления: с фиксированной точкой и плавающей. [цифры].[цифры]. Структура константы с плавающей точкой: [цифра][.][цифра][Ele][+|-][цифра] 5.12 Е-2. Символьные константы – это 1 или 2 символа заключенные в апострофы. ‘a’, ’t’, ‘+’, ‘5’, ‘\n’, ‘\t’, ‘\a’. Двухсимвольные константы-это управляющие константы, начинаются со знака \ и служат для (1) Изображения символов не имеющих графического изображения. (2) \, ‘, ?, “, \\, \?, \”. (3) для представления символов с помощью 16(сист) или 8(сист) кодов ‘L073’, ‘DF05’. (4) Строковая константа-это последовательность символов, заключенные в “ “, внутри константы могут использовать управляющие символы. Переменная в C++ это наименьшая область память, в которой хранятся данные определенного типа. У переменной есть имя и значение. Переменная должна быть описана. Общий вид оператора описания: [класс памяти][const]тип имя[инициатор]; \\ int a; \\ auto, extern, static, register. Класс памяти определяет время жизни и область видимости переменной. Если класс памяти не указан, то компилятор разбирает его из контекста. Время жизни переменной может постоянной внутри программы или переменной внутри блока. Область видимости-это часть текста программы из которой допустим доступ переменной. Инициализатор при описании переменной можно при присвоении начального значения. (1) Auto-автоматическая и локальная переменная. Класс может быть задан только переменной, определенной внутри блока. В этом случае память под переменную выделяется в начале блока и за пределами блока переменная недоступна. (2) Extern-глобальная переменная (внешняя). Она находится в другом файле программы и к ней имеется доступ из любого файла программы. (3) Static-переменная, доступная только в пределах текущего файла. (4) Register-аналлогичен классы auto, но память выделяется в регистрах процессора. Пример: int a; \\ void main() \\ { \\ int b; \\ extern int x; \\ static int c; \\ a=1; \\ int=a; \\ a=2; \\ ::a=3; \\ } \\ int x=4; ::-доступ к глобальной переменной. Описание переменной может быть выполнено как объявление или как определение, объявление содержит информацию о классе памяти и типе переменной, а определение добавляет к этому указание выделить память.
Арифметические операции.
Стандартные арифметические операции: int c; \\ c=a+b; \\ c=a-b; \\ c=a*b; \\ c=a/b; \\ cout<<(int) a/b;. Остаток от деления применим только для целых чисел: d%f. Существуют специальные операции: инкремент и декремент, например: i++, ++i, j--, --j. Размещение инкремента, декремента определяет приоритет операций, префиксная форма в отличие от постфиксной формы имеет наивысший приоритет. Например: int i=10, j=5; \\ int a=i++; \\ int b=++j;. Пример: int a1=4, a2=4; \\ double b=2, 4*++a1; \\ double c=2,4*a2++; \\ b=12; a2=5; \\ c=9,6; a2=5;. Пример: a+++b; \\ a+++++b; - складываем с а, после увеличиваем с в (но только после его увеличения)
Условное выражение (операция).
Инв | Unsigned char var=159;||1001 1001 Unsigned char not=var;||0110 0110 |
И | Unsigned char ask=0*11;||0001 0001 Unsigned char ask=var&mast;||0001 0001 |
или | Unsigned char res2=var|mask;||1001 1001 Var&=mask; |
Поразрядные операции языка С++. Примеры
Поразрядные операции: (1) отрицание (2) логическое и (3) логическое или. При выполнении поразрядного описания все одиночные биты устанавливаются в 0, а нулевое в 1. Unsigned char res3=var|mask;||1000 1000
Операторы языка. Оператор присваивания.
Оператором языка называется элементарная структура языка записи алг.действий, а так же для указаний порядка выполнения других действий. Операторы отделяются друг от друга точкой с запятой. Операторы делятся на простые. Они не содержат внутри себя других операторов. Так же делятся на составные. Операторы присваивания используются для задания значения некоторой переменной. Пример: a=0 \\ short: a_chat=-10; \\ short: a_long; \\ a_long=a_short; \\ float a_f=8,7 \\ int a_i; \\ a_i=a_f; Этот оператор присваивания означает выполнение преобразование типа и потери данных не произойдет. Автоматическое преобразование типов данных произойдет с потерей данных. Дл корректного преобразования типов используются след. конструкцию. <имя.пер1>=(тип данных)<имя.пер2> a_i=(int)a_f. К составным операторам относят собственно составленные операторы и блоки. В обоих случаях это последовательность операторов, заключенных в фигурных скобках {}. В блоке в фигурных скобках присутствует описание int n; \\ n++; \\ a--;
Средства ввода-вывода.
В языке С++ существует 2 способа для ввода-вывода. Функции унаследованы из языка С. Объекты С++ описаны в специальных библиотеках.(1)
Условные операторы. Вложенность условных операторов.
Синтаксис: (1) Вычислить выражение в. Если значение !=0, то выполняется оператор S1. Если выражение =0, выполняется оператор S2. Допускается краткая форма условного оператора. Условный оператор является составным, а значит в качестве оператора S может указываться другой условный оператор. В условном операторе доступно использование сложных условий.
Оператор выбора.
Иногда программе необходимо организовать выбор из нескольких вариантов. Можно использовать несколько условных операторов, но существует отдельный оператор выбора. Case константа 1: <операторы>; case константа 2: <операторы>; Вычисляется выражение- его результат должен быть целочисленным. Результат последовательности сравнивается с константами и при совпадении выполняются операторы, соответствующие этой константе, и все операторы расположены ниже. Если результат выражения не совпал ни с одной константой, то выполняются операторы, соответствующие метке [de fov if:<операторы>;]
Операторы цикла.
Операторы цикла являются управляющими и задают многократное выполнение некоторого участка программы тела цикла. Каждое выполнение тела называется итерацией. Пример: cin>>I; \\ switch (i) \\ { \\ case 1:cout< \\ }). Если условие !=0, то выполняется тело цикла и снова выполняем условие. Если условие =0, то выполняем следующий оператор программы. В некоторых условиях тело цикла может не выполняться ни разу. В других ситуациях тело цикла выполняется бесконечно (зацикливание). Для того, чтобы в теле цикла находился оператор, влияющий на условие. While (a>0)-зацикливание \\ i++; Схема 1: Обработка цифр в числе. Int N; \\ cin>>N; \\ while (N>0) \\ { \\ digit=N%10; \\ обработка digit \\ N=n/10; \\ } Найти сумму цифр, некратных 3. While (N>0) \\ { \\ digit=N%10; \\ if (digit %3!=0) s+=digit; \\ N=N/10; \\ } Схема 2: int n =20, i=1; \\ long S=a; \\ while (i<=N) Схема 3 цикл с постусловием: do Синтаксис \\ тело цикла=a; \\ while (действие) \\ f=n! \\ int n, f=1, i=0; \\ cin>>n; \\ do \\ { \\ i++, f=f*i; } \\ while (i<=n) \\ \\ i=1 \\ float a1*a2; e=0,001, p=1. Операторы цикла с параметром: for (<выр1>;<выр2>;<выр3>)-изменение значения счетчика. Выполняется инициализация счетчика. Вычисляется условное выражение 2 и если оно !=0, то выполняется тело цикла, затем выполняется выражение 3, затем снова выполняется выражение 2. Любое и выражение может отсутствовать, однако ; должны быть. (1) Уменьшение параметра: for (n=10; n>0; n--) {операт} (2) Изменение шага корректировки: for (n=2; n<60; n+=13) Возможность проверять условие, отличное от условия, налагаемое на число итераций: for (t=1, t*t*t ∑216, t++0) Корректировка шага возможна с помощью любой арифметической операции: for (d=100.0; d<100.0; d*=1.1) \\ for (x=i, y=-75, y=5*(x++)+10) Можно использовать несколько инициализирующих и корректирующих выражений: for (x=I, y=0;x=100, x++, y--) \\ int exit=0 \\ for (int num=0, num<100 && !exit; num++) \\ { \\ cin>>mov; \\ if(mov==0) exit=1; \\ cout<
Операторы перехода.
Операторы перехода выполняют безусловную передачу управления. (1) Оператор break-прерывание цикла. Break \\ { \\ <оператор> \\ if (<условие>) break; \\ <оператор>;. Пример: найти сумму чисел, вводимых с клавиатуры до тех пор, пока не будет введено 100 чисел или не введен 0. For(S=0; i=1; i<100, i++) \\ { cin>>x; \\ if(x==0) break \\ S+=x; (2) Оператор continue-переход к след. итерации цикла. Он используется, когда тело цикла содержит ветвление. Пример: найти кол-во и сумму положительных чисел. For (k=0, S=0, x=1; x!=0) \\ {cin>>x; \\ if(x<=0) continue; \\ k++; S+=x;. (3) Оператор go to – метки. В теле программы может быть использована метка <оператор>. В качестве метки используют любой идентификатор. Оператор go to может управлять направлением программы вверх и вниз. Int k; \\ go to m; \\ int a=3, b=4; \\ k=a+b; \\ m: int c=k+1; \\ go to h; Однако, нельзя передавать управление во внутрь операторов: if, switch, цикл. Основное свойство оператора go to: кол-во использований оператора в программе обратно пропорционально квалификации программиста. (4) Return [<выражение>]-оператор возврата из функции. Он всегда завершает выполнение функции и передает управление в точку вызова.
Обработка последовательности. Программирование арифметических циклов.
Для арифметических циклов заранее известно кол-во итераций. Схема 3.1: обработка последовательности из n элементов. Cхема 3.2: обработка двух соседних элементов последовательности.
For (i=1; i Cin>>b; Обработка а и b; a=b;} | Пример: верно ли, что последовательность является возрастающей. Cin>>N; cin>>a; bool p=1; For (i=1, i {cin>>b; If (a>=b) p=0 A=b } |
Обработка последовательности. Итерационные циклы.
Для итерационных циклов известно условие выполнения цикла. Обработка последовательности до ввода маркера. Cin>>x; min=x; \\ while (x!=маркер) \\ { int (x
Cin>>x; While (x!=маркер) { cin>>y; Обработка х и у; X=y} | Пример: верно ли, что последовательность является знакоцередующейся. Cin>>x; bool p=1; While (x) {cin>>y; If (y!=0) If (x*y>0) p=0; X=y; |