Tag Archives: c++

20
lis

CodeRetreat 2011: Na miejsca, gotów…

Już za niecałe dwa tygodnie na polskiej scenie programistycznej pojawi się kolejne interesujące wydarzenie – spotkanie CodeRetreat, edycja 2011. Ze względu na to, że zamierzam się tam pojawić, zapraszam Was do lektury tego krótkiego wpisu wprowadzającego. Mam nadzieję, że uda mi się Was zachęcić do udziału w nim. :)

 

 

21
cze

PHP: Skrócony zapis kwalifikatorów widoczności metod klasy.

Czasami mam taki nostalgiczny nastrój tęsknoty za „starymi dobrymi czasami”, kiedy spod moich palców wyszło całkiem sporo kodu C++. Naprawdę lubię ten język i uważam za dobrą decyzję twórców wielu języków, aby lekko mówiąc „ściągnąć” składnię z tego języka do własnego rozwiązania. PHP w pewnym sensie jest jednym z nich, także istnieje pewne powiązanie pomiędzy obiema technologiami [poza faktem, że sam interpreter jest napisany w C]. W dzisiejszym wpisie chciałbym pokazać jedną rzecz, mały lukier składniowy, który był obecny w C++, a trochę brakowało mi go w PHP.

12
maj

Potyczki Algorytmiczne 2011: Zadanie „Wieże”.

Z lekkim poślizgiem publikuję analizę kolejnego zadania z konkursu „Potyczki Algorytmiczne” 2011 – 1B „Wieże”. Zadanie nie było trudne, aczkolwiek dosyć ciekawe. Nie udało mi się uzyskać jakiegoś specjalnie optymalnego wyniku, aczkolwiek pomyślnie przeszedłem wszystkie testy i kolejne 10 punktów wylądowało na moim koncie. Warto czasem rozruszać komórki mózgowe, dlatego zapraszam do lektury.

8
maj

Potyczki Algorytmiczne 2011: Zadanie próbne „Tulipany”.

Przeglądając różne informacje w Internecie trafiłem na stronę skierowanego w stronę programistów konkursu „Potyczki Algorytmiczne”, edycja 2011. Jednym z organizatorów jest wydział Matematyki, Informatyki i Mechaniki Uniwersytetu Warszawskiego [MIMUW], co gwarantuje dobry poziom zawodów.  Jako, że lubię czasem sprawdzić swoje umiejętności programistyczne, zarejestrowałem się w serwisie. Zapraszam do lektury krótkiego komentarza i analizy rozwiązania pierwszego, testowego zadania. Uwaga – zawiera spoiler! ;]

8
gru

[C++] Łączenie opcji case w instrukcji switch.

Wpisy dotyczące języka C++ pojawiają się dosyć rzadko na moim blogu, pomimo tego, iż uważam go za najwspanialszy język w jakim miałem okazję pisać kod [a trochę ich już poznałem]. Tym razem pomysł na kolejnego posta wpadł mi do głowy niepostrzeżenie podczas tradycyjnej, oczywiście nocnej, sesji programistycznej. Ze względu na czytelność [i jak zwykle wydajność ;]] produktu końcowego, zdecydowałem podczas projektowania, że będę korzystał z instrukcji switch zamiast serii else-if’ów. Zadowolony z upieczenia „dwóch pieczeni na jednym ogniu” przystąpiłem więc do konwersji moich pomysłów na formę binarną.

19
lis

[Doxygen] Dokumentować czas zacząć! + problem z „include guards”.

