Тренажер по C++ для самых маленьких
От: Mihas  
Дата: 20.11.24 12:17
Оценка:
Племянник 13 лет попросил помочь изучить C++. С нуля. Я стал подкидывать задания из задачника по питону. Ну, и объяснять теорию. Тихонечко движимся.

Посоветуйте, плиз, онлайн-тренажер или бумажный задачник по C++ с простыми задачами на освоение конструкций языка и самых базовых алгоритмов.
Мой беглый поиск вывел к задачам посерьезнее.
Re: Тренажер по C++ для самых маленьких
От: kov_serg Россия  
Дата: 20.11.24 13:43
Оценка: +1
Здравствуйте, Mihas, Вы писали:

M>Племянник 13 лет попросил помочь изучить C++. С нуля. Я стал подкидывать задания из задачника по питону. Ну, и объяснять теорию. Тихонечко движимся.

M>Посоветуйте, плиз, онлайн-тренажер или бумажный задачник по C++ с простыми задачами на освоение конструкций языка и самых базовых алгоритмов.
M>Мой беглый поиск вывел к задачам посерьезнее.

Стивен Прана, Язык программирования C лекции и упражнения 6-изд, 2015
Стивен Прана, Язык программирования C++ лекции и упражнения 6-изд, 2012

И потом SDL https://wiki.libsdl.org/SDL2/Tutorials что бы можно было получать обратную связь или imgui. OpenCV и cmake.
И еще U++ или понавороченее qt. И затем unreal что бы было весело.
Re: Тренажер по C++ для самых маленьких
От: student__  
Дата: 20.11.24 14:38
Оценка: 4 (2) +1 :))) :))) :)
Здравствуйте, Mihas, Вы писали:

M>Племянник 13 лет попросил помочь изучить C++.


Хуже C++ в 13 лет разве что курение, алкоголь, наркотики.
Re: Тренажер по C++ для самых маленьких
От: SergeyIT Россия  
Дата: 20.11.24 16:20
Оценка:
Здравствуйте, Mihas, Вы писали:

M>Племянник 13 лет попросил помочь изучить C++. С нуля.


Тогда надо с Си начать.
А если окошки рисовать, то проще с Дельфи (Лазарус).
Извините, я все еще учусь
Re: Тренажер по C++ для самых маленьких
От: LaptevVV Россия  
Дата: 20.11.24 16:52
Оценка:
Можно постепенно двигаться сюда: https://habr.com/ru/companies/timeweb/articles/809077/
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Тренажер по C++ для самых маленьких
От: Shmj Ниоткуда  
Дата: 20.11.24 16:57
Оценка: +1 -2 :))
Здравствуйте, Mihas, Вы писали:

M>Племянник 13 лет попросил помочь изучить C++. С нуля. Я стал подкидывать задания из задачника по питону. Ну, и объяснять теорию. Тихонечко движимся.


В любом случае начать с C нужно — ядро там. C++ добавляет фишки, которые как синтаксический сахар по сути. Все ядро находится в голом C и там все самое сложное для разумения.
Re[2]: Тренажер по C++ для самых маленьких
От: Tai Гондурас  
Дата: 20.11.24 17:22
Оценка:
Здравствуйте, student__, Вы писали:


__>Хуже C++ в 13 лет разве что курение, алкоголь, наркотики.



Лучше не скажешь!
Лучше колымить в Гондурасе, чем гондурасить на Колыме.
Re[2]: Тренажер по C++ для самых маленьких
От: SergeyIT Россия  
Дата: 20.11.24 20:28
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Можно постепенно двигаться сюда


Так можно в терминале воспроизвести любую старую игру — змейку, 2048 и еще если вспомнить.

Помню, дааавно змейку написал на MACRO11 для проверки работы дисплеев, но это времена rt11sj.
Извините, я все еще учусь
Re: Тренажер по C++ для самых маленьких
От: velkin Удмуртия https://kisa.biz
Дата: 21.11.24 00:11
Оценка: -1 :)
Здравствуйте, Mihas, Вы писали:

