Академия Кода – Telegram
Академия Кода
2K subscribers
673 photos
2 videos
2 files
50 links
Академия кода. Полезный контент по программированию. По всем вопросам @evgenycarter
Download Telegram
Некоторые различия между ссылками и указателями

1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.

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

3. Ссылочная переменная не может быть обновлена.

#cpp

Подписывайтесь на канал 👉@cod_academy
👍1
Через два дня — живой разбор AI в Flutter

20 мая, 20:00 МСК. Бесплатный вебинар «Интеллект внутри: делаем умные Flutter‑приложения с ML и AI».

Почему стоит подключиться:
— увидите, как запустить нейросети офлайн без серверных счетов;
— разберётесь, чем MediaPipe лучше готовых SDK для жестов;
— научитесь подключать LLM‑подсказки к любому экрану приложения;
— получите скидку на курс «Flutter Mobile Developer».

Код пишем в прямом эфире вместе с Дмитрием Золотовым (Yandex).

Не откладывайте — регистрация закроется при наборе группы.

Забронировать место

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Сортировка методом выбора

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

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

Данный алгоритм превосходит пузырьковую сортировку, ведь тут количество необходимых перестановок сокращается с O(N²) до O(N): мы не гоняем один элемент через весь список, но тем не менее, количество сравнений остается O(N²).

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Не знаешь на кого пойти учиться ?💥

🛑Пройди бесплатные онлайн-курсы

🛑Узнай о самых востребованных профессиях

🛑Получи уникальную возможность поступить в «Алабуга Политех» после 9 или 11 класса

ПРОЙДИ КУРС ПРЯМО СЕЙЧАС!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👌1
Как читать бинарные файлы на python?
Вы можете читать бинарные файлы с помощью режима чтения "rb"

with open('index.dat', 'rb') as binary_file:
info = binary_file.read()



Как читать большие файлы в python?
Самый простой метод чтения больших файлов - чтение построчно. При таком методе оперативная память не забивается.

with open('data.txt', 'r') as file:
for line in file:
print(line)


#python

Подписывайтесь на канал 👉@cod_academy
👍2
Функции map(), filter() и reduce() используют, чтобы привнести в Python немного функционального программирования.

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

1. map() - функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.

2. filter() - Подобно map(), filter() принимает объект функции и итерацию и создает новый список. Как следует из названия, filter() формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.

3. reduce() - reduce работает иначе, чем map() и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.
Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).

#python

Подписывайтесь на канал 👉@cod_academy
👍1
📲 Как сделать так, чтобы пользователи всегда возвращались туда, где они остановились в приложении?

⏺️ Присоединяйся к открытому вебинару «Flutter Deep Linking & State Restoration» 22 июля в 20:00 МСК. На вебинаре разберем:
— Типы диплинков во Flutter и как они работают с мобильными и веб-приложениями.
— Как выбрать правильную навигацию: Navigator 1.0 или Router API для сложных сценариев.
— State Restoration во Flutter: как сохранять и восстанавливать состояние после перезапуска.
— Использование Restorable Routes для автоматического возвращения на нужный экран.
❗️Этот вебинар — отличная тренировка перед стартом курса «Flutter Mobile Developer» от OTUS.
👉 Записаться на вебинар → https://vk.cc/cNLkF9

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Указатели с ключевыми словами const и volatile

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

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

#cpp

Подписывайтесь на канал 👉@cod_academy
👍2
JIT-оптимизация

Java-код обрабатывается с помощью JIT-компиляции: сначала транслируется в платформонезависимый байт-код, а уже после этого в машинный код. При этом оптимизируется все, что возможно, и разработчик может помочь компилятору создать максимально эффективную программу.

В качестве примера взглянем на две простые операции:
// 1
n += 2 * i * i;

// 2
n += 2 * (i * i);

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

2 * (i * i) | 2 * i * i
0.5183738 | 0.6246434
0.5298337 | 0.6049722
0.5308647 | 0.6603363
0.5133458 | 0.6243328
0.5003011 | 0.6541802

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

#java

Подписывайтесь на канал 👉@cod_academy
👍2
Как правильно создавать классы в python?

Вы можете придерживаться синтаксиса

class <Название_Класса>:
def __init__(<Аргументы_Класса>):
pass



(Конструктор класса не всегда обязателен)
Создание класса вы можете увидеть на примере :

class Axe: # Создаем класс с названием "Axe"
def __init__(self, x : int, y : int): # Создаем конструктор класса, который принимает "x" и "y"
self.x = x
self.y = y

def increment(self): # Создаем метод класса
print(self.x + self.y)


#python

Подписывайтесь на канал 👉@cod_academy
👍1
🤖 Тест по Flutter проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.

➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cOaU8b

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
Алгоритм includes

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

#cpp

Подписывайтесь на канал 👉@cod_academy
👍2
Чем различаются Enumeration и Iterator?

Хотя оба интерфейса и предназначены для обхода коллекций между ними имеются существенные различия:
• с помощью Enumeration нельзя добавлять/удалять элементы;
• в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNеxt(), Enumeration.nextElement() соответствует Iterator.nеxt() и т.д);
• Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.

#java

Подписывайтесь на канал 👉@cod_academy
Как скачать видео с youtube с помощью python?

Вы можете использовать библиотеку pytube для скачки видео с youtube

import pytube

link = "../" # Ссылка на видео
path = "../" # Путь, куда будет сохранятся видео

YT_parser = pytube.YouTube(link)

video_with_highest_resolution = YT_parser.streams.get_highest_resolution()
video_with_highest_resolution.download(path)


#python

Подписывайтесь на канал 👉@cod_academy
👍2
Вычисление степени

Возвести число в степень можно двумя способами:
☕️ простым умножением;
☕️ с помощью функции Math.pow(double base, double exponent)

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

Простое умножение на Java работает в 300-600 раз эффективнее, к тому же его можно дополнительно оптимизировать.

#java

Подписывайтесь на канал 👉@cod_academy
👍1
Как удалить каждый второй элемент списка в python?

Вы можете использовать индексирование [::2] (2 означает шаг) для удаления каждого второго элемента.

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(array[::2])

# Вывод : [1, 3, 5, 7, 9]


#python

Подписывайтесь на канал 👉@cod_academy
👍2
Метод concat()

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

Проще говоря метод concat() в Java объединяет строки, путем добавления одной строки в конец к другой.

#java

Подписывайтесь на канал 👉@cod_academy
👍2😁1
Array vs ArrayList

Выбор между Array (стандартным Java-массивом) и ArrayList зависит от специфики задачи на Java, которую требуется решить. Помните о следующих особенностях этих типов:

☕️ Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayList может динамически изменяться;
☕️ Массивы Java работают гораздо быстрее, а в ArrayList намного проще добавлять/удалять элементы;
☕️ При работе с Array велика вероятность получить ошибку ArrayIndexOutOfBoundsException;
☕️ У ArrayList только одно измерение, а вот массивы Java могут быть многомерными.

#java

Подписывайтесь на канал 👉@cod_academy
👍1