Ze względu na to, że jestem w trakcie tworzenia biblioteki która ma zamiar w przyszłości ujrzeć światło dzienne i powiedzieć „hello, world” na ekranie [mam nadzieję] wielu programistów i użytkowników końcowych, pomyślałem o tym, żeby w końcu zająć się napisaniem stosownej dokumentacji do projektu. Przez długi czas w moim kodzie funkcjonowały przeróżne komentarze opisujące mniej lub bardziej dokładnie „co się w danym miejscu dzieje”, ale były to bardziej opisy dla mnie, jako twórcy rozumiejącego cel i działanie poszczególnych elementów, niż dla kogoś, kto miałby w przyszłości korzystać z tego produktu. Pomyślałem więc [w "międzyczasie" zmuszając się do odrzucenia standardowego podejścia w stylu "dlaczego miałbym korzystać z rozwiązań zewnętrznych, skoro sam mogę stworzyć generator dopasowany do moich wymagań?"], że należałoby znaleźć dobre narzędzie pozwalające na stworzenie dokumentacji na podstawie kodu źródłowego w łatwy i w miarę przyjazny sposób.

9
lis

[C++] Klasy zaprzyjaźnione: „co je twoje, to je moje, a co moje, to nie rusz”.

Dzisiaj czytałem nieco o klasach zaprzyjaźnionych w języku C++ [ang. friend classes] i podczas lektury jednego z artykułów przypomniało mi się znane z podstawówki powiedzenie „co je twoje, to je moje, a co moje, to nie rusz”. Przez chwilę patrzyłem na przykładowy kod i nagle wpadł mi do głowy pewien pomysł. Wymyśliłem implementację tego powiedzenia w C++. ;] Oznaczenie klasy jako zaprzyjaźnionej z inną oznacza m. in. to, że wszystkie atrybuty tej pierwszej, niezależnie od klasyfikatora dostępu [public, protected, private] stają się dostępne dla drugiej bez żadnych ograniczeń. Pierwsza klasa „przekazuje” wszystkie informacje o sobie tej drugiej tak, jakby kwalifikatorem dostępu dla wszystkich jej elementów [atrybutów i metod] było słowo kluczowe public. Analogia jest, przynajmniej dla mnie, bardzo wyraźna. ;]

29
paź

[C++] „std::string” vs. „const std::string&”, czyli o przekazywaniu zmiennych słów kilka.

Samodzielna nauka jest w wielu przypadkach bardzo ciekawym doświadczeniem, z co najmniej dwóch powodów:

  • satysfakcja z udanej eksploracji nieznanych dotąd zasobów wiedzy.
  • możliwość samodzielnego wyboru tempa i zakresu informacji opracowywanych podczas jednej „lekcji”.

Ma jednak jedną podstawową wadę – nikt poza uczniem nie weryfikuje poprawności przetwarzanych danych, a także ich zrozumienia. Dlatego czasem, pomimo tego, że nierzadko w wielu sprawach potencjalny uczeń ma rację, to i tak trzeba go „wyprostować”, wskazać inny, bardziej poprawny, sposób myślenia. Do czego zmierzam? Jak zwykle, chcąc podzielić się z innymi nieco wiedzą, do jednego z moich doświadczeń z przeszłości.

12
paź

[C++] Wydajność arytmetyki wskaźników.

W tym artykule chciałbym przedyskutować sposoby stosowania i wydajność arytmetyki wskaźników przy poruszaniu się po tablicach. Na wstępie muszę zaznaczyć, że dosyć trudno było mi wybrać tytuł, bo nie wiedziałem jak nazwać ten problem. ;] Ale do rzeczy. Programując jeden z moich projektów zacząłem zastanawiać się nad tym, w jaki sposób można najbardziej optymalnie wykonać operacje na każdym z elementów, tak, aby był jak najmniejszy narzut na dostęp do każdego z nich. Nie mogłem znaleźć w internecie żadnych informacji, w których byłoby napisane jednoznacznie, jaką konstrukcję należy wybrać, zostałem więc zmuszony do samodzielnego przetestowania wszystkich, jakie znałem. ;]

© Copyright 2010-2013 Tomasz Kowalczyk. All rights reserved. Created by Dream-Theme — premium wordpress themes. Proudly powered by WordPress.