Symulator pożaru lasu – dodajemy narzędzia

Semestr się już zakończył … Nie dałem rady opisywać na bieżąco rozwoju projektu symulatora pożaru lasu. Na szczęście wszystko zaliczyłem w pierwszym terminie i teraz mam trochę wolnego czasu. Dzięki temu moge nadrobić wymuszone przez wyższe czynniki zaległości. Zapraszam do lektury 🙂 Co będziemy robili? Dzisiaj dodamy do programu podstawowe …

Matura z informatyki 2018 – zadanie WEGA (C++)

Postanowiłem, że obok wpisów na temat bardziej zaawansowanych zakamarków języka C++ postaram się przysłużyć co nieco maturzystom. A w związku z tym na blogu pojawi się niebawem seria wpisów, w których będziemy analizowali zadania maturalne z ubiegłych lat. Na pierwszy ogień pójdą polecenia wymagające programowania. Językiem, w którym będziemy kodowali …

Programowanie współbieżne w języku C++ – synchronizacja

W poprzedniej części dowiedziałeś się czym są wątki oraz po co ich używać. Poznałeś także podstawową metodę synchronizacji, którą jest muteks, wprowadzony wraz z wersją C++11. Wierzę, że jest to ogrom przydatnej wiedzy, którą z pewnością kiedyś wykorzystasz. Zapoznaj się więc z kolejną częścią serii która sprawi, że praca z …

Aplikacje wielowątkowe w języku C++

Czy pisałeś kiedyś program, który potrzebował dużo mocy CPU? Zastanawiałeś się dlaczego twoja aplikacja używa maksymalnie jednego rdzenia, nawet jeśli masz ich kilka/kilkanaście? Czy tworzyłeś kiedyś program, która odczytywał z dysku duży plik? I w tym momencie, w którym ten plik był odczytywany program nie reagował na polecenia użytkownika? No …

Wyrażenia lambda – użyteczna nowość C++11.

Nowsze standardy C++ wprowadzają wiele udogodnień, które sprawiają że nam – programistom – żyje się wygodniej. Musimy pisać coraz mniej kodu, otrzymując tę samą funkcjonalność. Sprawia to, że uzyskujemy większą wydajność. Poza tym, mniejsza ilość lepiej i zwięźlej napisanego kodu zwiększa jego czytelność. Dzięki temu ludzie, którzy obejmą projekt po …

Symulator pożaru lasu – tworzymy okienko

W poprzedniej części stworzyliśmy „podstawy podstaw” dla naszego symulatora pożaru lasu. Napisaliśmy podstawowe klasy – Tree, który przechowuje właściwości pojedynczego drzewa/pożaru, ForestMap odpowiedzialny za przechowywanie informacji o stanie całej planszy oraz szereg klas pomocniczych takich jak Coordinates czy SingleCell. Postawimy kolejny mały krok. Stworzymy klasę, która będzie obsługiwała wyświetlanie drzew/pożarów …

Symulator pożaru lasu – założenia i pierwsze kroki

Na studiach spotkasz się z wieloma typami zajęć. Są laboratoria, są ćwiczenia i wiele innych. Spośród wszystkich najbardziej lubię projekty. Mam wyznaczone zadanie, które muszę wykonać do określonego dnia. I nikt mnie nie zmusza do tego aby użyć konkretnego sposobu rozwiązania problemu. Kłopotem nie jest także czas. Co prawda istnieją odgórnie …

Uniform Initialization – prostota wypełniania struktur danych

Programując w C++, z pewnością wiesz jak inicjuje się zmienne. Nie jest to czynność skomplikowana. Trochę więcej problemów zachodzi kiedy musisz zainicjować tablicę lub jakiś kontener. Stosujesz wtedy pewnie pętlę for. Jeśli musisz dodać kilka lub kilkanaście elementów do kontenera vector, stosujesz metodę push_back, wywołując ją ręcznie albo w pętli. …

weak_ptr – inteligentne wskaźniki

Omówiliśmy unique_ptr i shared_ptr. Jesteśmy bardzo blisko końca naszej fascynującej wędrówki przez świat inteligentnych wskaźników. Został nam do omówienia ostatni gatunek. Weak_ptr. W tłumaczeniu na polski byłby to „słaby wskaźnik”. Czym może się charakteryzować? Czy potrzeba nam w programowaniu słabeuszy? Tytułowa „słabość” weak_ptr polega na tym, że nie posiada on …

shared_ptr – Inteligentne wskaźniki

W poprzednim artykule zajmowaliśmy się pierwszym z „inteligentnych” wskaźników – wskaźnikiem unikalnym (unique_ptr). Unique_ptr jest bardzo fajnym wskaźnikiem, ale nie w każdej sytuacji możemy skorzystać z jego dobrodziejstw. Czasami potrzebujemy „współdzielić” obiekt i jego własności między dwoma lub więcej miejscami w programie. Załóżmy, że tworzymy aplikację obsługującą przychodnię. Mamy trzy rodzaje …