Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgfgk,jgggk,j.docx
Скачиваний:
5
Добавлен:
24.11.2019
Размер:
35.46 Кб
Скачать

1. Тип данных — фундаментальное понятие теории программирования. Тип данных определяет множество значенийнабор операций, которые можно применять к таким значениям, и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам.

2. В языке не очень много базовых типов. Это число (целое или с плавающей запятой), атом, двоичные данные, битовые строки, функции-объекты (аналогично JavaScript-у), идентификатор порта, идентификатор процесса (Erlang процесса, а не системного), кортеж, список. Существует ряд псевдотипов: запись, булев, строки. Любой тип данных (не обязательно элементарный) называется терм.

3,4. Любая информация в памяти компьютера представляется с помощью нулей и единиц, то есть с помощью двоичной системы счисления. Первоначально компьютеры могли работать только с числами. Теперь это числа, тексты, графические объекты, видеоинформация. Работа с данными сводится любого типа к обработке двоичных чисел – чисел, записываемых с помощью двух цифр – 0и 1. В компьютере различаются два типа числовых величин: целые числа и вещественные числа. Различаются способы представления в памяти компьютера. Они называются:

  1. форма с фиксированной точкой (применяется к целым числам)

  2. форма с плавающей точкой (применяется к вещественным числам).

5. Алгоритм и его свойства

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

Основными свойствами алгоритмов являются:

1. Универсальность (массовость) - применимость алгоритма к различным наборам исходных данных.

2. Дискретность - процесс решения задачи по алгоритму разбит на отдельные действия.

3. Однозначность - правила и порядок выполнения действий алгоритма имеют единственное толкование.

4. Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются.

5. Результативность - по завершении выполнения алгоритма обязательно получается конечный результат.

6. Выполнимость - результата алгоритма достигается за конечное число шагов.

6. Формы представления алгоритмов.

    На практике наиболее распространены следующие формы представления алгоритмов:

  • словесная (записи на естественном языке);

  • графическая (изображения из графических символов);

  • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);

  • программная (тексты на языках программирования).

    Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке. Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

7.  Aрифметические операции в C++:

"+" - сложение

"-"   - вычитание

"*"   - умножение

"/"   - деление

"%"  - остаток от деления

8. В С++ существует три логические операции: 1) Логическая операция И "&&"; 2) Логическая операция ИЛИ "||"; 3) Логическая операция НЕ "!" или логическое отрицание.

9. Поразрядные (побитовые) операции в языке С.      Поразрядные (побитовые) операции можно производить с любыми целочисленными переменными и константами. Эти действия не применимы к переменным типа float, double или long double. Результаты побитовых операций будут иметь целочисленное значение. К поразрядным операциям относятся следующие операции:

  • & ( или and ),

  • | ( или OR ),

  • ^ ( или XOR ),

  • - ( или NOT ),

  • сдвиг влево,

  • сдвиг вправо.

    В случае побитной операции сравниваются значения каждой пары битов. Тем самым обеспечивается доступ к битам. Эти операции находят применение в драйверах устройств, программах, связанных с принтером, модемом и другими устройствами. Когда выполняются логические операции над выражениями, то в итоге Вы получаете либо 0, либо 1. Однако в случае поразрядных операций так же выполняются логические действия, но они не имеют результатом обязательно только либо 0, либо 1. Рассмотрим примеры.      1). Пусть ch=ch & 127;      Тогда, если 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 (ch & 4) printf("Третий бит содержит 1, состояние On");     Эта проверка основывается на двоичном представлении числа 4: 00000 100     Операции сдвига (влево или вправо) применимы только к целочисленным переменным. При этих операциях сдвигаются все биты левого операнда на число позиций, опеределенных выражением вправа от знака операции сдвига. Операции сдвига обозначаются двойными знаками: << - сдвиг влево и >> - сдвиг вправо.      4). Пусть x = 9, что в двоичном представлении имеет вид: 0000 1001 Тогда x=9<<3 есть код: 01001000;           x=9>>3 есть код: 00000001;           x=9>>5 есть код: 00000000;     Легко заметить, что операция сдвига ведет к потере старших или младщих разрядов. Применение сдвигов << и >> к одной и той же величине может изменить значение этой переменной из-за потери разрядов.      5). Пусть беззнаковая величина unsigned char x=255;     Выполним сдвиг влево на 3 разряда и затем так же сдвиг вправо на 3 разряда. Получим:  x=255<<3 в двоичном коде будет иметь вид: 11111000; x=11111000>>3 в двоичном коде будет иметь вид: 00011111.  3. Операции [] и { } в языке С.      В языке С круглые и квадратные скобки так же рассматриваются как операции. Причем они имеют самый наивысший приоритет. Поразрядные операции порождают еще несколько сложных операций присваивания: |=, &=, ^=, <<=, >>=. 

10. Операция присваивания в языке программирования C++ обозначается знаком '='. Как и другие операторы в C++, она может быть перегружена.

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

Операция присваивания копированием отличается от конструктора копирования тем, что должен очищать члены-данные цели присваивания (и правильно обрабатывать самоприсваивание), тогда как конструктор копирования присваивает значения неинициализированным членам-данным.

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