Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Вещественный тип





Вещественное число представляется в экспоницеальной форме с помощью мантиссы и порядка.

mE=p – порядок. Память отводится отдельно под мантиссу и под порядок. Обычно величины типа float занимают 4 байта (32 бита), из них 1 разряд отводится под знак (+-), 8 разрядов под порядок и 23 под мантиссу. Величина типа double занимает 8 байт, из них 11 разрядов в порядок и 32 – в мантиссу. Величина типа bооl может принимать два значения: правда или ложь. Любое значение не равное нулю интерпретируется как true, 0 – это false. При преобразовании к целому типу, true –«1», false – «0», void – это пустой тип, никакме значения в нем не содержатся. Используется для определения функций, которые не возрастут в значении, для указания пустого списка аргументов функций, как базовый тип для указателей и в операции приведения типов.

Структура программы.

Директивы предпроцессора. Внешнее объявление функции. Одна из функций обязательно пишется, как main или _tmain.

Функция: тип, имя (список формальных параметров)

{ объявление

Опрераторы

} Если тип void, то функции ничего не возвращают.

Int main() если другие типы, то пишется return.

Переменные на языке си ++

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

Значения переменных можно изменить в процессе работы. Перед использованием переменная должна быть объявлена.

Тип – имя переменной

Тип – имя1, имя 2.

Int a; float b1, b2, b3 – конец.

Переменные по месту объявления делятся на: локальные, глобальные и формальные параметры функции.

Локальные переменные объявляются внутри функции и доступны только в ней.

Глобальные переменные описываются до всех функции доступны из любого места программы.

Формальные параметры функции служат для обмена данными.

Константы в языке си++

Сonst тип имя = значение. Константы бывают целые, вещественные, символьные, строковые. Тип константы может быть не указан, компилятор определяет его автоматически по написанию.

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

Операции и выражения.

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

Операции в C++

Операции бывают бинарные и унарные. Бинарные состоят из двух операндов, а унарные из одного.

Унарные операции:

  • & – операция взятия адреса.
  • * – операция обращения по адресу.
  • - – унарный минус.
  • + – унарный плюс.
  • ! – отрицание.
  • ++ – автоувеличение на 1.
  • -- – автоуменьшение на 1.
  • sizeof – операция вычисления размера в байтах.

Бинарные операции:

  • + – бинарный плюс.
  • - – бинарный минус.
  • * – умножение.
  • / – деление (при делении двух целых чисел получается целая часть от частного).
  • % – получение остатка от деления.

Операции присваивания:

  • = – присвоить операнду из левой части значение выражения из правой части.
  • += – присвоить операнду из левой части сумму операндов левой и правой частей.
  • -= – присвоить операнду из левой части разность операндов левой и правой частей.
  • /= – присвоение частного от деления.
  • %= – присвоение остатка от деления.

Операции сравнения:

  • < – меньше.
  • > – больше.
  • <= – меньше или равно.
  • >= – больше или равно.
  • == – равно.
  • != – не равно.

Логические бинарные операции:

  • && – логическое И.
  • || – логическое ИЛИ.

Другие:

?: условная операция

, последовательное вычисление

Sizeof определение размера

(тип) преобразование типа.

Операции присваивания.

Имя_переменной = значение; значение – выражение, переменная, константа или функция.

Сначала вычисляется выражение в правой части оператора, а затем его результат записывается в области памяти, имя которой указывается слева. Если имя и значение имеют разные типы, то значение преобразуется к типу имени переменной. Имя1=имя2=имя3=значение (множественное присваивание справа налево)

Операторы цикла. Циклы одних и тех же действий. Последовательной действий, которые повторяются в цикле-тело цикла. Один проход цикла –интерация. Переменная, изменяющаяся внутри цикла и влияющая на его окончание – параметр цикла.

Условия правильного цикла.

1. Содержимое тела цикла должно влиять на условия цикла.

2. Условие выхода из цикла должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла.

Существует три оператора (типа) цикла.

1. С предусловием;

2. С постусловием;

3. С параметром.

I. Операторы цикла с предусловием:

А) while (выражение) оператор;

Б) while (вырадение)

{оператор 1;

оператор 2;

}

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

Затем опять вычисляется значение выражения и т.д. Если значение передается на оператор, следующий за оператором цикла.

II. Оператор цикла с постусловием.

do оператор while (выражение);

do {оператор 1;

оператор 2;}

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

III. Оператор цикла с параметрами.

For(начальные присваивания, выражения, приращение) оператор;

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

Выражение – это условие выполнения цикла, если его значение не равно 0, то цикл выполняется и вычисляется при каждом проходе цикла.

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

Приращение или оператор должны влиять на условие, иначе цикл не закончится. Начальные присваивания, выражение или приращение в записи могут отсутствовать, но при этом двоеточия должны оставаться на своих местах.

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

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

Break осуществляет немедленный выход из циклов и из оператора switch. Return – это оператор завершающий функцию и передающий управление в точку ее вызова. Значение выражения передается как результат выполнения функций. Если функция имеет тип void, то выражение отсутствует.

Указатели

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

Обращение и доступ к этой переменной осуществляются по ее имени, при этом все обращения меняются на адрес ячейки, в которой хранится значение переменной. При завершении блока, в котором описана переменная, память автоматически освобождается. Второй способ доступа к значению переменной через ее адрес, т.е. вводятся переменные для хранения адреса. Такие переменные называются указателями. Указатель - это переменная, значением которой является адрес памяти, по котому хранится объект определенного типа.

Объявление указателя:

Тип *имя_переменной;

Н: int *a; означает по адресу, записанному переменной “a” будет храниться переменная типа int.

