Nauka C++ w nowy sposób

0

Jak tam Fasadin, kiedy kolejna część? :)

ŁF
Daj mu poprawić niedoróbki
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
2

nastepna lekcja mam nadzieje ze powjawi się w przeciagu tygodnia.

W tym momencie poprawiam wcześniejsze lekcje (stylistyka, gramatyka, dodatkowe informacje). Wstęp powinienem skończyć do 2 godzin (chce dodać jeszcze zrzuty ekranu, żeby było jeszcze lepiej)

Ciesze się, że ludzie są zainteresowani kursem. Także na pewno nie mam zamiaru go zostawiać.

edytowany 1x, ostatnio: fasadin
flowCRANE
Hmm... Przydałaby się jedna lekcja - kiedy piszemy tak że, a kiedy także; Może sam coś skrobnę? :P
fasadin
także jako w wyjasnienie a tak że jako w następstwie :D
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Wstęp poprawiony.

  • Poprawiono stylistykę oraz gramatykę.
  • Dodano link do konfiguracji flagi C++14 gdyby ktoś nie miał tej opcji w swoim kompilatorze.
  • Poprawiono ogólnie formatowanie tekstu (przynajmniej mi się wydaje delikatnie lepszy).

Zastanawiałem się nad dodaniem screenów z instalacji/konfiguracji. Jednak doszedłem do wniosku, że są zbędne.

Jeżeli ktoś chciałby mieć do kursu z poziomu "Autora" (osoba która może zmieniać i poprawiać tekst) to dajcie mi znać ;) Każda pomoc się przyda.

ŁF
Popracuj jeszcze nad interpunkcją :P
ZS
Robisz świetną robotę i bardzo przyjemnie się ten kurs czyta! dzieki! :)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1

Drugi post poprawiony. Piszę jedynie po to by informować, że coś z kursem się dzieje

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Dodałem jeszcze do poprzedniej troszkę wyjaśnienia o kompilacji (w wstępie)

Trzecia lekcja poprawiona

  • poprawiono gramatykę, stylistkę.
  • dodano gwiazdki tam gdzie były wymagane
  • dodano link do rule of three/five/zero jako ciekawostkę.
edytowany 1x, ostatnio: fasadin
flowCRANE
we wstępie lub na wstępie ;)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

trochę spamuje. Mam nadzieje, że dużo osób nie obserwuje tematu to nie dostanie dużo powiadomień :)

Poprawiono kolejną lekcje.

  • Poprawa stylistyki/gramatyki
  • Dodano gwiazdki w brakujących miejscach.
grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
6

@fasadin przy takiej ilości tekstu dobrze byłoby też przerzucić to do jakiejś innej formuły. Przewijanie całości żeby dojść do spisu treści się nie sprawdza. Poza tym dobrze byłoby porozbijać to na rozdziały zamiast trzymać wszystko napisane ciągiem, w dodatku od najnowszego wpisu na samej górze. Człowiek, który to czyta musi przewijać z dołu do góry co jest nienaturalne.

fasadin
zrobie cos z tym
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
2

Jeśli zdecydujesz się na spis treści, to dobrze by było zrobić przy nagłówku każdej sekcji link do powrotu do spisu.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 1x, ostatnio: flowCRANE
fasadin
jednak spisu tresci raczej nie bede dodawal. Chyba bedzie on tylko dla mnie poki co
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Lekcja 4 poprawiona

  • Zmieniono literówki/gramatyke/stylistykę
  • Dodano listę dostępnych typów danych oraz zmieniłem formatowanie przy tym by było bardziej czytelne
  • Dodano więcej kroków co sie dzieje w hello world
  • Dodano gwiazdki w niektórych miejscach
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Ostatnio cos braklo motywacji, ale jest szkic rodzialu 6

http://pastebin.com/tkkPyeSM

Stylistycznie na pewno jest duzo do poprawy, bardziej wklejam linka czy merytorycznie ma to sens.
@Endrju @kq @ŁF @grzesiek51114

