ďťż

Ładny brzuch

Witam :hi:

Posiadam Dev-C++ w wersji 4.9.9.2 i chcę zacząć programować w języku C ponieważ podobno jest to dobry język itp. Tylko nie wiem czy powinno go się jakoś skonfigurować pod C, czy być może na domyślnych ustawieniach może pozostać? Pytam ponieważ zauważyłem opcję Uznaj C++ za domyślny język nowych projektów która znajduje się w Narzędzia >>> Opcje środowiska >>> Zakładka Ogólne.
http://images1.fotos...cbfc8eaf01d.png
Oraz Katagoria Typu plików na zakładce Skojarzenia
http://images2.fotos...13d18d1211b.png

Proszę o napisanie jak należy poprawnie skonfigurować oraz ewentualnie jakiś dobry (najlepiej sprawdzony) kurs internetowy języka C. Znalazłem TEN ale nie wiem czy jest dobry a może jest jakiś lepszy dla początkujących?
Użytkownik adam9870 edytował ten post 16 wrzesień 2006, 20:58



Pytam ponieważ zauważyłem opcję Uznaj C++ za domyślny język nowych projektów która znajduje się w Narzędzia >>> Opcje środowiska >>> Zakładka Ogólne.
http://images1.fotos...cbfc8eaf01d.png
Oraz Katagoria Typu plików na zakładce Skojarzenia
http://images2.fotos...13d18d1211b.png
1. Kiedy tworzysz nowy projekt masz wybór C albo C++ i do tego służy ta opcja.
2. ??

C jest dobry tylko do nauki programowania strukturalnego, jest dość przestarzały, lepiej ucz się C++ i programowania obiektowego. A ten kurs to raczej opis instrukcji, ale tak, jest dobry :)


Kiedy tworzysz nowy projekt masz wybór C albo C++ i do tego służy ta opcja.
Racja, nie zauważyłem. :oops:


2. ??
Powiem inaczej - Czy uważasz, że kurs do którego podałem link w pierwszym poście jest dobry na początek oraz czy znasz lepszy dla początkujących?


lepiej ucz się C++ i programowania obiektowego.
Hmm.
Przeglądałem dzisiaj jakieś dwa kursy C++ i jakoś się zniechęciłem. Najpierw raczej wolę poznać C a potem zobaczymy. Z tego co wiem, C++ to jest rozszeżenie języka C+ m.in o możliwości programowania obiektywnego więc jak poznam C to myślę, że powinno potem być łatwiej z C++ ;)



Wiesz akurat w teori to w prostych słowach C + OO + STL = C++... Może trochę naciaga definicja ale w gruncie rzeczy tak jest :)

w gruncie rzeczy podstawy C i C++ będą prawie identyczne, no może tylko SCANF zamiast CIN, potem nauczy się struktur to łatwiej w przyszłości zrozumie klasy :) ale ja bym i tak brał od razu C++ :)

w c++ kilka rzeczy jest prostszych - chocby wlasnie strumienie. ja bym bral od razu c++

Jeśli chcesz tak jak jakieś 95% uczących się programowania w C++ używać rzeczy, które nie wiesz jak działają to pewnie - pójdź za wyżej napisanymi radami i zacznij od razu od tego języka. A następnie nabij pałkę gwoździami i wal nią każdego kto użyje przy Tobie słowa "wskaźnik". ;-)
Jeśli jednak wolisz najpierw zdobyć pewne pojęcie o tym co naprawdę będzie robił Twój program to proponuję nauczyć się podstaw C, a dopiero później przejść do C++.

