11 CLA 2 Data types, their operations and basics of flow control

FLOATING POINT

mozna zapisywac

.4  = 0.4

4.  = 4.0

scientific notation

3E8 - 3* 10^8

the exponent (the value after the “E”)
      has to be an integer.
 the base (the value in front of the “E”)
      may or may not be an integer.

OPERATORY

dzielenie przez 0 błąd kompilacji
dzielenie przez zmienna ktora zawiera 0, kompilator przepusci

unary - jednoargumentowy np  j = - i
binary - dwuargumentowy
ternary - trójargumentowy


% - reszta z dzielenia

1%2 - wynik 1 nie 0 !


jeśli taki sam priorytet, binding direction ma znaczenie

2*3%5   tu najpierw mnożenie czyli 6%5  = 1 i 1 reszty

nawiasy parentheses zmieniają kolejność


a++;   rownoznaczne z a=a+1;

The “++” is called the increment operator.
The “--” is called the decrement operator.

Variable++ post-increment operator
++Variable pre-increment operator
Variable-- post-decrement operator
--Variable pre-decrement operator

i=1;
j=++i;    //oba będą miały wartość 2


i = 4;
j = 2 * i++;         /j=8 (2*4) a wartość i zwiększa się do 5
i = 2 * --j; /najpierw zmniejszamy j do 7 mnożymy przez 2 - wynik 14 zapisany w i


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 +=   -+   *=   /=   %=


skróty:
i*=2;     i=i*2;

j-=(a+b+c);      j=j-(a+b+c);


Character type

We can define a “word” as a string of characters

pojedynczy znak

char Character='a';       znak, jednak jak przypiszemy do int to wpisze kod asci
ewentualnie
Charakter=65;    czyli 10 kod asci

Literały:

Character: this is not a literal; it’s probably a variable name; when you look at it, you cannot guess what value is currently assigned to that variable;
'A': this is a literal; when you look at it you can immediately guess its value; you even know that it’s a literal of the char type;
100: this is a literal, too (of the int type);
100.0: this is another literal, this time of a floating point type;
i + 100: this is a combination of a variable and a literal joined together with the + operator; this structure is called an expression.


\    escape character pozwala wpisać \   np Character='\\';

\n - nowa linia
\r  - powrot do poczatku lini
\0 - null

po \  mozna wpisywać wartości osemkowe 0-7 i będą zamieniane na dziesietne asci
np:
Character='\47';   47 to 39 dziesiętnie a kod asci tej liczby  to \
można wymusić notację 16tkową
Character='\x27';

co ważne można:

char Char;

Char = 'A';

Char += 32;   zamieni na znak o kodzie asci wiekszym o 32

Char -= ' ';   zmniejszy kod asci o wartość kodu asci spacji



TYPY DANYCH I KONTROLA PRZEPŁYWU


= is an assignment operator
== is the question “are these values equal?”
== is a binary operator with left-side binding. It needs two arguments and checks if they’re equal.

== ma niski priorytet więc a==2*b jest rownoznaczne z  a==(2*b)

!=   - exclamation equal, również binarny


Przykład:
int Answer, Value1, Value2;
Answer = Value1 >= Value2;     jeśli prawda przypisze 1, jeśli nie 0;


Przykład warunku:

if(SheepCounter >= 120){
  MakeABed();
  TakeAShower();
  SleepAndDream();
 }



INPUT OUTPUT


puts - pozwala wyswietlac tylko stringi, nie uda mu sie wyswietlic zmiennych, dlatego uzywa sie
printf("to jest tekst");

ze zmienna, korzstamy ze specifier  %d

printf("zmienna a wynosi: %d",a);

%d - decimal (%i)
%x - hexadecimal
%o - octal
%c  -character
%f  - floating
%%  -%

Przykład

i = 31;
printf(”%d %x %o”,i,i,i);

wyswietli w 3 postaciach:
31 1F 37                                    /ale uwaga nie dotyczy jeśli do zmiennej int damy %f !!!

co ciekawe
char c="a";
printf("%d",c);                         /wyswietli asci znaku a


jeśli więcej specifier niż zmiennych  błąd, odwrotnie też

znak konca lini \n

printf(”This is phrase #1.\nThis is phrase #2.\n”);


INPUT

scanf("%d",&zmienna);              /&wskazuje na adres (dla stringow  %s  bez &)

pierwiastkowanie:
#include <math.h>

float value,squareroot;
squareroot = sqrt(value);


ZAD:

c=('z'-'a');   wynik 25 (tak samo duże litery),
c=('a'-'A');  wynik 32, asci spacji to 32 więc 'a'  - ' spacja  '  da wynik   'A'