fasadin
uwagi: jezeli Wood to funkcja Burn. Nie mieszac Foo z innymi typami
fasadin
wywalic rozdzial o referencji. Wyjasnic to pozniej jako ze uzywa sie to glownie przy const. Przy non cosnt funkcjach nie ma to az takiego sensu
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:około miesiąc
  • Postów:308
0

Jedna uwaga.
#pragma once działa tylko na visual c++. Lepiej zastosować #ifndef... Chyba, że się mylę.

edytowany 2x, ostatnio: ŁF
Patryk27
#pragma once działa na każdym szanującym się kompilatorze - inna sprawa, że powinno się korzystać z dyrektyw define oraz ifndef :-P http://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html sekcja 1.3.4.
Endrju
@Patryk27 chyba żartujesz. #pragma once nie jest "obsolete" od wersji 3.4. A teraz mamy 6.1. Podałeś link do antycznego manuala, w nowym nie ma takiego zdania.
Patryk27
@Endrju: blurght, faktycznie. Nie spojrzałem na wersję :-P
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

oczywiscie ze sie mylisz :)

#pragma once

https://en.wikipedia.org/wiki/Pragma_once

jedynie w kompilatorze
Solaris Studio C/C++

nie ma pragma once

X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:około miesiąc
  • Postów:308
0

Sorki . Nie zrozumieliśmy się. Ja piszę na c++ Builder 6. Tam są tylko:

Kopiuj
#pragma alignment
#pragma anon_struct
#pragma argsused
#pragma checkoption
#pragma codeseg
#pragma comment
#pragma defineonoption
#pragma exit
#pragma hdrfile
#pragma hdrstop
#pragma inline
#pragma intrinsic
#pragma link
#pragma message
#pragma nopushoptwarn 
#pragma obsolete 
#pragma option 
#pragma pack
#pragma package
#pragma resource
#pragma startup
#pragma undefineonoption
#pragma warn

Inne przechodzą, ale są ignorowane.

Reczywiście ta dyrektywa przejdzie na Borlandzie, ale od XE3. Po co mi taki kombajn?

Ale szczerze ciekawy kurs. Po nowemu.

edytowany 4x, ostatnio: xenix33
Sarrus
A te środowisko nie jest już mocno przestarzałe przypadkiem?
Shalom
Przecież BCB 6 to jest starsze od ciebie chyba o_O
Sarrus
@Shalom Nie no musiałby mieć mniej niż 14 lat. BTW @xenix33 od premiery BCB 6 wyszło już kilka nowych standardów C++, więc dobrze by było zmienić środowisko. Serio.
vpiotr
BCB6 - skąd ludzie biorą takie pomysły?
Phestek
@vpiotr Mirek?
3

Nie jestem polonistą, ale kilka rzeczy rzuciło mi się w oczy (odnośnie kursu).
Proszę się nie obrażać ;)
[0. Wstęp]

  1. "Nie masz się co martwić" -> Nie martw się
  2. "Co poprzez to rozumiem" -> Co przez to rozumiem?
  3. "by coś móc robić" dwa czasowniki obok siebie -> by móc coś robić (nie" możemy coś", tylko "robimy coś")

Warto, aby ktoś przejrzał ten tekst, pod względem stylistycznym. Pozwoli to łatwiej "wbijać się" w treść i sens.

fasadin
bron boze sie nie obrazam. Jestem wdzieczny za takie uwagi :)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Poprawione uwagi dodatkowo następna lekcja jest już dostępna. Piszę kolejną.

Postaram się napisać w tym tygodniu o wskaźnikach oraz tablicach.

W rozdziale o wskaźnikach wyjaśnię bardzo krótko koncepcje wskaźników oraz new/delete. Od razu przęjdę do smart pointerów. Na koniec dam link dla zainteresowanych do linka gwyna, który dużo precyzyjniej i dogłębniej wyjaśnia wskaźniki.
(tutaj part 1, czesci jest 9)

W rozdziale o tablicach napiszę projekt typu dziennik. Pokaże, dlaczego tablice są złe oraz czemu std::vector jest dużo lepszym wyborem.
Jak zawsze każdy feedback mile widziany :)

