Программирование. Лекция 3

Содержание

Слайд 2

Введение в массивы Массив — это структура данных, которая содержит множество

Введение в массивы

Массив — это структура данных, которая содержит множество

значений, относящихся к одному и тому же типу.
Для создания массива используется оператор объявления. Объявление массива должно описывать три аспекта:
тип значений каждого элемента;
имя массива;
количество элементов в массиве.
Общая форма объявления массива:
Слайд 3

Создание массива

Создание массива

Слайд 4

Небольшие массивы целых чисел

Небольшие массивы целых чисел

Слайд 5

Правила инициализации массивов

Правила инициализации массивов

Слайд 6

Задача на массивы Пример 1. Задан массив A, содержащий 100 целых

Задача на массивы

Пример 1. Задан массив A, содержащий 100 целых чисел. Найти сумму элементов этого

массива.
// сумма элементов массива A из 100 целых чисел
int A[100] = {3,4,8,2,6,7,…,4,3};
int summa; // переменная, содержащая сумму
Слайд 7

Решение // Вычисление суммы summa = 0; // обнулить сумму for

Решение

// Вычисление суммы
summa = 0; // обнулить сумму
for (int

i=0; i<100; i++)
summa += A[i];
Перебор всех элементов массива выполняется в цикле for.
Переменная summa сохраняет результирующее значение суммы элементов массива. Переменная i является счетчиком, определяющим индекс элемента массива A[i].
Слайд 8

Задача на массивы Пример 2. Задан массив B, содержащий 20 вещественных

Задача на массивы

Пример 2. Задан массив B, содержащий 20 вещественных чисел. Найти сумму элементов массива,

которые лежат на парных позициях. Считать, что позиции 0, 2, 4 и т.д. есть парными.
// сумма элементов массива B
// лежащих на парных позициях
float B[20] = {1,43,6,7,9,6,…,5,4,7};
float sum; // переменная, содержащая сумму
Слайд 9

Решение // Вычисление суммы sum = 0; // обнулить сумму for

Решение

// Вычисление суммы
sum = 0; // обнулить сумму
for (i=0;

i<20; i++)
if ((i%2)==0)
sum += B[i];
Слайд 10

Строки Строка — это серия символов, сохраненная в расположенных последовательно байтах памяти. Инициализация массива строкой

Строки

Строка — это серия символов, сохраненная в расположенных последовательно байтах

памяти.

Инициализация массива строкой

Слайд 11

Конкатенация строковых литералов

Конкатенация строковых литералов

Слайд 12

Использование строк в массивах

Использование строк в массивах

Слайд 13

Сокращение строки с помощью \0

Сокращение строки с помощью \0

Слайд 14

Риски, связанные с вводом строк

Риски, связанные с вводом строк

Слайд 15

Строковый ввод с точки зрения с in

Строковый ввод с точки зрения с in

Слайд 16

Построчное чтение ввода Класс istream: cin, getline () и get ().

Построчное чтение ввода

Класс istream: cin, getline () и get ().


Строчно-ориентированный ввод с помощью getline ()

Слайд 17

Строчно-ориентированный ввод с помощью get ()

Строчно-ориентированный ввод с помощью get ()

Слайд 18

Введение в класс string

Введение в класс string

Слайд 19

Присваивание, конкатенация и добавление Дополнительные сведения об операциях класса string

Присваивание, конкатенация и добавление

Дополнительные сведения об операциях класса string

Слайд 20

Дополнительные сведения об операциях класса string

Дополнительные сведения об операциях класса string

Слайд 21

Дополнительные сведения об операциях класса string

Дополнительные сведения об операциях класса string

Слайд 22

Задача на поиск символа в строке Пример 3. Задана строка символов.

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

Пример 3. Задана строка символов. Определить, есть

ли заданный символ c в этой строке символов.
Слайд 23

Решение char S[50]; // строка символов char c; // искомый символ

Решение

char S[50]; // строка символов
char c; // искомый символ
int