Poza tym C jest znacznie prostsze od C++. Oto przykład:
#include <stdio.h> int l;int main(int o,char **O, int I){char c,*D=O[1];if(o>0){ for(l=0;D[l ];D[l ++]-=10){D [l++]-=120;D[l]-= 110;while (!main(0,O,l))D[l] += 20; putchar((D[l]+1032) /20 ) ;}putchar(10);}else{ c=o+ (D[I]+82)%10-(I>l/2)* (D[I-l+I]+72)/10-9;D[I]+=I<0?0 :!(o=main(c/10,O,I-1))*((c+999 )%10-(D[I]+92)%10);}return o;}
Użytkownik Chmurek edytował ten post 19 wrzesień 2006, 19:23
Ale C powinien być raczej tylko do nauki podstaw, bo potem podchodzisz do pisania programów w sposób strukturalny, a nie obiektowy, co zdecydowanie nie jest dobre. Poza tym podstawy C i C++ róznią się tylko nazwami instrukcji, więc po co uczyc się czegoś przestarzałego. Co do wskaźników, czym róznią się te w C od tych z C++? W C++ istnieje dodatkowo bardzo przyjemna rzecz zwana referencją, podobna do wskaźników lecz znacznie od nich prostsza.


(...)
heh bardziej tego kodu skrócić się nie dało :) a swoją drogą to nie zgodzę się z tym co mówisz. Po co chłopak ma się uczyć C kiedy C++ oferuje to samo a nawet więcej(tzn jest lepsze, prostsze)?


Ale C powinien być raczej tylko do nauki podstaw
Po pierwsze autor tematu będzie się właśnie podstaw uczył.
Po drugie słowo "powinien" raczej nie pasuje mi tu w uniwersalnym znaczeniu, bo przecież zależy co się będzie chciało później pisać. I tutaj przechodzimy do kolejnej części Twojego zdania...

bo potem podchodzisz do pisania programów w sposób strukturalny, a nie obiektowy, co zdecydowanie nie jest dobre
Po raz kolejny - zależy jakich programów.
Po za tym twierdzenie, że zaczynając naukę podstaw od C trudno jest przejść do obiektowego programowania to w sumie bzdura.

Poza tym podstawy C i C++ róznią się tylko nazwami instrukcji, więc po co uczyc się czegoś przestarzałego.
To że dla 97,931% osób uczących się C++ różnica między nim, a C jest równoważna z różnicą między printf, a cout, nie oznacza, że tak jest. ;-)
W każdym razie większość tego co się zazwyczaj nazywa podstawami faktycznie jest bardzo podobna, a wręcz taka sama i to jest kolejny argument za opanowaniem C w pierwszej kolejności.

Co do wskaźników, czym róznią się te w C od tych z C++?
W C wskaźniki są konieczne, w C++ są ZŁE.

Na koniec napiszę, że nie jestem przeciwnikiem C++ i nie uważam, że C jest lepsze do wszystkiego. Prawdę mówiąc uważam C++ za bardzo fajny i przyjemny język do naprawdę wielu zastosowań. Po prostu uważam, że przydatna jest dobra znajomość C, przed rozpoczęciem nauki C++, chociażby po to, by wiedzieć co naprawdę robi STL.

Edas: Opisałem wyżej dlaczego. Poza tym nie napisałem, że ma się uczyć tylko C, ale najpierw C.
Użytkownik Chmurek edytował ten post 19 wrzesień 2006, 21:00
Chodzi mi głownie o to, żeby nie wyrobił w sobie nawyku pisania w sposób strukturalny.
Użytkownik 12k12 edytował ten post 20 wrzesień 2006, 17:45
Już napisałem, że "wyrabianie sobie nawyku" (w tym sensie) to bajka opowiadana przez 1337 hax0r0w i innych LUG'owcow swoim pluszakom na dobranoc. Innymi słowy - totalna bzdura, bo dobry programista i tak powinien umieć pisać na obydwa sposoby. *

* Nie dotyczy Delphi.


(...)
"Lepiej się uczyć C przed C++ to bajka opowiadana przez 1337 hax0r0w i innych LUG'owcow swoim pluszakom na dobranoc. Innymi słowy - totalna bzdura, bo po co mam się uczyć dwa razy prawie tego samego?"

