Programming

Taka chwila dla debila ;]


#1 2008-10-01 13:37:51

Will

Administrator

Zarejestrowany: 2008-09-30
Posty: 12
Punktów :   

Pierwszy program

A więc tak najpierw trochę c++ aby poznać podstawy kiedy dojdzie coś z GUI użyje się C#.
Na początek jeden łopatologiczny program.

Kod:

//////////////////////////////////
 #include <iostream>


 using namespace std; 

 int main(void)
 {
 unsigned int uiVariable1 = 10, uiVariable2;
 cout << "Wprowadz pierwsza liczbe calkowita : ";
 cin >> uiVariable1;
 cout << "Wprowadz druga liczbe calkowita : ";
 cin >> uiVariable2;
 if(uiVariable1 < uiVariable2)
 {
 cout << "Pierwsza liczba jest mniejsza od drugiej" << endl;
 } else if(uiVariable1 > uiVariable2)
 {
 cout << "Pierwsza liczba jest wieksza od drugiej" << endl;
 } else cout << "Pierwsza liczba jest rowna drugiej" << endl;
 unsigned int i = 0;
 for(i = 0; i < 5; i++)
 {
 uiVariable1 = uiVariable1 + 1;
 if((uiVariable1 % 2) == 0) cout <<
 "Liczba jest parzysta i wynosi : " << uiVariable1 << endl;
 }
 while(i > 0)
 {
 cout << i << " ";
 i--;
 }
 cout << endl;
 do
 {
 cout << i << " ";
 i++;
 } while(i < 5);
 cout << endl;
 
 cout << "Wprowadz liczbe calkowita : ";
 cin >> uiVariable1;
 switch(uiVariable1)
{
 case 5:
 cout << "Liczba jest rowna 5" << endl;
 break;
 default :
 cout << "Liczba jest rozna od 5" << endl;
 }

 system("PAUSE");
 return 0;
 }

////////////////////////////////////


////////////////////////////////////

Nie wiem czy trafiłem dobrze z poziomem ale mam nadzieje, że tak ;]
To teraz, krótki opis każdego elementu.
#include<iostream>
Instrukcja ta włącza do naszego programu bibliotekę standardową. Tzn. Aby użyć pewnych elementów takich jak wczytywanie danych z klawiatury, potrzebujemy użyć specialnych obiektów, które znajdują się w danym pliku. W zasadzie zawartość pliku iostream.h jest po prostu wklejana do naszego programu.
/*****************************************************************************/
int main() {  }
Jest to główna funkcja programu podczas działania aplikacji wykona się tylko to znajduje się między nawiasami funkcji main. {} są odpowiednikami begin i end z płaskala.Funkcja ta musi nazywać się main nie ma innej możliwości.
/********************************************************************************/
unsigned int uiVariable1 = 10, uiVariable2;
Jest to po prostu deklaracja zmiennych o typach będzie na końcu ;]. W każdym razie jak zauważycie pierwszej zmiennej przypisano wartość 10 a drugiej nic. Kompilator automatycznie za nas przypisze jej wartość zero, jeśli my sami nie nadamy zmiennej wartości. Dla pascalowców: = jest znakiem przypisania a znak == porównania. Każda linia instrukcji musi kończyć się ";";
/*-------------------------------------------------------------------------------------------------------------*/
cout<<"Wprowadz pierwsza liczbe calkowita";
Tutaj widzimy wykorzystanie obiektu biblioteki standardowej. Używając obiektu cout razem z operatorem <<
wrzucamy dany tekst do strumienia(czyli po prostu wypisujemy na ekran). Każdy tekst musi być ujęty w cudzysłówowia.
/*----------------------------------------------------------------------------------------------------------*/
cin>>uiVariable1;
Tutaj mamy kolejny obiekt biblioteki standardowej. Pozwala on na wczytanie danych z klawiatury.
Trzeba uważać aby podawać dane takiego typu jakiego używamy w operacji wczytania(w tym wypadku po prostu liczba, uiVariable1 jest  typu unsigned int).
/*------------------------------------------------------------------------------------------------------------*/
13: if(uiVariable1 < uiVariable2)
14: {
15: cout << "Pierwsza liczba jest mniejsza od drugiej" << endl;
16: } else if(uiVariable1 > uiVariable2)
17: {
18: cout << "Pierwsza liczba jest wieksza od drugiej" << endl;
19: } else cout << "Pierwsza liczba jest rowna drugiej" << endl;