i;
bool f_is; // f_is=true - символ есть в строке, иначе f_is=false
// ввод строки S
// ...
// ввод символа c
// ...
for (i=0; i if (S[i]==c)
{
f_is = true; // символ c есть в строке S
break;
}
if (f_is)
cout<< "Символ " + c.ToString() + " есть в строке";
else
cout<< "Символа " + c.ToString() + "нет в строке";
Слайд 24

Задача на строки Пример 4. Пусть задан некоторый текст. Вычислить, сколько

Задача на строки

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

наперед заданный символ a
// нахождение числа вхождений символа в строке
char S[50] = “example”; // строка символов
char a = ‘a’; // заданный символ
Слайд 25

Решение int i; int k; // результат - число вхождений символа

Решение

int i;
int k; // результат - число вхождений символа a

в строке S
k = 0; // в начале обнулить счетчик k
for (i=0; i if (S[i]==a)
k++; // увеличить счетчик на 1
Слайд 26

Задача на замену символов Пример 1. В заданном тексте заменить все

Задача на замену символов

Пример 1. В заданном тексте заменить все символы ‘+’ на ‘ —

‘.
// замена символов
char str[50]; // заданный текст
int i;
for (i=0; i if (str[i] == '+')
str[i] = '-';
Слайд 27

Введение в структуры Структура — более универсальная форма данных, нежели массив,

Введение в структуры

Структура — более универсальная форма данных, нежели массив,

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

Части описания структуры

Части описания структуры

Слайд 29

Использование структур в программах

Использование структур в программах

Слайд 30

Прочие свойства структур

Прочие свойства структур

Слайд 31

Прочие свойства структур

Прочие свойства структур

Слайд 32

Массивы структур

Массивы структур

Слайд 33

Массивы структур

Массивы структур

Слайд 34

Задача на массивы структур #include using namespace std; struct PlayerInfo {

Задача на массивы структур

#include
using namespace std;
struct PlayerInfo {
    int skill_level;
    string name;
};
using

namespace std;
int main() {
    // как и с обычными типами, вы можете объявить массив структур
    PlayerInfo players[5];
    for (int i = 0; i < 5; i++) {
        cout << "Please enter the name for player : " << i << '\n';
        // сперва получим доступ к элементу массива, используя
        // обычный синтаксис для массивов, затем обратимся к полю структуры
        // с помощью точки
        cin >> players[ i ].name;
        cout << "Please enter the skill level for " << players[ i ].name << '\n';
        cin >> players[ i ].skill_level;
    }
    for (int i = 0; i < 5; ++i) {
        cout << players[ i ].name << " is at skill level " << players[i].skill_level << '\n';
    }
}
Слайд 35

Объединения Объединение — это формат данных, который может хранить в пределах

Объединения

Объединение — это формат данных, который может хранить в пределах

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

Объединения

Объединения

Слайд 37

Анонимное объединение Анонимное объединение не имеет имени; в сущности, его члены

Анонимное объединение

Анонимное объединение не имеет имени; в сущности, его члены становятся

переменными, расположенными по одному и тому же адресу в памяти.
Слайд 38

Перечисления Перечисления — целочисленные типы, и они могут быть представлены в

Перечисления

Перечисления — целочисленные типы, и они могут быть представлены в

виде
int, однако тип int не преобразуется автоматически в тип перечисления:
Слайд 39

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

Указатели

Указатели представляют собой переменные, хранящие адреса значений вместо самих значений.
Например, если

home — переменная, то &home — ее адрес.
Слайд 40

Указатели и философия C++ Объектно-ориентированное программирование (ООП) отличается от традиционного процедурного

Указатели и философия C++

Объектно-ориентированное программирование (ООП) отличается от традиционного процедурного программирования

в том, что ООП делает особый акцент на принятии решений во время выполнения вместо времени компиляции. Время выполнения означает период работы программы, а время компиляции — период сборки программы компилятором в единое целое.
Применяя операцию *, называемую косвенным значением или операцией разыменования, можно получить значение, хранящееся в указанном месте.
Слайд 41

Указатели

Указатели

Слайд 42

Две стороны одной монеты

Две стороны одной монеты

Слайд 43

Выделение памяти с помощью операции new

Выделение памяти с помощью операции new

Слайд 44

Освобождение памяти с помощью операции delete

Освобождение памяти с помощью операции delete