[C++] Hello world

Awatar użytkownika
Poszukujaca
Użytkownik
Użytkownik
Posty: 2775
Rejestracja: 21 maja 2012, o 23:32
Płeć: Kobieta
Podziękował: 1019 razy
Pomógł: 166 razy

[C++] Hello world

Post autor: Poszukujaca »

Dopiero zaczynam przygodę z programowaniem w języku c++. Zamierzam uczyć się z książki ,,Symfonia c++".

Dziś próbuję napisać pierwszy program, który będzie tylko wyświetlał konkretny tekst na ekranie. Posługuję się ,,Dev c++". Tworzę plik źródłowy i wpisuję:

Kod: Zaznacz cały

#include<iostream.h>
main()
{
	cout<<"tekst";
}
Program nie chce się skompilować. Proszę mi powiedzieć, co jest źle.
Ostatnio zmieniony 30 mar 2014, o 20:58 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Adwin_
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 18 maja 2013, o 11:11
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 7 razy
Pomógł: 3 razy

[C++] Hello world

Post autor: Adwin_ »

Odpowiedź + poprawny kod: .
Upewnij się, że masz najnowszą wersję Symfonii.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Hello world

Post autor: Althorion »

O tym, co jest źle, powiedział Ci już kompilator, wystarczyło go posłuchać. Ja Ci natomiast powiem, dlaczego jest źle.

A jest źle dlatego, że korzystasz z książki, która została wydana przed standaryzacją C++. Tak można było pisać dawno temu (przez 1998 rokiem), kiedy C++ się dopiero wykluwał i każdy do niego podchodził, jak chciał. A potem zdecydowano się na jedno, wspólne rozwiązanie — i tak na przykład plik nagłówkowy ze strumieniami wejścia-wyjścia to teraz iostream, obiekty w niej zawarte są w przestrzeni nazw std, zaś funkcja main() musi być typu int (więc i musi zwrócić wartość).
Musisz albo postarać się o nowszą książkę, albo bardzo stary kompilator.

A jak już o kompilatorze mowa — znajdź sobie coś bardziej współczesnego od Dev C++. Nawet jeśli miałby to być Microsoft Visual Studio (wersja Express jest darmowa). Chociaż najlepiej byłoby skorzystać z g++ dostępnego na Windowsie na przykład w mingw i jakiegoś IDE, np. Eclipse'a.
Awatar użytkownika
Poszukujaca
Użytkownik
Użytkownik
Posty: 2775
Rejestracja: 21 maja 2012, o 23:32
Płeć: Kobieta
Podziękował: 1019 razy
Pomógł: 166 razy

[C++] Hello world

Post autor: Poszukujaca »

Dziękuję za precyzyjne wyjaśnienie.
Mam książkę wydaną w 1999 roku, więc to już wszystko wyjaśnia.

A jak mogę ten program napisać bez użycia funkcji?
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Hello world

Post autor: Althorion »

Funkcja int main(...) musi być w każdym programie napisanym w C++. Będzie ona wykonana zaraz po inicjalizacji zmiennych globalnych, a jej zakończenie wyłączy program.
Awatar użytkownika
Poszukujaca
Użytkownik
Użytkownik
Posty: 2775
Rejestracja: 21 maja 2012, o 23:32
Płeć: Kobieta
Podziękował: 1019 razy
Pomógł: 166 razy

[C++] Hello world

Post autor: Poszukujaca »

Na pewno? Jeszcze nie bardzo rozumeim czym jest funkcja..
My na zajęciach piszemy na razie tylko programy bez funkcji, np rozwiązywanie równania kwadratowego piszemy tak:

Kod: Zaznacz cały