Jest to zwykły blok if. Jeżeli wartość wyrażenia w nawiasach po if jest true wykona się blok kodu zawarty między klamrami.

cout<<"tekst"<<endl;
Obiektu cout można używać kaskadowo. Czyli zamiast pisać cout<<"pierwszy"; cout<<"drugi";
Piszemy po prostu cout<<"jeden"<<"dwa";
Tajemniczy element endl także jest elementem biblioteki standardowej powoduje On przejście do następnej lini.
Instrukcja else if oznacza dość jednoznacznie, jeżeli if(Var1<Var2) jest nieprawdziwe program przechodzi do instrukcji else if gdzie znów sprawdzany jest warunek, jeżeli On również jest nieprawdziwy program wykona instrukcje zawarte w else bez sprawdzania warunków.  Ktoś może zapytać dlaczego w else nie ma klamer. Odpowiedź jest bardzo prosta, kiedy instrukcje są jednolinijkowe nie trzeba używać klamer.
np: if(2>1)cout<<"cos";
lub
if(2>1)
cout<<"cos";
Program uzna, że instrukcja kończy się w końcu następnej instrukcji zakończonej średnikiem.
/*----------------------------------------------------------------------------------------------------------------------*/
unsigned int i=0;
for(i=0;i<5;i++)
{
if((uiVariable1 % 2) == 0) cout <<
"Liczba jest parzysta i wynosi : " << uiVariable1 << endl;
}