edytowany 2x, ostatnio: fasadin
Zobacz pozostałe 5 komentarzy
ŁF
"Dam linka" --> dam kogo? co? - link. "Pokażę, dlaczego". Polecam ponownie świetne narzędzie - https://languagetool.org/pl/
fasadin
ten tool w ogole nie pokazuje ze jest cos zle z Dam linka ;)
ŁF
Przecież to nie człowiek ani nawet nie krasnoludek. Za to sprawnie wyłapuje błędy interpunkcyjne.
Azarien
@ŁF: dylemat nie jest w „kogo co” tylko w tym czy biernik od „link” brzmi „link” czy „linka” :P
Gynvael Coldwind
@fasadin: ack, dzięki za podlinkowanie :)
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:około miesiąc
  • Postów:308
0

Nie no musiałby mieć mniej niż 14 lat. Od premiery BCB 6 wyszło już kilka nowych standardów C++, więc dobrze by było zmienić środowisko. Serio.

Faktycznie, trzeba zmienić, ale na jaki? Duży wybór. Nie mówcie xe8, bo takiego kombajnu nie chcę. Nie programuję zawodowo. A jeśli chodzi o tablice, większość języków ich używa. Chyba trochę udziwniacie. Można używać vector i array, ale po co, i czy to jest jeszcze C++?

twonek
czy to jest jeszcze C++? - dopiero wtedy to jest C++, a nie dziwny twór na pograniczu C i C++. I jeśli pomyślisz o takiej tablicy np. z Javy, to bliżej jej do vector niż C++-owego tworu z nawiasami kwadratowymi.
vpiotr
@xenix33: tablice w c/c++ są strasznie niedorobione (np. długość, przekazywanie jako parametr, kompatybilność ze wskaźnikiem), dlatego od C++11 warto używać std::array (stała długość) i std::vector (struktura dynamiczna). Wg autorów języka std::array nie daje żadnego narzutu czasowego.
JU
Nie są niedorobione. Po prostu to jest bufor, a nie tablica znana z innych języków.
vpiotr
@Juhas: syndrom sztokholmski? ;-)
JU
No bo to tak samo jak mówić, że rower to taki niedorobiony motor ;)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

skoro chcesz C++ to zapoznaj sie z Qt, a jeżeli nie C++ to zapoznaj sie z C# i WPF

Nie programuję zawodowo

A jeśli chodzi o tablice, większość języków ich używa

Żaden programista zawodowo nie będzie się bawił w tablicę gdy może użyć klasy, która rozszerzaniem tablicy (bo pod std::vectorem masz tablice) zajmie się klasa.

Można używać vector i array, ale po co, i czy to jest jeszcze C++?

Przede wszystkim to jest C++, a nie C z klasami. A po co to używać? Teoretycznie możesz iść polować swoje dania (np szczury) i później rozpalić ognisko i je przyrządzić. Oczywiście sól też musisz sam wydobyć z kopalni... Ale czy jest sens?
A tak poważniej. Programista ma tworzyć oprogramowanie, a nie walczyć z językiem. Dlatego chociażby powstał Boost czy Qt. Bo pewnych rzeczy nie ma w standardowej biblotece C++. Jeżeli jest narzędzie które ułatwia pracę programiście to powinien je użyć. Nie ma sensu odkrywać koła na nowo

Bo w sumie z Twojego posta wynika, że powinniśmy pisać w kodzie maszynowym (czyli 1011100110) bo asm to też ułatwienie i czy asm to jest jeszcze programowanie? ;)

edytowany 4x, ostatnio: flowCRANE
X3
  • Rejestracja:ponad 9 lat
  • Ostatnio:około miesiąc
  • Postów:308
0

Kiedyś zacząłem się uczyć QT, ale przestałem. To faktycznie typowe C++. Rozwiązania, które w "normalnym" C++ zajmują wiele linijek, sprowadzili do jednej lub nawet jednego polecenia. Wszystko obiektowe.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
0

@xenix33 - to że coś zostało sprowadzone do wywołania jednej funkcji/metody, nie oznacza, że jest szybsze - może być nawet znacznie wolniejsze; Ilością kodu nie określa się jego efektywności;

