3 CPA 1 Introduction to computer programming

Ogólna struktura podstawowego programu

#include <iostream>
using namespace std;
int main(void) {
 cout << "It's me, your first program.";
 return 0;
}


numery ósemkowe octal zaczynają się od 0  np.0123=83,   018 - niepoprawne bo zakres 0-7

szestnastkowe od 0x       np. 0x123=291       zapis X nie jest poprawny

zmienne muszą zaczynać się literą a nie cyfrą, rozróżnia duże i małe litery, możesz  int Int;

Floating numbers - używaj kropki nie przecinka
możesz napisac zamiast 0.4 ->  .4  albo zamiast 4.0  -> 4.    kropka robi FLOAT  całk. robi INT


Notacja naukowa:

3x10^8  ->  3E8     8 wykładnik potęgi (EXPONENT)  3 to podstawa (BASE)


int i=10/4;            -> 2
float x=10.0/4.0;   ->2.5


Int można na float. Jeśli z float 100.25 na int dostaniemy 100.

Zakres 32b int to 4 mld. Jeśli włożymy więcej to wynik zależy od kompilatora(niezdefiniowane)

Dzielenie przez 0 = błąd kompilacji, chyba, że dzielisz przez x które ma zero, wtedy execute er.


operator - może być jednoargumentowy (unary) jeśli stawiamy go do zmiany znaku  -x


operator % - reszta z dzielenia (modulo) zawsze na całkowitej, nie można 5%0 bo dziel. przez 0 to undefined behaviour


większośc operatorów left-sided binding
2+3+5

Kolejnośc operatorów:
+- jednoargumentowe                 */%                  +-dwuargumentowe
oczywiście użycie nawiasów zmieni kolejność, w nawiasach pierwsze (parentheses)


Inkrementacja,dekrementacja:
a++    -> o jeden
a--      ->minus jeden

Variable++       post-increment operator
++Variable       pre-increment operator
Variable--       post-decrement operator
--Variable       pre-decrement operator
dlatego dla i=1
j=i++    j też=1
j=++i    j=2


skróty:
i=i*2       ->   i*=2;                             i=i+2  *  j       ->  i+=2  *  j;
a=a+10    ->  a+=10;                           j=j-(bla bla)   -> j-=(bla bla);


char Character='A';   albo  Charakter=65;   (w kodzie asci)  to nie literał, to zmienna
(A,100,100.0  to literały)

\   -> escape character, pozwala dać   Charcter='\'';
\n   -> nowa linia;
\r   -> powrót do nowej linii;
\a   -> alarm;
\0   -> null    -w ósemkowym, dlatego \47   - da decymalnie 39 a w char wypisze to co asci 39 czyli\
można też \xAA  - czyli szestnastkowo

Ponieważ char przyjmuje liczby (asci) można do litery "A" dodać 32 i da nam znak jaki znajduje się pod ASCI większym od A o 32
Char="A"
Char+=32
ale możemy i odjąc
Char-=" ";


=   -> operator przypisania
==  -> operator porównania  true/false   niski priorytet, wykonywany na końcu
!=   -> różności exclamation equal
>  większości
>=  większy i równy

Kolejność operacji:

0)lista[], wywołanie metody (), -> (wskaźnik->pole)
1) rzutowanie (typ)wartość, jednoargumentowe jak ++  --  +  negacje ~ !, new,&,sizeof
2) *   /   %
3) dodawanie i odejmowanie
4)przesunięcia bitowe <<  >>
5) porównania < <= > >=
6) porównania ==   !=
7) logika bitowa & ^ |
8) logika logiczna && ||
9) instrukcja warunkowa ? :
10) = przypisanie, i jego odmiany +=   -+   *=   /=   %=

------------------------------------------

<<   an insertion operator , wkłada string

cout<<a*4;    dozwolone mnożenie

manipulator oct    hex   dec   / albo setbase(16)
int liczba=255
cout<<"Liczba 16tkowo"<<hex<<liczba;   raz uruchomiony hez na zmiennej liczba-działa
więc w następnej lini jeśli chcemy w dziesiętnym to <<dec<liczba;

rzutowanie:
char Char = 'X';
int Int = Char;
cout<<Char<<" "<<(int)Char<<" "<<Int<<" "<<(char)Int;
da wynik:
X 88 88 X

nowa linia:
alno \n w tekście albo <<endl;

float x = 2.5, y = 0.0000000025;
cout << fixed << x << " " << y << endl;                    //6 zer po przecinku
cout << scientific << x << " " << y << endl;              //pełen zapis  z e

Wpisywanie
cin>>

#include <cmath>
i możemy korzystać np z :
pierwiastek= sqrtf(value);

ZADANIA
Zad1:
ile wynosi k:     int k = 1 % 2 + 4 % 2;

ODP: k=1  bo
1%2  to  1  nie  0


Zad2:
What is the output of the following snippet if a digit 5 followed by Enter is entered through the keyboard?

    int i = 3, j = ++i, k = ++i;
    cin >> i;
    cout << k + i << j - i << i * i;

ODP: 10-125


Zad3:
What is the value of the i variable?

    float x = 1.0 / 4.0;
    int i = x;
 


x=0.25;
i=0;

Zad4
co to za liczba
X10 - niepoprawna bo 16tkowe 0x10
018 - niepoprawne bo ósemkowe zakres cyfr 0-7