O ile mi wiadomo w C++ można zrobić to samo co w C i możemy niemalże skopiować program w C do kompilatora C++ i poprawnie skompilować, tak więc nie wiem, czemu C miałby być lepszy. I nie wiem, czemu ktoś miałby się uczyć najpierw przestarzałego C - marnotractwo czasu.

Ja rozumiem, że ludzie kupujący KŚE nie słyną ze specjalnej bystrości, ale chyba wystarczyłoby dokładnie przeczytać to co pisałem, by zauważyć, że nie było w tym nic o wyższości C nad C++.
Napisałem za to, że najpierw C, a później C++.
Dlaczego? Ok, powtórzę.
Właśnie dlatego, że C jest prostsze od C++, a co za tym idzie łatwiej się go nauczyć.
Poza tym filozofia pisania programu w C++ jest zazwyczaj inna niż w wypadku C. Większość źródeł zaleca korzystanie z gotowych zbiorników i obiektów funkcyjnych zamiast samodzielnego alokowania pamięci.
Jest to oczywiście uzasadnione i sensowne, jednakże dobrze jest też znać podstawy, żeby wiedzieć co się naprawdę stanie po użyciu danego typu zbiornika.

A co do argumentu "po co marnować czas", to przecież znając C nie trzeba będzie się od nowa uczyć wszystkiego przy nauce C++, a jedynie zapoznać się z różnicami.

Edycja:
Stwierdzenie, że "C jest przestarzałe" też jest niezbyt prawdziwe, co widać chociażby na przykładzie ogromnej ilości programów i bibliotek napisanych w tym języku.
Natomiast kolejnym argumentem przemawiającym za nauką C jest to, że wymaga ono od programisty większej skrupulatności, co tak ogólnie można uznać za wadę, jednak początkującemu może ułatwić wyrobienie sobie nawyku porządnego pisania programów z dużą dbałością o detal, co zawsze jest cenione.
Użytkownik Chmurek edytował ten post 23 wrzesień 2006, 20:48
Po pierwsze: C nie jest prostsze od C++, tylko C++ od C. Ma ściślejszy standard i bardziej pilnuje poprawności kodu (co eliminuje 20% błędów na starcie).

Po drugie: Filozofia OOP nie jest trudna, tylko wręcz naturalna dla ludzi. Niemniej jednak nie powinno się jej uczyć od razu, z pominięciem metody strukturalnej - gdyż najpierw trzeba się nauczyć języka, a dopiero gdy już się zna podstawowe koncepcje można przy okazji uczyć się jak go używać.
Dlatego polecam do nauki Symfonię C++ by Jurek Grębosz oraz Megatutorial Xion'a (http://xion.gamedev.pl/texts/megatutorial.xml)jako alternatywę (lub uzupełnienie).

A po trzecie, pozwolę sobie zacytować wypowiedź pewnego bardzo szanowanego Warsztatowicza:

dla mnie uzywanie C to jak pisanie w BrainFuck - tylko tylko dla jaj nie uzywa sie C++ ;)

Pozdrawiam.

//EDIT
A w ogóle tematem było jak używać C w Dev-C++.
Tworząc projekt masz wybór między językiem C a C++; dodatkowo pliki źródłowe twórz z rozszerzeniem .c a nie .cpp, i będzie działać :)
Użytkownik TeMPOraL edytował ten post 25 wrzesień 2006, 05:54
Eh, a uważałem Cię za jedną z osób z tego forum, która naprawdę zna i lubi C++. Ale gdybyś znał to raczej wiedziałbyś, że na pewno nie jest łatwiejsze od C. Widać to chociażby po programie większości uczelni - najpierw C (lub C++, ale bez klas i metaprogramowania, więc praktycznie wychodzi na to samo), a dopiero później klasy i STL.
Ale ok, miejcie takie zdanie jakie chcecie - i tak chyba sobie zrobię przerwę od tego forum, bo coś za poważnie je traktuję. ;-)

Dobrze, porozmawiajmy o tym.

Napisałem za to, że najpierw C, a później C++.
Dlaczego? Ok, powtórzę.
Właśnie dlatego, że C jest prostsze od C++, a co za tym idzie łatwiej się go nauczyć.

W czym jest prostsze? printf("ojej %d %u %s", jakis_int, jakis_uint, "cdp!"); od std::cout << "ojej " << jakis_int << ' ' << jakis_uint << ' ' << "cdp!"; ?
Bo w podstawach większych różnic nie widzę... No poza tym, że można sobie krzywdę zrobić przy próbie opanowania scanf'a...


Poza tym filozofia pisania programu w C++ jest zazwyczaj inna niż w wypadku C. Większość źródeł zaleca korzystanie z gotowych zbiorników i obiektów funkcyjnych zamiast samodzielnego alokowania pamięci.
Jest to oczywiście uzasadnione i sensowne, jednakże dobrze jest też znać podstawy, żeby wiedzieć co się naprawdę stanie po użyciu danego typu zbiornika.
Tu chyba mylisz C++ z Pseudoprogramowaniem Na Borlandach (i innych porównywalnych). Rozmawiamy o językach programowania. Nie wiem konkretnie o jakie zbiorniki (kontenery?:P) i obiekty funkcyjne Ci chodzi, niemniej operator new aż takiej dziwnej składni nie ma :P

Jeśli masz na myśli powtarzające się zalecenia dot. używania std::vector zamiast dynamicznie alokowanych tablic to tak; są one słuszne i uzasadnione, niemniej nie są to zachęty do bezmyślnego używania gotowych pojemników. Ja osobiście po osobie, której coś takiego doradzam oczekuję, że najpierw zrozumie *jak* to działa, *dlaczego* to działa i w jaki sposób jest to lepsze od ręcznego robienia tych tablic; a jak już zrozumie to zanim zacznie korzystać z vector'a taka osoba powinna umieć napisać podobny pojemnik samemu. I kropka - C++, STL, poważne programowanie, to nie Borland Buildery dla początkujących; tu wymaga się rozumienia jak działają rzeczy, których się używa.


A co do argumentu "po co marnować czas", to przecież znając C nie trzeba będzie się od nowa uczyć wszystkiego przy nauce C++, a jedynie zapoznać się z różnicami. Oraz wyzbyć się pewnych złych praktyk programistycznych. Ale akurat to nie ma takiego znaczenia, bo porządny koder pisze porządnie, niezależnie od tego czy w C czy C++...


Natomiast kolejnym argumentem przemawiającym za nauką C jest to, że wymaga ono od programisty większej skrupulatności, co tak ogólnie można uznać za wadę, jednak początkującemu może ułatwić wyrobienie sobie nawyku porządnego pisania programów z dużą dbałością o detal, co zawsze jest cenione. Ten argument tym bardziej odnosi się do C++, ponieważ tutaj kompilator jest bardziej wybredny i wiele rzeczy, które w przypadku C zostaną milcząco przepuszczone, w C++ skończą się błędem kompilacji. Duża swoboda składni, którą daje C uderza właśnie w początkujących, którzy potem szukają błędów w kodzie powodujących pad aplikacji. Ogólną zasadą dobrego programowania jest przenoszenie jak największej ilości sprawdzeń z fazy uruchomienia do fazy kompilacji - dzięki temu błąd uniemożliwi zbudowanie programu.


Widać to chociażby po programie większości uczelni - najpierw C (lub C++, ale bez klas i metaprogramowania, więc praktycznie wychodzi na to samo), a dopiero później klasy i STL. Co do uczelni, to osobiście powątpiewam w związek informatyki na niektórych z tych znanych z programowaniem ;). Niemniej C++ NIE powinno się uczyć w innej kolejności niż strukturalny->obiektowy. Najpierw trzeba poznać składnię języka, zacząć go rozumieć i wyrobić sobie pewne nawyki, a dopiero potem stopniowo wchodzić w świat obiektów. Zauważ, że tak robią dobrzy autorzy (vide Jurek Grębosz ;)) i to jest najbardziej intuicyjny sposób nauki tego języka. A do głowy wchodzi szybciej od C, bo kod w nim jest nawet troszkę przyjemniejszy wizualnie :)

Pozdrawiam.

//EDIT
A miałem iść spać, a nie pisać przemówienia... :)
Użytkownik TeMPOraL edytował ten post 25 wrzesień 2006, 21:51
TeMPOraL: ja rozumiem, że bardzo fajnie jest dowodzić własnych tez metodą "przez autorytet", ale pragnę zauważyć, iż:
1. To czy dla kogoś OOP jest naturalne, czy nie, to jest bardzo, ale to bardzo subiektywna kwestia - np. dla mnie OOP nie jest w ogóle naturalne.
2. To, czy C jest prostsze od C++ dla danej osoby, czy nie, jest równie subiektywną opinią. Dla mnie na przykład C jest prostszy niż C++, chociażby dlatego, że C++ zawiera dużo więcej elementów niż C. O wyższości scanfa nad cinem już nie będę pisał, bo pisałem wiele razy. ;)
3. Brainf*ck jest bardzo dobrym językiem, bo zmusza do myślenia.

adam9870: ucz się C. Można się go nauczyć, przy odrobinie dobrej woli, w jeden dzień. Znając tak prosty język będziesz już w stanie napisać praktycznie wszystko, no a poza tym nauka każdego innego języka (może poza funkcyjnymi ;)) powinna być już dużo łatwiejsza. Odradzam tylko używanie DevC++, jest bardzo niewygodne i stare.

Nie wiem dlaczego autor czytając kursy C++ się zniechęcił, a C go jakoś nie odstrasza :)
Nie ma sensu się uczyć C tylko dlatego, że chce się poznać podstawy programowania strukturalnego. Dlaczego? To proste język C++ to język w którym możesz porgramować liniowo, struktruralnie, obiektowo czy zorientowanie obiektowo, albo co najlepsze z tego wszystkego możesz te style łączyć bo w C++ nie ma żadnych w tym trudności (hybrydowość C++ czy jakoś tak :P )

generalnie C to jest 'przenosny asembler', jak sie chcesz nauczyc
jakiegos jezyka ktory ci sie w przyszlosci przyda to wez sie za C++
albo JAVA... :blink:


generalnie C to jest 'przenosny asembler', jak sie chcesz nauczyc
jakiegos jezyka ktory ci sie w przyszlosci przyda to wez sie za C++
albo JAVA... :blink:


C to przenośny asembler?? :eyebrow:
Ja od razu od C++ zaczełem (Symfonia C++ nowa), i tam pisze, że C++ to kontynuacja C, więc wypadałoby to też powiedzieć o C++ ;)
Oczywiście wiem, że to przenośnia, ale na jakiej podstawie tak można te języki porównywać?

C to jest po prostu podzbiór C++. :P C++ dziedziczy wszystkie dobre cechy języka C i pozbywa się kilku złych :)
Pozdrawiam.

Z tego co wyczytałem to autor chce się po prostu nauczyć kodować w C, bo uważa że warto jest najpierw poznać podstawy, potem poznać rzeczy nowsze. Mniejsza z tym, że w tym przypadku jest mało logiki, ale udawadnianie tego trwało by dłużej niż to, jeśli autor sam się do swego błędu przekona. Dlatego ja proponuję zajrzeć do następujących książek:

1. "Języki C i C++. Twój pierwszy program." - autor Alan R. Neibauer, wyd. Help
(to jeśli chodzi o wprowadzenie do C)
2. "Symfonia C++ Standard" - autor Jerzy Grębosz, wyd. Edition 2000.
(to jeśli chodzi o C++)

(sądzę że obie książki dostaniesz gdzieś w czytelni na jakiejś uczelni wyższej)

Pozdro
Użytkownik dowhilebegin edytował ten post 08 październik 2006, 02:50
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •