Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Одномерный динамический массив.




Лекция №1.

Модули.

Заголовочный файл — в языках программирования Си файл, содержащий определения типов данных, структуры, прототипы функций, перечисления, макросы предпроцессора. Имеет по умолчанию расширение.h. Заголовочный файл используется путём включения его текста в данный файл директивой препроцессора #include "Название Заголовочного Файла.h".

Например: #include<cmath> - библиотека для функций типа tan, sin и т.п., #include<time.h> - библиотека для работы с датой и временем и т.д.

#define – создает символическую константу.

Например: #define __ N 5 – найдет все N и заменит их на 5.

Функция main () – это главная функция, которая возвращает целое число.

Main () { - начало

Return 0;

} - конец

Типы данных.

 
Тип байт Диапазон принимаемых значений
целочисленный (логический) тип данных
bool   0 / 255
целочисленный (символьный) тип данных
char   0 / 255
целочисленные типы данных
short int   -32 768 / 32 767
unsigned short int   0 / 65 535
int   -2 147 483 648 / 2 147 483 647
unsigned int   0 / 4 294 967 295
long int   -2 147 483 648 / 2 147 483 647
unsigned long int   0 / 4 294 967 295
типы данных с плавающей точкой
float   -2 147 483 648.0 / 2 147 483 647.0
long float   -9 223 372 036 854 775 808.0 / 9 223 372 036 854 775 807.0
double   -9 223 372 036 854 775 808.0 / 9 223 372 036 854 775 807.0

Логические операции.

 
Операции Обозначение Условие Краткое описание
И && a == 3 && b > 4 Составное условие истинно, если истинны оба простых условия
ИЛИ || a == 3 || b > 4 Составное условие истинно, если истинно, хотя бы одно из простых условий
НЕ ! !(a == 3) Условие истинно, если a не равно 3

Операции над числами.

1.() Вызов функции Слева направо

2. [] Выделение элемента массива

3.! Логическое отрицание Справа налево

4.- Изменение знака

5.++ Увеличение на единицу (increment)

6.-- Уменьшение на единицу (decrement)

7.~ Побитовое отрицание (complement)

8.& Побитовая операция И Слева направо

9.| Побитовая операция ИЛИ

10.^ Побитовая операция исключающее ИЛИ (eXclude OR)

11.<< Сдвиг влево

12.>> Сдвиг вправо

13.* Умножение Слева направо

14./ Деление

15.% Деление по модулю

16.+ Сложение Слева направо

17.- Вычитание

18.< Меньше, чем Слева направо

19.<= Меньше или равно

20.> Больше, чем

21.>= Больше или равно

22.== Равно

23.!= Не равно

24.|| Логическая операция ИЛИ Слева направо

25.&& Логическая операция И Слева направо

26.= Присваивание Справа налево

27.+= Сложение с присваиванием

28.-= Вычитание с присваиванием

29.*= Умножение с присваиванием

30./= Деление с присваиванием

31.%= Деление по модулю с присваиванием

32.>>= Сдвиг вправо с присваиванием

33.<<= Сдвиг влево с присваиванием

34.&= Побитовое И с присваиванием

35.|= Побитовое ИЛИ с присваиванием^= Исключающее ИЛИ с присваиванием, Запятая Слева направо

Пример:

#include <stdio.h> int main(void) { int a = 5, b =10, c = 25, d = 100, result; printf("%d + %d = %d\n", a, b, a + b); printf("%d - %d = %d\n", a, b, a - b); printf("%d / %d = %d\n", d, c, d / c); printf("%d * %d = %d\n", c, a, c * a); printf("%d %% %d = %d\n", c, b, c % b); result = (c + d) / a * b; printf("result is: %d\n", result); }

Результат:

5 + 10 = 15
5 — 10 = -5
100 / 25 = 4
25 * 5 = 125
25 % 10 = 5
result is: 250

Циклы.

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

В языке программирования С++ существуют такие циклы:

  • цикл for
  • цикл while
  • цикл do while

1) for - Тело цикла будет выполняться до тех пор, пока условие будет истинно(т. е. true).

// форма записи оператора цикла for:

for (/*выражение1*/; /*выражение2*/; /*выражение3*/)

{

/*один оператор или блок операторов*/;

}

Рассмотрим подробно три выражения записанные в круглых скобках цикла for. Выражение 1 - объявление (и) или инициализация, ранее объявленной, переменной-счетчика, которая будет отвечать за истинность условия в цикле for. Пример: int counter = 0; // отсюда видно, что была объявлена переменная counter типа int и инициализирована значением 0

Выражение 2 - это условие продолжения циклаfor, оно проверяется на истинность.

counter < 10; // условие истинно пока count строго меньше десяти!

Выражение 3 изменяет значение переменной-счетчика. Без выражения 3 цикл считается бесконечным, так как изменение содержимого переменной count выполняться не будет, и если изначально условие было истинным, то цикл будет бесконечным, иначе программа даже не войдет в цикл

Выражения 1, 2, 3 отделяются друг от друга обязательными разделителями, точкой с запятой. Тело цикла обрамляется фигурными скобочками, если тело цикла состоит из одного оператора,то фигурные скобочки не нужны. Под изменением значения переменной подразумевается уменьшение или приращение значения, например:

for (int counter = 0; counter < 15; counter++) // выполняется приращение переменной counter с шагом 1 от 0 до 15

2) while -цикл, повторяющий одно и то же действие, пока условие продолжения цикла whileостаётся истинным.

// форма записи цикла while

while (/*условие продолжения цикла while*/)