@fasadin - wskaźniki to dość trudny temat dla początkujących, więc przyda się go dobrze omówić; Żeby potem każdy mógł tak jak ja twierdzić, że pointery to piękna sprawa :D


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 3x, ostatnio: flowCRANE
Zobacz pozostałe 10 komentarzy
fasadin
zgadzam sie porownanie nie bylo najlepsze. Chodzi o to ze odkad wprowadzono c++11 uzywanie nagiego new i delete (i przez to w wiekszosci wskaznikow) nie jest mile widziane. Od tego sa smart pointery ;)
vpiotr
od C++17 można dodatkowo zamienić parametry opcjonalne w formie wskaźników na std::optional.
fasadin
ok dzieki @vpiotr na pewno o tym wspomne tylko pewnie w pozniejszych wpisach. Jakbys jeszcze cos mial do dodania to bede wdzieczny
spartanPAGE
@furious programming praktycznie w ogóle nie uświadczysz używania wskaźników w dzisiejszych projektach C++
vpiotr
@fasadin: jeśli o wskaźnikach, to warto jeszcze wspomnieć o not_null: https://github.com/Microsoft/GSL/blob/master/include/gsl.h
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

http://pastebin.com/MeZ0AEEV

bardzo robocza wersja (zapewne merytorycznie sa bledy w kilku miejscach) postaram sie wieczorem to przeredagowac popatrzec na zrodla i gdzies jutro wrzucic

spartanPAGE
dorzuć jeszcze najczęstsze meamleaki związane z nieumiejętnym stosowaniem wskaźników (patrz: rule of five)
twonek
Smart pointer po polsku to inteligentny wskaźnik, ew. sprytny wskaźnik. Przeważnie są to zmienne, ale też może być to funkcja! z tego zdania wynika, że wskaźnik może być funkcją?
fasadin
@spartanPAGE dzieki @twonek no wlasnie nie wiedzialem jak to przetlumaczyc. Chodzilo ze moze pokazywac na zmienne lub funkcje ;) ale tak zmienie to tez
kaczus
  • Rejestracja:około 10 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Łódź
  • Postów:1402
0

Z uwag - to "mądre wskaźniki" brzmi tak średnio - raczej sprytne. Druga rzecz na pewno nie pointer'ami, a pointerami - apostrof jest tu błędem.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie
fasadin
ok poprawie te rzeczy, a merytorycznie nie walnalem sie tam gdzies?
kaczus
Na pierwsze przeczytanie nie, ale to proponowałbym poczekać jak inni przejrzą, ja teraz skorzystałem z tego, że w pracy coś się testuje i mam chwilę, więc też nie bardzo dokładnie analizowałem wszystko - przy szybkim czytaniu te 2 rzeczy rzuciły mi się
fasadin
dzieki wielkie :) ja wlasnie pisalem to w pracy bo nie ma zadnych taskow :(
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 godzin
  • Lokalizacja:Tuchów
  • Postów:12167
0

Wskaźnik to takie coś co wskazuje na cos innego.

@fasadin - przeginasz z tą prostotą :D

Wskaźnik to nic innego jak liczba, a ta liczba jest adresem na dany obszar pamięci, do którego umożliwia dostęp; Może też zawierać wartość null/nil (czyli adres równy 0), co umownie oznacza, że wskaźnik na nic nie wskazuje;

To nie kurs dla dzieci, więc Jaś i Marysia to nienajlepsze co możesz użyć do opisu technicznego zagadnienia.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 5x, ostatnio: flowCRANE
fasadin
wlasnie w tym rzecz, ze chcialem to tak opisac ;) nie chcialem pisac dokumentacji jezyka. Tak jak napisalem na poczatku Kurs będzie miał formę praktycznego opowiadania.
flowCRANE
Ale Jaś i Marysia..? ;P
fasadin
wiele osob nie lubi ksiazek head first, poniewaz wlasnie w podobny sposob opisuja. Ja lubie w ten sposob nauke ;)
fasadin
lubie jasia i marysie ;) szczegolnie ta druga :D
mad_penguin
mad_penguin
Alice i Bob
0

A gdzie wskaźniki na funkcje?

Jeżeli mamy obiekt Foo to musimy zdefiniować nasz wskaźnik na obiekt Foo.