Jest to zwykła pętla for(//tutaj ustalmy poczatkową wartosc licznika ; //tutaj sprawdzany jest warunek ; //instrukcje jakie mają być wykonane po każdej pętli w naszym przypadku zwiększenie licznika o 1)
Pętla zakończy swoją prace kiedy warunek i<5 wyniesie false.
if((uiVariable1 % 2) == 0)
operator % to po prostu dzielenie z reszta.
/*------------------------------------------------------------------------------------------------------------------------*/

While(i>0)
{
i--;
}

Tego chyba  nie trzeba wyjaśniać.
/*-----------------------------------------------------------------------------------------------------------------------*/
do
{
i++;
}
while(i<5)

To samo tylko pętla wykona się przynajmniej raz nawet jeśli warunek jest nie sprawdzony.
/*-------------------------------------------------------------------------------------------------------------------------*/

43: switch(uiVariable1)
44: {
45: case 5:
46: cout << "Liczba jest rowna 5" << endl;
47: break;
48: default :
49: cout << "Liczba jest rozna od 5" << endl;
50: }

Ten sam efekt można uzyskać używając po prostu if,else i else if.
switch(var1)
czyli co ma zostać poddane sprawdzaniu
45: case 5:
46: cout << "Liczba jest rowna 5" << endl;
47: break;

case 5:
Czyli w przypadku gdy element sprawdzany ma wartość 5 wykona się instrukcja pod case.
break;
Daje to znak programowi, że ma opuścić dany zasięg czyli w tym wypadku blok switch.
Tutaj także w wypadku wielolinijkowych linii kodu dajemy klamry.
case 5:
{
cout << "Liczba jest rowna 5" << endl;

cout<<"cos jeszcze";
}
break;

W przypadku gdy switch nie odnajdzie pasującego case przechodzi i wykonuje blok default.
/*--------------------------------------------------------------------------------------------------------*/
System("pause");

zatrzymuje prace programu gdyby nie to program wykonałby prace i natychmiast się wyłączył a tak poczeka na naciśnięcie klawisza.

/*--------------------------------------------------------------------------------------------------------*/
return 0;
Zwraca liczbę informującą o poprawnym zakończeniu programu.
/*----------------------------------------------------------------------------------------------------------*/

Tajemnicze using namespace std; Bez tego do każdego obiektu z biblioteki standardowej musielibyśmy się odnosić std::cout,std::endl,std::cin używanie tego jest dobre kiedy mamy konflikt nazw a używając std:: jednoznacznie oznaczamy o który obiekt nam chodzi. Najczęściej dołączamy instrukcje using... aby skrócić i ułatwić pisanie.

Na początek to tyle. Chciałbym aby każdy poćwiczył używanie pętli,if'ow,operacje na danych. A najlepiej jakby swoje wypociny wkleił tutaj. W razie problemów pytać.


A Teraz mały dodatek  o typach:
wartości i liczbą okupowanych bajtów pamięci.
Typ               Bajtów           signed                                                        unsigned
char              1              -128 … 127                                                      0 ... 255
short             2              -32 768 ... 32 767                                            0 ... 65 535
int                 4              -2147483648 ... 2 147 483 647                      0 ... 4 294 967 295
long              4               -2147483648 ... 2 147 483 647                      0 ... 4 294 967 295
//float i double nie maja wersji unsigned!
float              4               -3.4*10-38 ... 3.4*1038 (7 cyfr)
double           8               -1.7*10-308 ... 1.7*10308 (15 cyfr)

Offline

 

#2 2008-10-02 19:51:40

MaXo

Nowy użytkownik

Zarejestrowany: 2008-09-30
Posty: 3
Punktów :   

Re: Pierwszy program

Kod:

# include <iostream>
using namespace std;
int main()
{
    unsigned int a,b,x;
    string c;
cout << "Podaj pierwsza liczbe calkowita:";
cin >> a;
cout << "Podaj druga liczbe calkowita nabie:";
cin >> b;
cout << "Podaj rodzaj dzialania d/o/m/dz :";
cin >> c;
if (c=="d")
{
x=a+b;
cout << "Po dodaniu liczb otrzymamy wynik:" <<endl;
cout << x <<endl;
}else if (c=="o")
{
x=a-b;
cout << "Po odejmowaniu otrzymamy wynik:";
cout << x;
}
else if (c=="m")
{
x=a*b;
          cout << "Po mnozeniu otrzymamy wynik:";
cout << x;
} else if (c=="dz")
{
if (b==0)
cout << "Pamietaj cholero nie dziel przez zero";
else
{
x=a/b;
          cout << "Po dzieleniu otrzymamy wynik:";
cout << x << endl;
cout << endl;
}
}

system("PAUSE");
return 0;
}

Ot taki syf nawet nie zapętlony ;d Było trochę problemów z  (c=="m") ... nie wiedzialem jaką zmienną musi być c i ze powinno być == a nie = .

Ostatnio edytowany przez MaXo (2008-10-02 20:10:29)

Offline

 

#3 2008-10-02 20:15:43

Karolh2

Nowy użytkownik

Zarejestrowany: 2008-10-01
Posty: 2
Punktów :   

Re: Pierwszy program

jak dla mnie to dwa błędy... nie można używać liczb ujemnych, oraz wynik dzielenia zawsze będzie zaokrąglony.

zrób coś z pętęlką... gdzieś mam zadania co to zenek kiedyś dawał.

edit:
znalazłem

dobre zadanka by poćwiczyć składnie
link http://serwerk1.yoyo.pl/liczby.pdf

Ostatnio edytowany przez Karolh2 (2008-10-02 20:21:46)


Pamiętaj - dziewczyna musi być ładna, inteligentych to my mamy kolegów.

naab plx die
Kobiety to wielkie podstępne zło.

Offline

 

#4 2008-10-02 21:05:29

Will

Administrator

Zarejestrowany: 2008-09-30
Posty: 12
Punktów :   

Re: Pierwszy program

No bardzo ładnie ;] To może teraz niech pozwala na wykonywanie działań na otrzymanych wynikach?
Czyli gdy wykona działanie 1*20 nastepnie pyta uzytkownika czy wyzerowac dane czy pracowac z otrzymanymi i w zaleznosci od wyboru wykonac odpowiednie dzialanie.
Krótki opis:
cin>>liczba;
cin>>liczba2;
cin>>dzialanie;
oblicza....
pyta:Czy zerowac dane?
if(zerowac dane)
{
//znow czyta to co na poczatku czyli 2 liczby + dzialanie
}
else//pracowac z otrzymana liczba
{
//wczytuje tylko liczbe i dzialanie a potem oblicza i powtarza schemat
}

Jeśli chodzi o wynik ujemny:
Deklarując liczbe z unsigned pozwalamy na operowanie tylko na liczbach nieujemnych ale tym samym zwiekszamy maksymalny zakres. Coś za coś ;]
Jeśli chcesz operacować na liczbach ujemnych i dodatnich wystarczy ze usuniesz unsigned i dasz signed(W praktyce kazdemu typowi domyslnie sam kompilator daje signed wiec wystaczy napisac int). Jeśli chodzi o zaookrąglone dzielnie.
Chcąc zachować dokładność możesz uzyc typu double lub float.
//deklaracja
float liczba=13.34;
flaot liczba2;
double liczba3=23.34;

I teraz uwaga liczby float i double nie moga byc poprzedzane slowkiem unsigned zawsze domyslnie sa signed i w ich przypadku nie mozna tego zmieniac.
Tak więc pamiętać:
unsigned int l; //tylko liczby dodatnie
signed int k;//w obu przypadkach uzyskujemy to samo operowanie na liczbach dodatnich i ujemnych
int n;



//////////
float liczba;
double liczba2;//w tych przypadkach nie uzywamy slowek unsigned,signed

Offline

 

#5 2008-10-02 23:31:23

Stoodzin

Nowy użytkownik

Zarejestrowany: 2008-09-30
Posty: 1
Punktów :   

Re: Pierwszy program

tak więc wygląda mój program:

#include <iostream>
using namespace std;
int main()
{
    int nLiczba1, nLiczba2;
    cout << "podaj jakas liczbe" << endl;
    cin >> nLiczba1;
   
   
    cout << "podaj druga liczbe:" << endl;
    cin >> nLiczba2;
   
    if (nLiczba1 > nLiczba2)
    {
                 cout << "liczba" << nLiczba1 << "jest wieksza." << endl;
               
                 }
    if (nLiczba1 < nLiczba2)
    {
                 cout << "liczba " << nLiczba2 << "jest wieksza." << endl;
                 }
   int nOpcja;
   cout << "Wybierz dzialanie:" << endl;
   cout << "1- dodawanie" << endl;
   cout << "2- odejmowanie" << endl;
   cout << "3- mnozenie" << endl;
   cout << "4- dzielenie" << endl;
   cout << "0- spadaj" << endl;
   cin >> nOpcja;
   
   switch (nOpcja)
   {
          case 1: cout << nLiczba1 << " + " << nLiczba2 << " = " << nLiczba1 + nLiczba2 << endl;break;
          case 2: cout << nLiczba1 << " + " << nLiczba2 << " = " << nLiczba1 - nLiczba2 << endl;break;
          case 3: cout << nLiczba1 << " * " << nLiczba2 << " = " << nLiczba1 * nLiczba2 << endl;break; 
          case 4: if (nLiczba2==0.0)
                  {
                  cout << "dzielnik nie moze byc 0!" << endl;break;
                  }
                  else
                  {
                  cout << nLiczba1 << " / " << nLiczba2 << " = " << nLiczba1 / nLiczba2 << endl;break;
                  }
          case 0: cout << "Wypchaj sie!"<< endl;break;
 
   }
   
system("PAUSE");
return 0;
}


w sumie jeszcze można było pokombinowac z jakąś pentelką albo czymś ale późna godzina i łeb staje się mniej wydajny xD
nic skomplikowanego, ale jest i działa xD

Ostatnio edytowany przez Stoodzin (2008-10-02 23:33:08)

Offline

 

#6 2008-10-03 12:47:13

Will

Administrator

Zarejestrowany: 2008-09-30
Posty: 12
Punktów :   

Re: Pierwszy program

No i da się. To teraz możesz pokombinować właśnie z "jakąś pętelką" lub z bardziej skomplikowanymi działaniami.

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi

[ Generated in 0.079 seconds, 8 queries executed ]


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.hala69.pun.pl www.dod-wow.pun.pl www.coldara.pun.pl www.350z.pun.pl www.3pk.pun.pl