{

/*блок операторов*/;

/*управление условием*/;

}

3) Цикл do while отличается от цикла while тем, что в do while сначала выполняется тело цикла, а затем проверяется условие продолжения цикла. Из-за такой особенности do while называют циклом с постусловием. Таким образом, если условие do while заведомо ложное, то хотя бы один раз блок операторов в теле цикла do while выполнится.

// форма записи оператора цикла do while:

do // начало цикла do while

{

/*блок операторов*/;

}

while (/*условие выполнения цикла*/); // конец цикла do while

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

Имеются две формы условных операторов:

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

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

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

Лекция №2.

Используется при PRINTF.

d - аргумент преобразуется к десятичному виду;

o - аргумент преобразуется в беззнаковую восьмеричную форму (без лидирующего нуля);

x - аргумент преобразуется в беззнаковую шестнадцатеричную форму (без лидирующих 0х);

u - аргумент преобразуется в беззнаковую десятичную форму;

c - аргумент рассматривается как отдельный символ;

s - аргумент является строкой: символы строки печатаются до тех пор, пока не будет достигнут нулевой символ или не будет напечатано количество символов, указанное в спецификации точности;

e - аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]m.nnnnnne[+-]хх, где длина строки из n определяется указанной точностью. Точность по умолчанию равна 6;

f - аргумент, рассматриваемый как переменная типа float или double, преобразуется в десятичную форму в виде [-]mmm.nnnnn, где длина строки из n определяется ука занной точностью. Точность по умолчанию равна 6.

g - используется или формат %e или %f, какой короче; незначащие нули не печатаются.

Scanf (“%c %d %f ”,& ch, &I, &fl) – требует не имя переменной а адрес, где &- операция взятия адреса.

Массивы.

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

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

//синтаксис объявления одномерного массива в С++:

/*тип данных*/ /*имя одномерного массива*/[/*размерность одномерного массива*/];

//пример объявления одномерного массива, изображенного на рисунке 1:

int a[16];

//ещё один способ объявления одномерных массивов

int mas[10], a[16];

Пример

#include <stdio.h>
void main()
{

int a[]={5, 4, 3, 2, 1}; // массив a содержит 5 элементов

printf("%d %d %d %d %d\n",a[0], a[1], a[2], a[3], a[4]);

getchar();
}

Результат выполнения:

5 4 3 2 1

Двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов.

Структура двумерного массива, с именем a, размером m на n:

// синтаксис объявления двумерного массива

/*тип данных*/ /*имя массива*/[/*количество строк*/][/*количество столбцов*/];

// пример объявление двумерного массива:

int a[5][3];

Пример

#include <stdio.h>
void main()
{

int a[2][3]={1, 2, 3, 4, 5, 6};

printf("%d %d %d\n", a[0][0], a[0][1], a[0][2]);

printf("%d %d %d\n", a[1][0], a[1][1], a[1][2]);

getchar();
}

Результат выполнения

1 2 3

4 5 6

Динамический массив.

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

В С операции new и delete предназначены для динамического распределения памяти компьютера. Операция new выделяет память из области свободной памяти, а операция delete высвобождает выделенную память. Выделяемая память, после её использования должна высвобождаться, поэтому операции new и delete используются парами. Даже если не высвобождать память явно, то она освободится ресурсами ОС по завершению работы программы. Рекомендую все-таки не забывать про операцию delete.

// пример использования операции new

int *ptrvalue = new int;

//где ptrvalue – указатель на выделенный участок памяти типа int

//new – операция выделения свободной памяти под создаваемый объект.

Операция new создает объект заданного типа, выделяет ему память и возвращает указатель правильного типа на данный участок памяти. Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных: int, float, double, char и т. д.

// пример использования операции delete:

delete ptrvalue;

// где ptrvalue – указатель на выделенный участок памяти типа int

// delete – операция высвобождения памяти

Пример:

#include "stdafx.h"

#include <iostream>

using namespace std;

int main(int argc, char* argv[])

{

int *ptrvalue = new int; // динамическое выделение памяти под объект типа int

*ptrvalue = 9; // инициализация объекта через указатель

//int *ptrvalue = new int (9); инициализация может выполнятся сразу при объявлении динамического объекта

cout << "ptrvalue = " << *ptrvalue << endl;

delete ptrvalue; // высвобождение памяти

system("pause");

return 0;

}

Результат выполнения:

ptrvalue = 9

одномерный динамический массив.

// объявление одномерного динамического массива на 10 элементов:

float *ptrarray = new float [10];

// где ptrarray – указатель на выделенный участок памяти под массив вещественных чисел типа float

// в квадратных скобочках указываем размер массива

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

// высвобождение памяти отводимой под одномерный динамический массив:

delete [] ptrarray;

Пример:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
void main()
{

int *a; // указатель на массив

int i, n;

system("chcp 1251");

system("cls");

printf("Введите размер массива: ");

scanf("%d", &n);

// Выделение памяти

a = (int*) malloc(n*sizeof(int));

// Ввод элементов массива

for(i=0; i<n; i++)

{

printf("a[%d] = ", i);

scanf("%d", &a[i]);

}

// Вывод элементов массива

for(i=0; i<n; i++)

printf("%d ", a[i]);

free(a);

getchar(); getchar();
}

Результат выполнения:

Введите размер массива: 5

a[0]=4

a[1]=7

a[2]=3

a[3]=2

a[4]=1

4 7 3 2 1





Поделиться с друзьями:


Дата добавления: 2017-02-11; Мы поможем в написании ваших работ!; просмотров: 563 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2538 - | 2391 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.