Найти в Дзене

Основы программирования для начинающих. Ч.3 Гайд по выбору типам данных от нейросети"

Данные представляют собой информацию, которая может быть представлена ​​в структурированном виде. Для работы с этими данными необходимо правильно их классифицировать и относить к типам. Эти типы определяются в зависимости от информации, которая должна быть представлена. Основные типы данных включают целые числа, дробные числа, символы, строки, логические данные и структуры. Подробнее о сложных структурах. Массивы – это коллекции однотипных данных, хранящихся в памяти компьютера. Элементы массива имеют индексы и по этим индексам можно быстро обращаться к элементам массива. Это позволяет использовать массивы для хранения и обработки больших объемов данных. примеры массивов на с++ и питон: C++: int array[10]; Python: array = [1, 2, 3, 4, 5] Списки в программировании это коллекции данных, которые хранятся в определенном порядке. Они могут содержать любые типы данных, включая числа, строки, объекты и т.д. Списки удобно использовать для хранения и управления собранными данными
Оглавление
Данные представляют собой информацию, которая может быть представлена ​​в структурированном виде.

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

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

  • Целые числа - это целочисленные значения, например, цифры от 0 до 9. Они часто используются для представления целочисленных значений, таких как количество предметов, длительность и т. д.
  • Дробные числа - это числа с дробной частью, например, 3.14. Они могут быть использованы для представления дробных значений, таких как расстояние или средняя скорость.
  • Символы обычно представляют собой одиночные символы или знаки. Они часто используются для представления однозначных значений. Строки - содержат последовательность символов. Они используются для представления текста или других последовательных данных.
  • Логические данные представляют собой логические значения, такие как истина или ложь. Они могут быть использованы для представления условий или флагов.
  • Сложные структуры данных представляют собой комбинацию других типов данных. Они позволяют организовать данные и упростить их обработку.

Подробнее о сложных структурах.

Массивы – это коллекции однотипных данных, хранящихся в памяти компьютера. Элементы массива имеют индексы и по этим индексам можно быстро обращаться к элементам массива. Это позволяет использовать массивы для хранения и обработки больших объемов данных.

примеры массивов на с++ и питон:

C++: int array[10];
Python: array = [1, 2, 3, 4, 5]

Списки в программировании

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

Python:

list1 = [1, 2, 3, 4, 5]
list2 = ['a', 'b', 'c', 'd']
list3 = [1, 'a', "Hello", 2.0]

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

Стек

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

Python:

stack = []
# добавляем элементы
stack.append(1)
stack.append(2)
stack.append(3)
# получаем элементы
one = stack.pop()
two = stack.pop()
three = stack.pop()

Очередь

структура данных, которая организует данные в порядке FIFO («первым пришел — первым вышел»). Очередь является абстрактным типом данных, предоставляющим доступ к данным лишь по принципу очереди. Очереди обычно используются для реализации алгоритмов обработки данных, а также для синхронизации потоков.

// Пример Очереди на C++

#include <queue>
#include <iostream>
int main() {
std::queue<int> q;
q.push(5);
q.push(7);
q.push(8);
q.push(9);
q.push(11);
while (!q.empty()) {
std::cout << q.front() << " "; q.pop();
}
return 0;
} // Пример выходных данных: 5 7 8 9 11

Основное отличие стека и очереди — это способ доступа к элементам. Стек предоставляет доступ только к последнему добавленному элементу (LIFO, Last In First Out). Он подходит, когда нужно выполнять операции в порядке обратном тому, в котором они были добавлены. Например, когда нужно вычислить выражение в скобках, например, (2+3)*(5+4). Очередь организует элементы по принципу FIFO (First In First Out). Это означает, что первый добавленный элемент будет первым извлеченным. Очередь используется для организации процесса с относительной простотой. Например, очередь применяется при обработке заявок на печать или в процессах загрузки и выгрузки.

Деревья в программировании

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

Например, вот простое дерево:
root
/ \
node1 node2
/ \
leaf1 leaf2
Это дерево состоит из корневого узла root, двух дочерних узлов node1 и node2, а также двух листьев leaf1 и leaf2.
Ниже приведен простой пример реализации дерева на языке С++:
struct Node {
int data;
Node *left;
Node *right;
};
Node *root = new Node;
root->data = 1;
root->left = new Node;
root->left->data = 2;
root->right = new Node;
root->right->data = 3;
root->left->left = new Node;
root->left->left->data = 4;
root->left->right = new Node;
root->left->right->data = 5;

Графы в программировании

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

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

Пример кода на языке С++, представляющий граф:

#include <iostream>
#include <vector>
using namespace std;
// Структура, определяющая ребро графа.
struct Edge {
int src, dest;
};
// Структура, определяющая граф.
struct Graph {
// Вектор рёбер
vector<Edge> edges;
// Количество вершин
int N;
};
// Функция создания графа
Graph createGraph(int N) {
Graph graph;
graph.N = N;
// Добавляем рёбра
graph.edges.push_back({0, 1});
graph.edges.push_back({1, 2});
graph.edges.push_back({2, 3});
graph.edges.push_back({3, 0});
return graph;
}
// Функция вывода графа
void printGraph(Graph graph) {
for (int i = 0; i < graph.edges.size(); i++) {
cout << graph.edges[i].src << " -- "
<< graph.edges[i].dest << endl;
}
}
int main() {
int N = 4;
Graph graph = createGraph(N);
printGraph(graph);
return 0;
}

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

Хеш-таблица (Hash Table)

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

Подробнее о хеш-таблицах читайте здесь

Пример кода на языке программирования C++:

#include <iostream>
#include <unordered_map>
using namespace std;
// объявление хеш-таблицы
unordered_map<string, int> hashTable;
int main()
{
// добавление записей в хеш-таблицу
hashTable["John"] = 25;
hashTable["Mary"] = 23;
hashTable["Peter"] = 27;
// получение записи из хеш-таблицы
cout << hashTable["John"] << endl;
return 0;
}

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