Official ENIDUST Forum
Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 [2] 3

Author Topic: C++  (Read 4848 times)

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #15 on: January 15, 2016, 08:19:13 »

@Lich generalnie jak opanujesz jedno środowisko to będzie ci łatwiej opanować kolejne, na zasadzie podobieństw. W pracy i tak najczęściej są dodatkowe wymagania typu: formatowanie kodu, komentowanie, dodatkowe biblioteki używane tylko przez firmę etc, więc jak się gdzieś załapiesz to będziesz musiał to i tak przyswoić.

Osobiście na Twoim miejscu wybrałbym Broland lub Visual Studio - w obu pisałem jakiś czas i osobiście preferuję Visual, ale dla początkującego teoretycznie nie powinno być różnicy.

@Ajamaharis jak pisał kilka lat temu w Borlandzie to była tam opcja debugowania i nawet się sprawdzała. Nie pamiętam czy była tam możliwość zatrzymania programu jak zmienna osiągnie określoną wartość (Visual ma taką opcję), ale dla nauki i prostych programików to co było spokojnie wystarczało.
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #16 on: January 17, 2016, 09:44:44 »

Używam na ten czas Code::Blocks. Korzystałem z 2 poradników na początku i obydwa korzystały z tego właśnie środowiska, więc jako zaczynający zabawę z programowaniem, też wziąłem Code::Blocks.
Co to są (prostym językiem, nie proszę o wyklepane definicje :P) biblioteki?
@RhinoRace
Co to jest formatowanie kodu? Dodatkowe biblioteki używane przez firmę, masz na myśli, że firmy robią swoje biblioteki?
Logged

Ajamaharis

  • User
  • Posts: 122
    • View Profile
Re: C++
« Reply #17 on: January 17, 2016, 10:43:08 »

biblioteki są to już gotowe skrypty ułatwiające pracę. dla przykładu: by pobierać dane z klawiatury czy wiświetlać je na ekranie potrzebna ci biblioteka STDIO, do obsługi pliów FSTREAM. zapewne korzystałeś z bibliotek nie wiedząc że to są biblioteki ^^

firmy na pewno robią swoje biblioteki gdyż by nie było problemów wszyscy powinni programować w podobny sposób (te same biblioteki, podobne formatowanie kodu)

formatowanie... mniej więcej coś takiego:
Code: [Select]
#include <stdio.h>
#include <stdlib>
 
int main(void)
{
    int mantysad,mantysaf;
    double dx, dxp1;
    float dy, dyp1;
   
    mantysad = 0; dx = 1.0; dxp1 = 2.0;
    mantysaf = 0; dy = 1.0; dyp1 = 2.0;
   
while(dxp1 > 1.0)
    {
        dx *= 0.5;
        dxp1 = 1.0 + dx;
        mantysad++;
    printf("%d\tDouble Epsylon maszynowy (double) = %g\n",mantysad,dxp1);

        if(dyp1 > 1.0)
        {
             dy *= 0.5;
            dyp1 = 1.0 + dy;
            mantysaf++;
        }       
    }
        system("CLS");
    printf("Double\nEpsylon maszynowy (double) = %g. \nLiczba bitow mantysy = %d\n", 2*dx, mantysad-1);
    printf("\nFloat\nEpsylon maszynowy (float) = %g. \nLiczba bitow mantysy = %d\n", 2*dy, mantysaf-1);
        getchar();
}
nie przejmuj się że cześci nie rozumiesz bo to C a nie C++ ^^

generalnie chodzi o wcięcia i przejrzystość kodu. ułatwiają czytanie oraz analizę kodu
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #18 on: January 17, 2016, 14:35:06 »

Co masz na myśli, że korzystałem z bibliotek nie wiedząc, że to są biblioteki? :P Biblioteki w C++ to są na samej górze "#include <...>". Biblioteki są to skrypty ułatwiające, czy umożliwiające pracę? Tak jak w podanym przez Ciebie przykładzie, by pobierać dane z klawiatury potrzebna jest biblioteka STDIO. Da się pobrać dane z klawiatury bez tej biblioteki?
Logged

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #19 on: January 18, 2016, 08:50:02 »