Aha, dobrze wiedzieć. A wskaźnik void* to na jaki typ obiektu wskazuje?

edytowany 1x, ostatnio: flowCRANE
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

nie bedzie wskaznikow na funkcje od tego masz std::function chociazby

nie bedzie void* w najblizszym czasie to nie jest C

edytowany 1x, ostatnio: fasadin
Sarrus
Moim zdaniem warto jednak chociaż wspomnieć i dać linka do jakiegoś źródła. Prędzej czy później czytelnik z tym się zetknie.
fasadin
przeciez na koncu jest link do filmikow gwyna ktory omawia bardzo dokladnie wskazniki. ;)
Sarrus
No to dobrze ;)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
1
  • Zmieniłem wygląd bloga. Jak przełączymy się na sidebar to wszystkie lekcje po lewej stronie będą pokazane jako lista (prośba do @msm by fasadin.4programmers.net kierował od razu na sidebar :))
  • Poprawiłem literówki oraz wskazówki które dostałem
  • Dodałem kolejną lekcje

Rozdział 8 będzie o tablicach

  • Na początku pokaże jak używać debuggera! (dzięki @Shalom)
  • Następnie polecę githuba (i także podam swoje konto żeby projekty z lekcji były dostępne z poziomu githuba). Wyjaśnię również podstawy używania
  • Wyjaśnię tablicę (bez szczegółów)
  • Krok po kroku napiszę projekt typu dziennik (z nauczycielem, ocenami, uczniami) na bazie tablic. Również z zapisywaniem do plików oraz przypomnienie jak używać google
  • Przerobię kod tak by używał std::vector

Ten projekt dziennik będzie rozwijany później przy polimofrizmie (by dodać klasę Osoba) oraz z zapoznaniem się z JSONem (zamiast wymyślanego formatu w pliku). Pokaże również podstawy konfigurowania projektu (linkowania bibliotek)

edytowany 1x, ostatnio: fasadin
Zobacz pozostałe 8 komentarzy
DR
@fasadin dziennik na bazie tablicy? A czy to nie przypadkiem zła metoda? Tzn. wnioskuję po tym jak na forum się tępi taką praktykę :P Pewnie chcesz pokazać wyższość std::vector potem, ale czy lepiej w ogóle nie pokazywać tego, a tablice użyć do projektu w którym na pewno zjadą zastosowanie w realnym projekcie w C++, o ile w ogóle jeszcze znajdują zastosowanie?
fasadin
najpierw trzeba pokazac zlo by docenic dobro. Zreszta bedzie pisanie wlasnego std::vectora i wtedy bedzie trzeba uzyc tablicy
DR
@fasadin to tak jak u P. Mirosława :P OK przesadziłem, przepraszam :P No tak, rozumiem, tak się tylko chciałem upewnić :)
grzesiek51114
grzesiek51114
@Dregorio uważaj, bo niedługi Pan Mirek będzie brał przykład z fasadina i role się odwrócą :)
DR
@grzesiek51114 liczę na to :P Choć niektórym ego nie pozwala na taką zmianę
carlosmay
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Pabianice
1

7.3

Od C++11 weszły mechanizmy do standardowego języka które bardzo ułatwiają pracę z dynamicznym alokowaniem pamięci, dzięki czemu możemy odłożyć dokładną naukę wskaźników na troszkę później.

Od C++11 weszły mechanizmy od standardowego języka, znacznie ułatwiające pracę z dynamicznym alokowaniem pamięci, dzięki czemu możemy odłożyć szczegóły działania wskaźników na później.

7.3.2.1

  • Usunie obiekt który zawiera gdy zasięg unique_ptr wyjdzie poza zakres (pokaże na przykładzie)

Usunie zawierany obiekt, gdy zasięg unique_ptr wyjdzie poza zakres (pokażę to na przykładzie)

7.3.2.2

  • Używamy gdy chcemy żeby obiekt był dzielony (był w kilku miejscach na raz. Ten sam obiekt a nie jego kopia).
  • Używamy gdy chcemy, żeby obiekt był współdzielony (był w kilku miejscach jednocześnie. Ten sam obiekt, a nie jego kopia).