M>Племянник 13 лет попросил помочь изучить C++. С нуля. Я стал подкидывать задания из задачника по питону. Ну, и объяснять теорию. Тихонечко движимся.

M>Посоветуйте, плиз, онлайн-тренажер или бумажный задачник по C++ с простыми задачами на освоение конструкций языка и самых базовых алгоритмов.

У меня огромное количество скачанных книг по C++ и куча ссылок на документацию. Но книги это не тренажёр и нужны они прежде всего для ознакомления. Книги гораздо лучше большинства статей в интернете, потому что статьи часто делают читая эти же книги, но упуская множество моментов.

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

Недавно создал такую тему.
Суперобучение с помощью карточек
Автор: velkin
Дата: 07.11 03:11


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

cpp.txt
utf-8
-------------------------
-------------------------
-------------------------
-------------------------

-------------------------
c++ / программа / минимальная
-------------------------
минимальная программа в c++
-------------------------
int main() {}
-------------------------

-------------------------
c++ / программа / привет мир
-------------------------
программа привет мир в c++
-------------------------
#include <iostream>

int main()
{
    std::cout << "Hello, world!" << std::endl;
    return 0;
}
-------------------------

-------------------------
c++ / переменные / стек / логическая
-------------------------
логическая переменная в стеке в c++
-------------------------
bool b;
-------------------------

-------------------------
c++ / переменные / стек / символьная
-------------------------
символьная переменная в стеке в c++
-------------------------
char c;
-------------------------

-------------------------
c++ / переменные / стек / целая
-------------------------
целая переменная в стеке в c++
-------------------------
int i;
-------------------------

-------------------------
c++ / переменные / стек / вещественная
-------------------------
вещественная переменная в стеке в c++
-------------------------
double d;
-------------------------

-------------------------
c++ / оператор / условный / ветвь / одна
-------------------------
условный оператор с одной ветвью в c++
-------------------------
if ()
{
}
-------------------------

-------------------------
c++ / оператор / условный / ветвь / две
-------------------------
условный оператор с двумя ветвями в c++
-------------------------
if ()
{
}
else
{
}
-------------------------

-------------------------
c++ / оператор / условный / ветвь / несколько
-------------------------
условный оператор с несколькими ветвями в c++
-------------------------
if ()
{
}
else if ()
{
}
else
{
}
-------------------------

-------------------------
c++ / оператор / цикл / постусловие
-------------------------
циклический оператор с постусловием в c++
-------------------------
do
{
}
while ();
-------------------------

-------------------------
c++ / оператор / цикл / предусловие
-------------------------
циклический оператор с предусловием в c++
-------------------------
while ()
{
}
-------------------------

-------------------------
c++ / оператор / цикл / счётчик
-------------------------
циклический оператор со счётчиком в c++
-------------------------
for (;;)
{
}
-------------------------




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

Например синтаксическая колода могла бы иметь такой вид.
for (init-expression; cond-expression; loop-expression)
    statement

Это от майкрософт, я бы не так написал, просто для примера.

А ещё я тут показал другим программу, и смысл в том, что люди.
1. Не знают как составлять карточки.
2. Они бы предпочли готовые наборы.

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

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

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

Я уже даже протестировал FreeCAD, Inkscape и LibreCAD. И если снабжать карточки иллюстрациями в svg, то LibreCAD самая простая программа покрывающая все потребности школьных и вузовских программ. Конечно, FreeCAD более продвинут, если нужно чертить профессионально. А Inkscape позволяет создавать очень красивое оформление дизайна. Но для школы и вуза достаточно LibreCAD и я так думаю со шрифтами госта, потому что надо разрушать чертежи в линии для svg и опять же не забываем про авторские права на чертежи.



Ну в общем ладно. Просто многие надеются на волшебство. Типа кто-то что-то сделает, ещё и бесплатно и нужно только скачать. А для этого нужно спросить людей на форуме, они то уж знают где искать. И там уже на торренты или на платные курсы за 150 тысяч рублей. Ведь что-то же да сработает? Ведь правда же сработает? А то вы сами последние десятки лет в этой теме не варились и якобы не знаете как обстоят дела на самом деле.
Re: Тренажер по C++ для самых маленьких
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 21.11.24 00:41
Оценка: +2 :)
Здравствуйте, Mihas, Вы писали:

литкод?
Маньяк Робокряк колесит по городу
Re[2]: Тренажер по C++ для самых маленьких
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 21.11.24 00:42
Оценка: +2
Здравствуйте, Shmj, Вы писали:

M>>Племянник 13 лет попросил помочь изучить C++. С нуля. Я стал подкидывать задания из задачника по питону. Ну, и объяснять теорию. Тихонечко движимся.


S>В любом случае начать с C нужно — ядро там. C++ добавляет фишки, которые как синтаксический сахар по сути. Все ядро находится в голом C и там все самое сложное для разумения.


Нет конечно
Маньяк Робокряк колесит по городу
Re[3]: Тренажер по C++ для самых маленьких
От: Shmj Ниоткуда  
Дата: 21.11.24 01:34
Оценка: +1 -1
Здравствуйте, Marty, Вы писали:

S>>В любом случае начать с C нужно — ядро там. C++ добавляет фишки, которые как синтаксический сахар по сути. Все ядро находится в голом C и там все самое сложное для разумения.

M>Нет конечно

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

Указатель на указатель на указатель — это вообще нужно перестараивать мозг.

ООП реализуется и на голом С, пусть и больше бойлерплейт-кода. Суть не изменяется.

Шаблоны разве что — это единственное что рвет мозг после голого С и потребует отдельной настройки коры.
Re[2]: Тренажер по C++ для самых маленьких
От: Mihas  
Дата: 21.11.24 07:28
Оценка:
Здравствуйте, SergeyIT, Вы писали:

SIT>Тогда надо с Си начать.

Фактически так и идет.
Re[3]: Тренажер по C++ для самых маленьких
От: Shmj Ниоткуда  
Дата: 21.11.24 16:58
Оценка:
Здравствуйте, Mihas, Вы писали:

SIT>>Тогда надо с Си начать.

M>Фактически так и идет.

Главное не начинать делать GUI на голом C, а то принаркоманится и не сможет писать на классическом ООП-языке. Ведь есть же заядлые С-шники, которые принципиально против добавления в язык упрощающих конструкций и убедить их не возможно.
Re[2]: Тренажер по C++ для самых маленьких
От: johny5 Новая Зеландия
Дата: 25.11.24 08:25
Оценка:
Я сам антипод Сишника, но соглашусь. Си преподаёт модель памяти как оно есть, можно даже дизассемблер пощупать — по себе знаю простые конкретные команды лучше усваиваются в голове.
Как выглядит память, как команды процессора выглядят, как он загружает байт итд.

С++ (особенно современный 20++), это огромная нагрузка абстракций на десятки лет обучения уже во взрослости. Всякие итераторы, компайл тайм конструкции, эксепшоны, макросы, концепты, ranges, hash контейнеры, короутины, многопоточности и синхронизация, Буст... не говоря уже о прикладной области типа Unreal Engine. Накинуть всё это сразу это железно отбить всё желание программировать.
Re[2]: Тренажер по C++ для самых маленьких
От: johny5 Новая Зеландия
Дата: 25.11.24 08:26
Оценка:
M>литкод?

Скажу по опыту — работает отлично! Моему тоже 13
Re[4]: Тренажер по C++ для самых маленьких
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.11.24 21:32
Оценка:
Здравствуйте, Shmj, Вы писали:

S>>>В любом случае начать с C нужно — ядро там. C++ добавляет фишки, которые как синтаксический сахар по сути. Все ядро находится в голом C и там все самое сложное для разумения.

M>>Нет конечно

S>Обоснуй. Одно из сложных для понимания, что рвет шаблоны — работа с указателями. Пропустить это и заменить сразу на умные указатели — никак нельзя.


Указатели — это самое простое, что может быть. За пять минут можно объяснить, как устроена память, и что такое указатель на ячейку памяти. Но да, если мозги засраны многолетним кодингом на языках, где от указателей максимально хотели отстраниться, то да, это может быть сложно.

Простая аналогия, например — длинный проспект и адреса домов на нём.

А больше ничего в голом C и нет. Какое ядро, ты о чём? Функции strcpy/str* и прочий кал? Вот этим точно нахрен не нужно забивать детям головы. А то у них они распухнут от говна и дети будут потеряны для программирования.


S>Указатель на указатель на указатель — это вообще нужно перестараивать мозг.


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


S>ООП реализуется и на голом С, пусть и больше бойлерплейт-кода. Суть не изменяется.


Да, и за деревьями леса не видно. А механизм виртуальных функций прекрасно и наглядно демонстрирует возможности рантайм-ООПа. Только лучше сразу рассказать, что у класса с виртуальными функциями есть скрытый член — указатель на VTBL. Вот тут уже можно рассказать про голую сишечку, и как эти идиоты пытаются эмулировать VTBL (можно рассказать про два варианта — эмуляция плюсового поведения, которая обычно совместима с плюсами, и про то, как они хранят таблицу виртуальных функций в самом объекте, используя указатели на функции).


S>Шаблоны разве что — это единственное что рвет мозг после голого С и потребует отдельной настройки коры.


Шаблоны — это тот же полиморфизм, только времени компиляции.
Их использование и навыки написания простых шаблонов — тоже весьма просто можно объяснить и понять.

Но если мозги основательно засраны сишечным говном — то да, это будет уже в разы сложнее осилить


ЗЫ Начинать надо сразу с плюсов. Полчаса на указатели, полчаса на полиморфизм в рантайме с VTBL. Потом шаблоны и полиморфизм времени компиляции. Потом перегрузка функций и как частный случай — перегрузка операторов. А после этого уже можно давать std::string, умные указатели и прочее. За три академических пары вполне реально пройти.
Маньяк Робокряк колесит по городу
Re[3]: Тренажер по C++ для самых маленьких
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.11.24 21:36
Оценка:
Здравствуйте, johny5, Вы писали:

J>С++ (особенно современный 20++), это огромная нагрузка абстракций на десятки лет обучения уже во взрослости. Всякие итераторы, компайл тайм конструкции, эксепшоны, макросы, концепты, ranges, hash контейнеры, короутины, многопоточности и синхронизация, Буст... не говоря уже о прикладной области типа Unreal Engine. Накинуть всё это сразу это железно отбить всё желание программировать.



Базовый C++ никуда из C++ не делся с основными концепциями и понятиями. И именно с него и стоит начинать, а не срать детям в голову сишечкой.

Да, про итераторы надо будет рассказать после объяснения основных концепций
Автор: Marty
Дата: 27.11 00:32
, и рассказать, что итераторы — это обобщение концепции указателей. Рассказать про итераторы произвольного доступа, последовательного доступа, рассказать про std::distance
Маньяк Робокряк колесит по городу
Re[5]: Тренажер по C++ для самых маленьких
От: Shmj Ниоткуда  
Дата: 27.11.24 08:47
Оценка:
Здравствуйте, Marty, Вы писали:

M>Указатели — это самое простое, что может быть. За пять минут можно объяснить, как устроена память, и что такое указатель на ячейку памяти. Но да, если мозги засраны многолетним кодингом на языках, где от указателей максимально хотели отстраниться, то да, это может быть сложно.


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

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

Даже те же указатели — это и работа с памятью и выравнивание и арифметика указателей и указатели на функции, и передача в функцию указателей на функцию (а так же возврат из функции указателей на функцию).

Примерное время на усвоение — 2 месяца.

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


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