#include to jest dołączenie innego pliku do aktualnego pliku i umożliwienie w nim korzystania z kodu zawartego w dołączanym pliku.

Biblioteka jest to zbiór funkcji umożliwiających wykonanie pewnych operacji bez potrzeby pisania ich od nowa. Biblioteki mają to do siebie, że w środku nie masz kodu wywołującego funkcje (w skrócie nie ma main()), a jedynie kod wykonujący pewne operacje. Dobrym przykładem jest wspomniana STDIO i wszystkie STREAM. Innym bliższym jest biblioteka matematyczna - chyba math.h, ale dawno nie pisałem więc nie pamiętam. Masz w niej np funkcje do obliczania pola koła, podnoszenia do potęgi, wartość bezwzględna etc.

Teoretycznie sporą część operacji zawartych w bibliotekach można napisać samemu ale to jest jak wymyślanie koła od nowa - niby można ale po co.

W dużym skrócie - biblioteka to zbiór funkcji (klas) umożliwiających wykonanie określonych operacji bez potrzeby pisania ich za każdym razem od nowa.
Zaletą biblioteki jest to że piszesz ją raz, sprawdzasz czy działa poprawnie, a potem korzystasz i o ile jest dobrze napisana nie musisz się bawić w debugowanie kodu w niej zawartego.

Do pobierania danych z klawiatury w konsoli to jest STDIO albo któraś ze streamowych bibliotek (te co mają w nazwie STREAM). Na bank są jeszcze inne, albo możesz sobie napisać własną obsługę, ale jest to dość skomplikowane i jeszcze nie spotkałem kogoś kto by chciał się w to bawić. Prościej jest skorzystać z istniejących bibliotek i przynajmniej ma się pewność, że działają.
W programach okienkowych jest to zawarte w obsłudze kontrolki, więc raczej się tym nie przejmujesz.
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #20 on: January 18, 2016, 16:08:08 »

To co podajemy po #include <tutaj> to niekoniecznie jest biblioteka?
Logged

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #21 on: January 19, 2016, 08:08:49 »

W C i C++ masz w skrócie 3 typy plików:
1. Plik główny kontrolujący wykonanie programu.
2. Plik nagłówkowy z definicjami funkcji i klas: np cos1.h, cos2.h etc.
3. Plik z kodem do pliku nagłówkowego: np  cos1.c lub cos1.cpp, cos2.c lub co2.cpp etc

To co załączasz do kodu po include to plik nagłówkowy - kompilator wie że żeby wykonać kod ma szukać pliku z tą samą tylko rozszerzeniem c lub cpp.

Teoretycznie to można nazwać biblioteką, ale częściej biblioteką nazywa się zbiór funkcji i klas mających bardziej uniwersalne znaczenie i mogących być zastosowanymi w różnych programach. Pierwszy przypadek może wystąpić jak dzielimy program na mniejsze części i klasy/funkcje w tych plikach są na tyle specyficzne dla programu, że raczej nie będzie się ich stosować nigdzie indziej. Przykłady bibliotek były już podane ;)

Przynajmniej u mnie na studiach i w pracy taki był podział - możliwe że z teoretycznego punktu widzenia może to się trochę różnić.

Jak dojdziesz do tworzenia klas i je w miarę zrozumiesz to dobrym pomysłem jest w ramach ćwiczenia korzystania z kilku plików w programie zrobić każdą klasę w osobnym pliku - normalnie się aż tak nie rozdrabnia i klasy się grupuje wg zastosowania, hierarchii lub wytycznych firmy.
« Last Edit: January 19, 2016, 08:11:42 by RhinoRace »
Logged

mrksiedzu

  • User
  • Posts: 254
    • View Profile
Re: C++
« Reply #22 on: January 19, 2016, 15:47:53 »

