Алгоритмом называется точная инструкция исполнителю в понятной для него форме, определяющая процесс достижения поставленной цели на основе имеющихся исходных данных за конечное число шагов.
Основными свойствами алгоритмов являются:
1. Универсальность (массовость) — применимость алгоритма к различным наборам исходных данных.
2. Дискретность — процесс решения задачи по алгоритму разбит на отдельные действия.
3. Однозначность — правила и порядок выполнения действий алгоритма имеют единственное толкование.
4. Конечность — каждое из действий и весь алгоритм в целом обязательно завершаются.
5. Результативность- по завершении выполнения алгоритма обязательно получается конечный результат.
6. Выполнимость — результата алгоритма достигается за конечное число шагов.
Формы представления алгоритмов.
На практике наиболее распространены следующие формы представления алгоритмов:
- словесная (записи на естественном языке);
- графическая (изображения из графических символов);
- псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
- программная (тексты на языках программирования).
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке. Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.
7. Aрифметические операции в C++:
+ — сложение
— — вычитание
* — умножение
/ — деление
% — остаток от деления
8. В С++ существует три логические операции:
1) Логическая операция И ;
2) Логическая операция ИЛИ ||;
3) Логическая операция НЕ ! или логическое отрицание.
Поразрядные (побитовые) операции в языке С.
Поразрядные (побитовые) операции можно производить с любыми целочисленными переменными и константами. Эти действия не применимы к переменным типа float, double или long double. Результаты побитовых операций будут иметь целочисленное значение. К поразрядным операциям относятся следующие операции:
- ( или and ),
- | ( или OR ),
- ^ ( или XOR ),
- — ( или NOT ),
- сдвиг влево,
- сдвиг вправо.
В случае побитной операции сравниваются значения каждой пары битов. Тем самым обеспечивается доступ к битам. Эти операции находят применение в драйверах устройств, программах, связанных с принтером, модемом и другими устройствами. Когда выполняются логические операции над выражениями, то в итоге Вы получаете либо 0, либо 1. Однако в случае поразрядных операций так же выполняются логические действия, но они не имеют результатом обязательно только либо 0, либо 1. Рассмотрим примеры.
1). Пусть ch=ch127;
Тогда,
если ch=’A’, т.е. 11000001
и число 127 есть 01111111
В итоге будет 01000001
Если соответствующие разряды одинаковы, то в результате имеем 1, иначе имеем 0. Так работает операция and или логическое умножение.
2). Пусть ch=ch | 128;
Тогда,
если ch=’A’, т.е. 11000001
и число 128 есть 10000000
В итоге будет 11000001
Поразрядные операции удобны для организации хранения в сжатом виде информации о состоянии некоторых переключателей: включен/выключен (on/off). В одном байте можно хранить 8 таких флагов.
3). Пусть ch является хранилищем таких флагов. Проверить, находится ли флаг в третьем бите в состоянии On, можно следующим образом:
if (ch4) printf(Третий бит содержит 1, состояние On);
Эта проверка основывается на двоичном представлении числа 4: 00000 100
Операции сдвига (влево или вправо) применимы только к целочисленным переменным. При этих операциях сдвигаются все биты левого операнда на число позиций, опеределенных выражением вправа от знака операции сдвига. Операции сдвига обозначаются двойными знаками:- сдвиг вправо.
4). Пусть x = 9, что в двоичном представлении имеет вид: 0000 1001
Тогда x=9 x=93 есть код: 00000001;
x=95 есть код: 00000000;
Легко заметить, что операция сдвига ведет к потере старших или младщих разрядов. Применение сдвиговк одной и той же величине может изменить значение этой переменной из-за потери разрядов.
5). Пусть беззнаковая величина unsigned char x=255;
Выполним сдвиг влево на 3 разряда и затем так же сдвиг вправо на 3 разряда. Получим:
x=255 x=111110003 в двоичном коде будет иметь вид: 00011111.
3. Операции [] и { } в языке С.
В языке С круглые и квадратные скобки так же рассматриваются как операции. Причем они имеют самый наивысший приоритет. Поразрядные операции порождают еще несколько сложных операций присваивания: |=, =, ^=, =.
10. Операция присваивания в языке программирования C++ обозначается знаком ‘=’. Как и другие операторы в C++, она может быть перегружена.
Операция присваивания копированием — особый вид операции присваивания, используемый для присваивания объектов одного класса друг другу. Является одним изособых членов-функций и генерируется автоматически компилятором в случае, если нет явного объявления программистом. Код, сгенерированный компилятором, выполняетповерхностное копирование.
Операция присваивания копированием отличается от конструктора копирования тем, что должен очищать члены-данные цели присваивания (и правильно обрабатывать самоприсваивание), тогда как конструктор копирования присваивает значения неинициализированным членам-данным.
11, 12, 13, 14, 15 :D. Операторы
Операторы Выражения
Самый обычный вид оператора — оператор выражение. Он состоит из выражения, за которым следует точка с запятой. Например:
a = b*3+c;
coutlseek(fd,0,2);
Пустой оператор
Простейшей формой оператора является пустой оператор:
;
Он не делает ничего. Однако он может быть полезен в тех случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен.
Блоки
Блок — это возможно пустой список операторов, заключенный в фигурные скобки:
{ a=b+2; b++; }
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.
Операторы if
Программа в следующем примере осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы; предполагается, что вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:
Заметьте, что условие в операторе if должно быть заключено в круглые скобки.
Операторы switch
Оператор switch производит сопоставление значения с множеством констант. Проверки в предыдущем примере можно записать так:
Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.
Оператор while
Рассмотрим копирование строки, когда заданы указатель p на ее первый символ и указатель q на целевую строку. По соглашению строка оканчивается символом с целым значением 0.
while (p != 0) {
*q = *p; // скопировать символ
q = q+1;
p = p+1;
}
*q = 0; // завершающий символ 0 скопирован не был
Следующее после while условие должно быть заключено в круглые скобки. Условие вычисляется, и если его значение не ноль, выполняется непосредственно следующий за ним оператор. Это повторяется до тех пор, пока вычисление условия не даст ноль.
Этот пример слишком пространен. Можно использовать операцию ++ для непосредственного указания увеличения, и проверка упростится:
while (*p) *q++ = *p++;
*q = 0;
где конструкция *p++ означает: взять символ, на который указывает p, затем увеличить p.
Пример можно еще упростить, так как указатель p разыменовывается дважды за каждый цикл. Копирование символа можно делать тогда же, когда производится проверка условия:
while (*q++ = *p++) ;
Здесь берется символ, на который указывает p, p увеличивается, этот символ копируется туда, куда указывает q, и q увеличивается. Если символ ненулевой, цикл повторяется. Поскольку вся работа выполняется в условии, не требуется ни одного оператора. Чтобы указать на это, используется пустой оператор. C++ (как и C) одновременно любят и ненавидят за возможность такого чрезвычайно краткого ориентированного на выразительность программирования.
Оператор for
Рассмотрим копирование десяти элементов одного вектора в другой:
for (int i=0; i
Это эквивалентно
int i = 0;
while (i q[i] = p[i];
i++;
}
но более удобочитаемо, поскольку вся информация, управляющая циклом, локализована. При применении операции ++ к целой переменной к ней просто добавляется единица. Первая часть оператора for не обязательно должна быть описанием, она может быть любым оператором.
Например:
for (i=0; i
тоже эквивалентно предыдущей записи при условии, что i соответствующим образом описано раньше.
Описания
Описание — это оператор, вводящий имя в программе. Оно может также инициализировать объект с этим именем. Выполнение описания означает, что когда поток управления доходит до описания, вычисляется инициализирующее выражение (инициализатор) и производится инициализация.
15. Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.
В языках высокого уровня описание подпрограммы обычно состоит по меньшей мере из двух частей: заголовка и тела. Заголовок подпрограммы описывает её имя и, возможно, параметры, то есть содержит информацию, необходимую для вызова подпрограммы. Тело — набор операторов, который будет выполнен всякий раз, когда подпрограмма будет вызвана.
Вызов подпрограммы выполняется с помощью команды вызова, включающей в себя имя подпрограммы. В большинстве современных языков программирования команда вызова представляет собой просто имя вызываемой подпрограммы, за которым могут следовать фактические параметры
Статьи к прочтению:
- По результатам производственной практики
- По результатам промежуточной аттестации в весеннем семестре (по итогам летней
Уроки по C++ 5 урок. Битовые операции
Похожие статьи:
-
Типы данных и операции в языке си. выражения
Типы данных. Программа на процедурных языках, к которым относится Си, представляет собой описание операций над величинами различных типов. Тип определяет…
-
Типы данных Программы оперируют с различными данными, которые могут быть простыми и структурированными. Простые данные — это целые и вещественные числа,…