edytowany 1x, ostatnio: carlosmay
fasadin
dzieki
fasadin
poprawione :)
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
3

nowa lekcja sie opozni... mialem ja dzisiaj konczyc ale komp mi sie zresetowal a ze pisalem w visual studio code to sie nic nie zapisalo... (przyzwyczajenie z sublimetext ze tekst zostaje)

Mniej wiecej 16 godzin poszlo w... Poki co stracilem motywacje by pisac to od nowa ;)

edytowany 1x, ostatnio: fasadin
grzesiek51114
grzesiek51114
Masz plusa na zachętę :)
ŁF
Czyżby anniversary update zaatakował z ukrycia? Opcja "przełóż na później, aby zapisać pracę" powoduje po kwadransie nagły restart bez kolejnego ostrzeżenia.
fasadin
laptop na ktorym pracowalem po prostu sie zresetowal. Bez zadnego ostrzezenia. Aktualizacji nie bylo. Juz konczylem caly artykul... nawet kod tam pisalem i mialem 70% zrobione (kodu) :/ Caly tekst byl na 90%
ŁF
Cóż, pozostaje wyciągnąć wnioski - pracę powinno zapisywać się co kilka-kilkanaście minut.
carlosmay
Jak już ruszysz to pójdzie :)
madmike
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 5 lat
0

No i mam trochę mieszane uczucia... Dawno nie pisałem w c++, więc na dobrą sprawę powinienem przelecieć cały kurs, żeby się pobawić w ocenianie, ale... tak pobieżnie przejrzałem... trochę wkurza czasami stylistyka i właściwie to nie wiem do kogo kierowany jest kurs... Do kogoś kto zaczyna, do kogoś kto ma już podstawy i chce sobie uporządkować wiedzę o klasach? Wkurza niekonsekwencja funkcja/metoda... Ot takie drobiazgi... Jak nie będę miał co robić, to się pouczę z Twojego kursu i trochę pomarudzę ;)


fasadin
jak najbardziej marudz ;) Kurs jest kierowany do poczatkujacych. Roznice miedzy metoda a funkcja zostaly wyjasnione, ale w C++ smialo mozna ich stosowac zamienne ;)
ŁF
@fasadin: nie "ich", a "je" - bo to one, nazwy elementów.
carlosmay
@fasadin - czy napisany wstępnie artykuł też będzie dostępny na pastebin?
fasadin
tak
fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0

Rok przerwy... ale jest zarys kolejnej lekcji ;) Tym razem o Debuggerze

Tutaj tekst
https://pastebin.com/8zRiNC6H

Tutaj zdjecia
http://imgur.com/a/1A9Hy

Mam nadzieje, ze jeszcze z 3-5 lekcji i będę mógł pisać w prawie normalnym C++ :)

fasadin
zawolam ktorzy sledzili watek @ŁF @kq @grzesiek51114 @carlosmay @Endrju
fasadin
zapomnialem o @vpiotr jeszcze :)
grzesiek51114
grzesiek51114
@fasadin: super!!! Idę na wesele właśnie ale jak wrócę to chętnie poczytam :)
Patryk27
@fasadin: to number = number; w konstruktorze raczej za wiele nie robi ;-) (chyba że to jest celem lekcji, nie patrzyłem jeszcze w tekst)
fasadin
tak to jest celem lekcji ;)
fasadin
musi byc co debugowac ;)
vpiotr
1.5 zamieniłbym na expectedAge, osoby można by bardziej losowe zrobić (imię/nazwisko losowo ze zbioru, wiek modulo ze zbioru - typu age = ages[index % ages.size()]). Żeby wyeliminować dupa-debugging można dodać od razu wyświetlenie wygenerowanych ludzi (żeby można było na "kartce" policzyć sobie średnią i np. żeby zobaczyć że ich jest za dużo). Trochę mi w tej wersji brakuje struktury tekstu (nagłówki, bold), ale to pewnie przez ten pastebin. I chyba bym podał konkretnie co się teraz wyświetla i jaki ma być wynik na ekranie.
fasadin
@vpiotr: dzieki, na pewno poprawie :)
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)