Quote
To co załączasz do kodu po include to plik nagłówkowy - kompilator wie że żeby wykonać kod ma szukać pliku z tą samą (z kontekstu zrozumiałem, że chodzi o nazwę) tylko rozszerzeniem c lub cpp.
Bzdura.
W headerach umieszczasz deklaracje, które mają być dostępne w plikach, które je includują.
I kompilator nie szuka takiego samego pliku jak header, tylko z cpp

Kompilator przetwarza cpp i widzi, że includujesz header, więc ten cpp ma dostęp do tego headera.
I w tym cpp możesz zainicjalizować zmienne lub zdefiniować funkcje, klasy, structy itp.
I możesz to robić w KAŻDYM cpp, który includuje headera z deklaracjami ( ale TYLKO raz )

np. masz plik "TwojaStara.h" iw nim masz deklarację funkcji void blahblah();
i możesz bez problemu zdefiniować ciało tej funkcji w pliku "Janusz.cpp", w którym includujesz "TwojaStara.h"


PS: przepraszam za głupie nazwy i "includowanie"
« Last Edit: January 19, 2016, 15:53:16 by mrksiedzu »
Logged

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #23 on: January 19, 2016, 16:56:10 »

Jakbyś nie zauważył kolega dopiero zaczyna przygodę z programowaniem i dla niego nie są istotne szczegóły z Twojego opisy, a jedynie ogólny jak najprościej przedstawiony zarys działania języka.

Mając na uwagę prostotę opisu powiedz mi co jest prostsze do zrozumienia? Twój opis o możliwościach języka, za zastosowanie którego na każdym forum programistycznym Cię wyśmieją, a w pracy bez patrzenia i testowania kodu każą Ci go przepisać czy mój jednozdaniowy opis przestawiający poprawny podział programu na pliki?

Jakbyś nie zauważył w prawie każdej wiadomości piszę "w skrócie" - zakładam że wiesz co to znaczy. Odpowiedź dotyczyła czy wszystko po include jest biblioteką, a żeby na to odpowiedzieć trzeba jakoś przestawić zasadę działania bez wdawania się w zbędne szczegóły.

Swoją drogą to co przedstawiłeś jest tego typu wiedzą, że fajnie jest to wiedzieć i można się tym pochwalić, ale w ogóle się taka wiedza do niczego nie przydaje poza pilnowaniem żeby takich praktyk nie stosować.
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #24 on: January 19, 2016, 17:42:35 »

Muszę się zgodzić z RhinoRace (oczywiście nie co do definicji, lecz co do ich przejrzystości). Proszę Was, nie wdawajmy się w szczegóły gdyż na ten czas nie za bardzo mi to pomaga, a wręcz czasami przeszkadza.
Da się (myślę, że pytanie powinno brzmieć jak) w C++ włączyć takie oto okienko, jakie widać na zdjęciu poniżej?
http://i.imgur.com/HPRXMnx.png
Dam przykład, w którym chciałbym je zastosować.
1.Włączam program, w którym otwieram to okienko i wybieram cokolwiek, dajmy na to Mozillę Firefox.
2.Gdy program wykryje, że Mozilla jest włączona to uruchamia mi odliczanie (po prostu liczy, ile program jest włączony).
Logged

mrksiedzu

  • User
  • Posts: 254
    • View Profile
Re: C++
« Reply #25 on: January 19, 2016, 17:46:11 »

@RhinoRace
Wiem, że trochę się czepiam, ale moja nauka polega na badaniu własności i zachowań poszczególnych elementów składni i gdybyś mi powiedział coś w takim uproszczeniu, to tylko byś mi utrudnił nieco życie.

Natomiast masz rację, twoje uproszczenia dla licha mogą być łatwiejsze do zrozumienia, sam nawet prosił o proste wytłumaczenie.
Po prostu się przyczepiłem, bo lubię się czepiać :D
« Last Edit: January 19, 2016, 18:25:49 by mrksiedzu »
Logged

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #26 on: January 20, 2016, 08:27:18 »

@Lich nie bardzo wiem gdzie można by to wykorzystać.
Takie coś podchodzi pod integrację z systemem operacyjnym i ja bym raczej szukał czegoś co już w systemie istnieje i tylko do tego dostać się z własnego programu. Jeżeli to ma monitorować ile czasu jaki program działa to może lepiej zrobić go jako program zawsze działający w tle i uruchamiający się przy starcie systemu - oczywiście wtedy nie miałbyś okienka wyboru pliku do otwarcia tylko program by zliczał wszystko lub ewentualnie wg konfiguracji.

@mrksiedzu
Spoko. Osobiście nie piszę w C++, ale u mnie w pracy jest mocny nacisk na trzymanie się standardów i zasad, co swoją drogą mocno ułatwia współpracę w dużym zespole. U nas jest zasada, że jeżeli coś można wykonać w sposób niezgodny ze standardami tzn że należy to traktować że tego nie da się wykonać w taki sposób i trzeba szukać innego rozwiązania. Więc też się trochę przyczepiłem ;)
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #27 on: January 20, 2016, 17:44:26 »

Już myślałem nad tym. Program działałby w tle. To okienko służyłoby do wskazywania w prosty i wygodny sposób aplikacji, którym mój program ma odmierzać czas. Żebym nie musiał własnoręcznie wpisywać ścieżki programu, tylko poprzez to okienko wskazywałbym owe aplikacje, a program odczytywałby ich ścieżki dostępu).
Logged

RhinoRace

  • User
  • Posts: 175
    • View Profile
Re: C++
« Reply #28 on: January 21, 2016, 08:30:32 »

Czyli to okienko to ma służyć tylko do konfiguracji, a program ma sobie działać w tle w trayu.

Generalnie to musisz uzyskać od systemu listę aktualnie działających programów i tutaj masz 2 opcje:
1. System ma informację kiedy program został uruchomiony - kopiujesz tą informację do swojego programu i dalej ją w zależności od potrzeb obsługujesz.
2. System nie ma informacji kiedy program został uruchomiony - sprawdzasz czy program jest już w Twojej liście działających programów, jak nie to pobierasz aktualny czas systemowy i dodajesz do listy.
W obu przypadkach jak programu nie ma w systemowej liście uruchomionych aplikacji to usuwasz go ze swojej listy.

Całość działa cyklicznie - co 1-10 sekund odpytujesz system.

Generalnie masz tu 2 wyzwania:
1. Wysłać program do traya - z tego co pamiętam nie jest to aż tak trudne.
2. Pobrać od systemu listę aktualnie uruchomionych programów - tutaj mogą być schody zwłaszcza, jeżeli ustawienia bezpieczeństwa systemu nie pozwalają każdemu programowi pobrać listy uruchomionych programów.

Osobiście uważam, że jeżeli dopiero zaczynasz to taki programik to trochę za wysokie progi. Lepiej zacząć od czegoś co nie wymaga integracji z systemem operacyjnym, a jedynie uruchomić, zrobić to co trzeba i zamknąć. Zwłaszcza, że jeżeli będziesz gdziekolwiek szukał informacji jak rozwiązać te 2 wyzwania to wszędzie z założenia będzie że znasz język i potrafisz analizować kod, a tego nauczysz się tylko pisząc programy i analizując czemu to co napisałeś działa inaczej niż chciałbyś.
Logged

Lich555

  • User
  • Posts: 1063
    • View Profile
    • Moje zdjęcia
Re: C++
« Reply #29 on: January 21, 2016, 09:24:01 »

Ja myślałem nad czymś takim, że program działając w tle wykonuje nieskończoną pętlę, która sprawdza czy dany program (podany wcześniej za pomocą omówionego już okienka) jest uruchomiony. Jak jest uruchomiony to odlicza czas (inkrementuje zmienną z odstępami 1 sekundy czyli sleep 1000) i zapisuje cały czas wynik do notatnika.
Logged
Pages: 1 [2] 3