Int *a,b,*c. Здесь “a” и “c” являются указателями, а “ b” – обычной статической переменной.

Операции получения адреса и раз адресации.

Int p &p   p
Int*p   p   *p  

 

1) Float a;

Float *adr_a;’

Adr=&a;

Операции присваивания указателей.

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

Арифметические операции над адресами (над указателями).

В си++ определены следующие операции над адресами:

1. Сложение и вычитание указателя с константой

2. Вычитание одного указателя из других.

3. Инкремент.

4. Декремент.

 

Сложение и вычитание указа и вычитание указателей с константой n означает, что указатель перемещается по ячейкам памяти на столько байт, сколько занимает n переменных того типа, на который он указывает.

Пример

Int *p;

P=FF013825

P+1=FF013829

P+2=FF01382D

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

Указателям так же применимы операции отношения(=,!=, <,>, <=,>=) Применяются только в массивах.

Массивы

в отличии от скалярных величин, массивы имеют имя, связывающие с набором однотипных значений. Значение хранения в смежной памяти. Массив позволяет компактно осуществлять операции над своими элементами. Массив позволяет компактно осуществлять операции своими элементами. Массив – это фиксированное количество элементов одного типа, пронумерованные с нуля. При описании или при обращении к массивам после его имени – [];

Описание массива в программировании отличается от описания простой переменной тем, что после имени задается [количество элементов] int a[10], означает, что в памяти отводится место для хранения 10-ти элементов типа int. При обращении к элементу массива указывается имя массива и индекс элемента.

Задание размерности массива при его описании в виде числа - некорректно.

Элементы массива всегда нумеруются с 0. При описании массив может быть инициализирован.

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

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

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

Многомерные массивы

Многомерные массивы задаются заданием каждой размерности в квадратных скобках после имени.

Многомерные массивы можно инициализировать, при этом заполнение массива значением осуществляется построчно. Так же возможна инициализация массива, с отсутствующим содержанием.

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

Простейшие сортировки

Сортировка массива методом выбора. Смысл алгоритма состоит в том, что выбирается максимальный элемент массива и меняется с последним. Размерность подмассива всякий раз уменьшается на 1. Минимальные массивы имеют два числа.

Статические массивы

Динамические величины создаются во время работы программы с использованием оператора new. Для того, чтобы работать с динамическими величинами, должна быть описана переменная типа “указатель”.

Сами указатели, имеющие имя, являются величинами статическими. ВЫсе указатели хранят адреса, т.е. N байтов в памяти., поскольку все адреса занимают одинаковый объем памяти. Но, если они будут использованы для создания динамических переменных, то выделяться будет разная память под динамические переменные.

Динамическая переменная образуется при прогоне программы в тот момент, когда используется new.

Статическая переменная существует все время программы, если эта переменнная глобальная, или все время работает в блоках переменная локальная. Динамические переменные существуют с момента созания до момента уничтожения или завершения работы программы. Для уничтожения динамических переменных используется delete pd

При этом память перемещается в список свободной памяти.

Динамические массивы

Существует много алгоритмов, которые занимают заранее не прогнозированный объем памяти.

Для того, чтобы корректно работать с ними и были введены такие переменные. В первую очередь они дают работать с динамическими массивами, размер которых определяется в процессе прогона программы. Эти массивы создаются с помощью оператора new. ЗДЕСЬСОЗДАЕТСЯ ПЕРЕМЕННЫ УКАЗАТЕЛЬ НА флоат. В операторе delete размерность массива не указывается. Для создания многомерного динамического массива в new указываются все размерности массива.

Функции

Функция-это часть программы, выполняющая какое-то законченное действие. Запуск программы начинается с функции main. Каждая функция должна быть определена один раз.

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

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

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

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

Двумерные массивы

С позволяет создавать многомерные массивы. Простейшим видом многомерного массива является двумерный массив. Двумерный массив - это массив одномерных массивов. Двумерный массив объявляется следующим образом:

тип имя_массива[размер второго измерения][размер первого измерения];

Следовательно, для объявления двумерного массива целых с размером 10 на 20 следует написать:

Посмотрим внимательно на это объявление. В противоположность другим компьютерным языкам, где размерности массива отделяются запятой, С помещает каждую размерность в отдельные скобки.

Для доступа к элементу с индексами 3, 5 массива d следует использовать

d[3] [5]

Двумерный массив – это одномерный массив из одномерных массивов.
Для примера определим двумерный массив m размером 3 x 4.

int m [3] [4];

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

Начнем с того, что сначала объявим промежуточный тип M – одномерный массив из 4-х целых чисел

typedef int M [4];

Теперь определение M x; означает тоже самое, что int x[4];, каким бы ни было выражение x.

Определим одномерный массив из элементов типа M, т.е. массив символов.

M m[3];

В роли x здесь выступает выражение m[3]. Подставим его в int x[4]; и получим объявление двумерного массива без промежуточного типа M, как это обычно и делается.

int m[3][4];

Исходя из общего принципа размещения элементов массива в памяти (плотно и в порядке возрастания номеров), можно утверждать, что элементы двумерного массива m[3][4] займут места в памяти в следующем порядке: m[0][0], m[0][0], m[0][1], m[0][2], m[0][3], m[1][0], m[1][1], m[1][2], m[1][3], m[2][0], m[2][1], m[2]2], m[2][3].

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

Инициализация указателей

Задание изначального значения.

A) Присваивание указателю существующего адреса.

B) С помощью значения другого инициализированного указателя

C) С помощью имени массива или функции, которые трактуются как адрес

Date: 2015-09-22; view: 416; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию