C++ dla 10cio latka.

C++ dla 10cio latka.
enedil
  • Rejestracja:ponad 11 lat
  • Ostatnio:6 dni
  • Postów:1027
1

Zaczynałem programować jako czternastolatek, właśnie w C++. Proces uczenia się był powolny i przez bardzo długi czas nie radziłem sobie z sklejaniem prostych programów. Zanim przestałem się zupełnie plątać i zaczęły powstawać przeze mnie pisane programy:

  1. Chodziłem do klasy matematycznej w gimnazjum
  2. Dwukrotnie byłem laureatem Kangura (tzn jechałem na obozy letnie dzięki temu)
  3. Byłem laureatem w sumie sześciu gimnazjalnych konkursów przedmiotowych organizowanych przez kuratora oświaty, w tym z matematyki, oraz z 4 innych finalistą, co zwolniło mnie z pisania wszystkich części egzaminu gimnazjalnego
  4. Byłem laureatem Olimpiady Matematycznej Gimnazjalistów
  5. Uczyłem się j. francuskiego 8 godzin (lekcyjnych) w tygodniu
  6. Całą podstawówkę, 6 lat grałem na skrzypcach, w tym ucząc się nieco więcej niż podstaw teorii muzyki

Mimo tego wszystkiego, zrozumienie jak pisać, żeby cokolwiek napisać, (tzn programy powyżej poziomu What's your name? Oh, hi (wstaw imię)) zajęło mi chyba ponad rok sumarycznie, i to w wieku lat 14, a nie dziesięciu, a uwierz mi, to jest duża różnica. Miej wyczucie - Twoja duma nie zmaleje od wyboru innego języka (np. Pythona właśnie), a jak bardzo ciekawsze doświadczenie chłopak z tego wyciągnie? A jeśli już pojmie Pythona nieco, co stoi na przeszkodzie wtedy wprowadzić go w inny język?

somedev
Ja chodziłem do podrzędnej szkoły, która skupiała dzieciaki z okolicznych wiosek przez co poziom równany w dół. Nie byłem żadnym laureatem, nie grałem na niczym a języki opornie mi szły. Nie miałem jednak problemów w nauczeniu się C++ - chyba do programowania potrzebne są inne niż szkolne zdolności.
somedev
  • Rejestracja:ponad 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:666
1

Kolejny raz tłumacze ze dzieci to mali ludzie, a nie debile. Ja uczyłem się Pascala w wieku 11 lat czyli podobnie co ten opisany uczeń. Do C++ jest fajna książeczka opisująca podstawy i to co Op chce uczyć bez zawiłości cpp https://merlin.pl/programowanie-w-c-biblioteczka-komputer-swiat-cd-pawel-paczuski/2048077/. Z drugiej strony faktycznie są języki bardziej przyjazne jak np. C# - C++ jest troszkę starożytny ;) Co do zadanek to advent of code polecam oraz spoj. Swojego czasu klepałem sporo spoji. Można tez za darmo dostać niebieskie książeczki archiwalne i obecne - zadania z Olimpiady Informatycznej wraz z opracowaniem ale to już wyższy poziom. Co do zadanek i stron to jeszcze jest coś takiego jak Potyczki Algorytmiczne - to prostsze od OI jest.

Zobacz pozostałe 26 komentarzy
Codedemens
Codedemens
Niestety też, ja byłem w sytuacji w której chciałem mieć rówieśnika z którym mógłbym poprogramować. Nie był to wiek 11 lat co prawda, ale wiek 13 lat. Uczyłem się wtedy programowania. Też mnie bolało że nie miałem nikogo wokół. Tylko ja po prostu zdałem sobie sprawę z tego, że to jest nieuniknione, jeżeli chcesz osiągnąć coś rozłożone na lata.
Codedemens
Codedemens
Ten sam fakt, że coś może trwać lata w ogóle demotywuje jakieś 80% ludzi z podejmowania próby nauki tego typu rzeczy jak programowanie w wieku 11 lat, co świadczy o Twojej odwadze i tym, że chciałeś coś osiągnąć i działasz, jesteś produktywny.
Miang
@somedev chodziło mi o ludzi którzy używają klas mających w nazwie < > i są bardzo zdziwieni że istnieje coś jak generyki ;)
Miang
@Codedemens chyba że po prostu się lubią uczyć i świadomość że "mam takie fajne hobby na długie lata" tylko im poprawia humor
WeiXiao
@Miang: oj przesadzasz. są dwa podejścia idziesz low to high lub high to low level. Zaczynając od high level szybciej uzyskujesz widoczne efekty, nie walczysz z językiem (c++) i generalnie masz satysfakcje bo szybciej shit gets done. Idąc od low szybciej wyłapiesz te rzeczy under the hood, ale czy warto? nie, imo
KR
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:174
0

Niech chłopak zacznie od Pascala - choćby Lazarus czy Delphi Community. Szybko się ucieszy, że mu programy działają i robią coś, czego efekt widać na ekranie.
Jak załapie bakcyla to niech przejdzie na C#, Javę czy Javascript.

PerlMonk
Pascal? Ale jak to?!
somedev
Delphi Community - jak najbardziej. Lazarus - to jest strasznie niedorobione środowisko i początkującym raczej bym nie dawał bo mogą się zniechęcić. Nie mówię, że nie jest dobre, bo sam używam do jednego projektu, żeby oderwać się od C# i spółki, ale czasami jego zachowanie wymusza, żeby znać się nieco na komputerach i mieć doświadczenie (np. sposób prezentacji obiektów i kolekcji w Lazarusowym watch ). Niemniej tak czy siak to nie jest związane z tematem, bo pytanie nie było wcale o język na początku ;)
Azarien
  • Rejestracja:około 21 lat
  • Ostatnio:dzień
4
piotrek2137 napisał(a):

dzieciak ma 10 lat a ty mu zabierasz frajde z dzieciństwa kalecząc go programowaniem, w jego wieku plany na przyszłość zmieniały się co 5h

E nie przesadzajmy. Pamiętam jak w okolicach 2 klasy podstawówki chwyciłem i przeczytałem staaary (z lat 60tych) podręcznik do chemii dla klas 7-8.

Ponieważ znacznie chętniej się człowiek uczy kiedy nie musi, wchłonąłem trochę teorii (zadań żadnych nie chciało mi się liczyć) i byłem dzięki temu potem do przodu.

jarekr000000
Miałem podobną historię - syn sąsiadów kończył podstawówkę i zostawił książki - wziąłem, bo mogłyby mi się przydać... za 5 lat. To były fascynujące lektury - w książce od fizyki był opis tranzystora i kombinowałem przez kilka lat jak z tego PNP , NPN dojść do budowy komputera... (który widziałem w telewizji) - bez sukcesów :-/
Codedemens
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Yuri' Command Center
  • Postów:92
1

Rozwiń w nim inne umiejętności które możesz w nim teraz wyhodować. Odwagę, cnotę, itp. Programowanie zostaw na wiek 12 lub 13 lat, bo to nie jest okres w którym dziecko efektywnie by się uczyło programowania.

Zgadzam się też z @Azarien . Ja bym jeszcze sugerowałbym też jakąś fajną literature przystosowaną dla dzieci w tym wieku, która by wprowadzała go w świat nauki, czy to w co chcecie aby wszedł.


Kiedy pieć zmysłów i rozum są trzeźwe,
A powód samoistnie leży w ciszy,
Wtedy rozpocznie się lepsza ścieżka.
-Katha Upanishad
edytowany 1x, ostatnio: Codedemens
cmd
  • Rejestracja:około 10 lat
  • Ostatnio:2 dni
  • Lokalizacja:Warszawa
  • Postów:443
0

Nie wiem czy c++ to dobry początek dla dziecka w podstawówce. Nie mowię o tym że sobie nie poradzi, ale raczej output w konsoli to nie musi go specjalnie interesować. Nigdy nie korzystałem z tego typu podejścia, ale przykładowo dla pythona jest przygotowane trochę materiałów dużo bardziej interaktywnych jak wykorzystujących minecrafta gdzie w pewnym sensie uczymy się modować gre za pomocą skryptów. Jeśli coś może go zainteresować to sądzę że to nie jest takim złym podejściem (no chyba że skupi się bardziej na samej grze:P)

https://nostarch.com/programwithminecraft (jest też polskie wydanie)

edytowany 1x, ostatnio: cmd
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 4 godziny
  • Postów:1426
0

Dziwię się, że nikt tego wcześniej nie zasugerował - Haskell. Jak mówił jeden z moich wykładowców świat byłby inny gdyby dzieci zaczynały naukę od niego.

Zobacz pozostałe 4 komentarze
jarekr000000
Już w latach 90tych, kiedy uznawałem C++ za opus magnum jezyków (nic lepszego nie bedzie :-)) - to jednak doszedłem do wniosku, że uczenie na językach funckyjnych ma większy sens. Wtedy poznałem SML i Ocaml. Ale haskell też nie jest zły. W sumie znam przypadki osób , które nauczyły się programować od haskella (ale to w późniejszym wieku i raczej ludzie podłożem matematycznym). Osobiście dzieci męcze JS i Pythonem - JS bo szybko można w przeglądarce coś zrobić "wizualnego". (Ale nie kocham obu języków).
jarekr000000
Haskell zresztą nie jest szczególnie matematyczny, ani abstrakcyjny - po prostu nie zawiera herezji typu x=x+1, które paraliżują niektóre umysły ścisłe.
LukeJL
Mimo, że przestałem dawno temu programować w C++, to dla mnie C++ to dalej ten "prawdziwy język", bo JS, w którym programuję, to jednak język zabawkowy. Sam fakt, że uruchamia się to w jakiejś maszynie wirtualnej w przeglądarce (no dobra, jest Node, ale dalej, sam język jest nieprzejrzysty, nie da się zajrzeć w bebechy, tylko jakby pisze się program na maszynę wirtualną z GC używając gotowych dość zopiniowanych klocków typu obiekty JS. Tym niemniej zabawkowość języka oznacza również wysokopoziomowość, więc jednak jest to fajne pisanie, takie zabawkowe.
jarekr000000
30 lat temu takie myślenie to miało sens. Teraz nawet jak piszesz w ASM to jesteś prawie jak na wirtualnej maszynie, w tym sensie, ze trudno powiedzieć co wlaściwie robi procesor. Cache, spekulacje, mikrokod... a do tego zwykle nie piszesz w RING 0.... Nadal lubie się bawić C64, bo to chyba ostania generacja przewidywalnych praktycznie co do cyklu maszyn.
LukeJL
nom, wszystko się zwirtualizowało. Tym niemniej poziom zabawkowości w JS jest większy niż w C++.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
1

Jak 10cio latek zainteresuje się programowaniem, to pawie na pewno i tak strzeli mu do głowy asembler.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
jarekr000000
No właśnie, przeważnie nie (co mnie dziwi). Te nowe pokolenia są całkiem pragmatyczne.
SE
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:318
0

A jak od (|) strony:
Może "pokatować" młodego C?
https://helion.pl/ksiazki/zabawa-w-programowanie-jezyk-c-dla-nastolatkow-michal-wiszniewski,zaprcn.htm#format/d

PS. Tak, wiem - Python, Java, C# itd. są bardzo fajne, ale C czy C++ mają imho pewną przewagę - wymuszają większe zaangażowanie ze strony programisty i wybaczają mniej błędów. Pozwalają też lepiej zrozumieć co napisany program robi.

edytowany 1x, ostatnio: Serechiel
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:3 minuty
  • Postów:5105
0

@Serechiel

Są dwa główne podejścia: idziesz low to high lub high to low level.

Zaczynając od high level szybciej uzyskujesz widoczne efekty, nie walczysz z językiem (c++) i generalnie masz satysfakcje bo szybciej shit gets done - w tym nawet jakieś GUI jest prosto wyklikać, a to duży progress dla oka ;)

Idąc od low szybciej wyłapiesz garstkę rzeczy under the hood, ale tak naprawdę dla początkującego low lvlem są algorytmy - czyli pętelki, ifki i rozkminianie, a to jest prawie wszędzie takie samo.

edytowany 6x, ostatnio: WeiXiao
jarekr000000
A potem się musi człowiek tego wszystkiego oduczać :-( Wydaje mi się, że startowanie od góry ma tą zaletę, że człowiek od razu widzi, że tam na dole to bagno i wchodzi tylko kiedy musi.
WeiXiao
@jarekr000000: jak człowiek nadużywał @ to może i tak :P
jarekr000000
Nie kojarze tego @. wyparłem coś ?
WeiXiao
@jarekr000000: normalnie @Nie_Wierze
jarekr000000
Dobra już wiem - wyparłem jednak :-) Po prawdzie to ostatnio rzadziej trafiam na te adnotacje - narobiło się troche tego kodu wolnego od dziwactw.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)