#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{int a,b,c;// int oznacza liczby całkowite
printf ("Podaj współczynniki a,b,c:
"), //przejście do nowej linii
scanf("%d",&a),
scanf("%d%d",&b,&c),
scanf("%dx^2+%dx+%d=0", a,b,c);
if(a!=0) 
{ int delta=b*b-4*a*c;
if(delta>=0)
  {
            if(delta==0)
            {

            printf("
 x0=%f
", (float) (-b)/(2*a));
            }
   else
   {
       printf("
 x1=%f
" "
 x2=%f
", (float)(-b-sqrt(delta))/(2*a), (float) (-b+sqrt(delta))/(2*a));
   }    
}   
else
  printf("Brak pierwiastków");         
            
   
}

else //a=0
  { 
          if(b=0)
          {
                 if(c=0)
                 {
                        printf("Nieskończenie wiele rozwiązań");
                 }
                 else 
                 {
                      printf("Brak rozwiązań");
                 }
  }
          


getch();
}
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Hello world

Post autor: Althorion »

A teraz przyjrzyj się czwartej linijce Twojego programu. Po czym zapytaj się prowadzącego przedmiot, dlaczego prowadzi programowanie wg własnego widzimisię, a nie któregokolwiek ze standardów, których dla C++ powstały cztery: ISO/IEC 14882:1998, ISO/IEC 14882:2003, ISO/IEC TR 19768:2007, ISO/IEC 14882:2011 (liczba po dwukropku oznacza jednocześnie rok przyjęcia standardu).

Bo ja jeszcze umiem pojąć, dlaczego nie wpaja się uczniom najnowszej możliwej wiedzy. Ale tego, dlaczego uczy się informacji, które od szesnastu lat są nieprawdziwe, już zrozumieć ani wytłumaczyć nie potrafię. Szczególnie że w tym przypadku uniemożliwia im to samodzielną naukę, wszędzie bowiem znajdziesz już w miarę aktualne informacje. To tak, jakby na geografii uczyli Cię o Czechosłowacji.

Ponadto uważam, chociaż to już jest bardziej moja prywatna opinia niż Wiedza Objawiona, że używanie conio.h to zbrodnia — jest to biblioteka nieustandaryzowana i nieprzenośna. Jeszcze żeby jej użycie miało sens, ale nie… Ten sam efekt praktyczny (oczekiwanie na przyjęcie jakiegokolwiek wejścia) da nam funkcja cin.get() z biblioteki standardowej.
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10218
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2361 razy

[C++] Hello world

Post autor: Dasio11 »

A jeśli ktoś chce działanie typu: "press any key to continue" ?
MadJack
Użytkownik
Użytkownik
Posty: 270
Rejestracja: 21 lis 2010, o 22:23
Płeć: Mężczyzna
Podziękował: 5 razy
Pomógł: 35 razy

[C++] Hello world

Post autor: MadJack »

W sumie nie dziwię się ludziom, że nie lubią programowania, jeśli jest ono tak uczone. Więcej z tego szkody niż pożytku.
Wg mnie na początek Eclipse czy Visual Studio to trochę za duże środowiska, mnóstwo klikania i plików, które na początku nic nie mówią. Z drugiej strony Dev jest przestarzały, ekstremalnie niewygodny i nie mam pojęcia, dlaczego tylu prowadzących poleca w nim pisać na początku. Osobiście uczyłem się w Code::Blocks i polecam: jest bardzo wygodny, czytelny i minimalistyczny na tyle, że jest dobry do nauki (w sumie żałuję, że nie ma zbyt dobrego wspierania większych projektów, bo przyjemniej mi się w nim pisze niż w Eclipse, NetBeans czy Visual Studio).
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Hello world

Post autor: Althorion »

Dasio11 pisze:A jeśli ktoś chce działanie typu: "press any key to continue" ?
I w ogóle nie interesuje go przenośność? To na Windowsie można wywołać polecenie pause, które da dokładnie taki wynik — do tego celu wykorzystując funkcję system z biblioteki standardowej. W przeciwnym wypadku wydrukować na konsoli ww. tekst i poczekać na naciśnięcie czegokolwiek, co jest jak najbardziej wykonywalne przy użyciu biblioteki standardowej.
Awatar użytkownika
Poszukujaca
Użytkownik
Użytkownik
Posty: 2775
Rejestracja: 21 maja 2012, o 23:32
Płeć: Kobieta
Podziękował: 1019 razy
Pomógł: 166 razy

[C++] Hello world

Post autor: Poszukujaca »

Powiem szczerze, że przeraża mnie to wszystko co na razie tyczy się programowania.. Jestem zielona i jeśli sama nie wezmę sprawy w swoje ręce - nie zacznę uczyć się z naprawdę rzetelnych i dobrych źródeł, to na moich zajęciach niczego się nie nauczę..

Myślałam tez o jakimś kursie internetowym. Słyszałam, że są takie. Ktoś może coś polecić? Cokolwiek?
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10218
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2361 razy

[C++] Hello world

Post autor: Dasio11 »

Althorion pisze:I w ogóle nie interesuje go przenośność? To na Windowsie można wywołać polecenie pause, które da dokładnie taki wynik — do tego celu wykorzystując funkcję system z biblioteki standardowej. W przeciwnym wypadku wydrukować na konsoli ww. tekst i poczekać na naciśnięcie czegokolwiek, co jest jak najbardziej wykonywalne przy użyciu biblioteki standardowej.
Przenośność go bardzo interesuje, ale drukowanie tekstu do konsoli - nie. Program ma poczekać na naciśnięcie dowolnego przycisku, nie robiąc nic poza tym. Przyznam, że od dawna interesuje mnie taka możliwość, ale nie znam żadnej funkcji poza getch(), która daje ten efekt. W szczególności, wywołanie cin.get() powoduje, że można wprowadzić wiele znaków, które są drukowane na ekranie, i jeszcze trzeba potwierdzać enterem.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[C++] Hello world

Post autor: Althorion »

Jeśli piszesz program okienkowy, to użyta biblioteka graficzna zapewne będzie miała taką funkcję. Dla programów konsolowych pisanych przy użyciu ncurses to też nie problem.

Znacznie gorzej jak chcemy programować bez tego. Samo

Kod: Zaznacz cały

http://c-faq.com/osdep/cbreak.html
mówi, po wylistowaniu kilku proponowanych rozwiązań, że „under other operating systems, you're on your own”. Ogólnie rzecz jest nietrywialna — trzeba jakoś przekonać system operacyjny, żeby nam łaskawie pozwolił się dobrać do klawiatury w sposób bezpośredni, gdyż normalnie program dostanie z terminala wejście dopiero po pacnięciu Entera. Ncurses obchodzi to przejmując terminal, ale jeśli nie piszesz aplikacji terminalowej, to tej wygody mieć nie będziesz. Czyli wracamy na początek, do wybrania sobie funkcji z biblioteki graficznej, z której korzystasz.
Bo jeśli nie, to nagle musisz się dowiadywać, jak możesz przejąć klawiaturę dla swojego programu. A to nigdy nie jest przenośne.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Hello world

Post autor: kalwi »

Poszukujaca pisze: Myślałam tez o jakimś kursie internetowym. Słyszałam, że są takie. Ktoś może coś polecić? Cokolwiek?
Myślę, że ten kurs jest bardzo konkretny:

Kod: Zaznacz cały

https://pl.wikibooks.org/wiki/C++


A na uzupełnienie informacji:



Są one dość aktualne, do nauki na początek powinny starczyć
Awatar użytkownika
Poszukujaca
Użytkownik
Użytkownik
Posty: 2775
Rejestracja: 21 maja 2012, o 23:32
Płeć: Kobieta
Podziękował: 1019 razy
Pomógł: 166 razy

[C++] Hello world

Post autor: Poszukujaca »

Dziękuje

Tak się zastanawiam czy język, w którym piszemy to właściwie c++ czy c. Bo jeśli używam bibliotek

Kod: Zaznacz cały

#include<studio.h>
#include<conio.h>
to chyba jest to język c.
ODPOWIEDZ