Informatyka Wy-02 Tablice, wskaźniki, warunki i pętle mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 06.03.2019
Strona kursu http://w12.pwr.wroc.pl/inf/
Konspekt 1 if-else 2 do-while 3 Wskaźniki 4 Tablice 5 Arytmetyka wskaźników
Konspekt 1 if-else Instrukcja warunkowa if if-else Zagnieżdżone if a? b : c; 2 do-while
if i f ( czy_sroda ) zrob_wyklad ( ) ;
if i f ( czy_sroda ) { zrob_wyklad ( ) ; }
if i f (3 == dzien_tygodnia ) { zrob_wyklad ( ) ; }
if-else i f ( czy_sroda ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ;
if-else i f ( czy_sroda ) i f (9 == godzina ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ;
if-else i f ( czy_sroda ) { i f (9 == godzina ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ; }
if-else i f ( czy_sroda ) { i f (9 == godzina ) zrob_wyklad ( ) ; } e l s e idz_do_domu ( ) ;
if-else i f ( czy_poniedzialek ) zrob_laboratorium ( ) ; e l s e i f ( czy_sroda ) zrob_wyklad ( ) ; e l s e i f ( czy_piatek ) { zrob_wyklad ( ) ; zrob_laboratorium ( ) ; } e l s e idz_do_domu ( ) ;
switch-case switch ( dzien_tygodnia ) { case 1 : zrob_laboratorium ( ) ; break ; case 3 : zrob_wyklad ( ) ; break ; case 5 : zrob_wyklad ( ) ; zrob_laboratorium ( ) ; break ; d e f a u l t : idz_do_domu ( ) ; }
switch-case switch ( dzien_tygodnia ) { case 1 : case 2 : zrob_laboratorium ( ) ; break ; case 3 : zrob_wyklad ( ) ; case 4 : case 5 : zrob_laboratorium ( ) ; break ; d e f a u l t : idz_spac ( ) ; }
switch-case bool sprawdz_czy_sroda ( i n t dzien_tygodnia ) { return 3 == dzien_tygodnia ; }
switch-case i n t ustal_godzine_budzenia ( bool czy_weekend ) { return czy_weekend? 12 : 6 ; }
Konspekt 1 if-else 2 do-while Pętla do-while for break-continue
while while ( warunek ) i n s t r u k c j a ;
while while ( czy_weekend ) s p i j ( ) ;
do-while do s p i j ( " s z e s c godzin " ) ; while ( czy_weekend ) ;
do-while f o r ( i =0; i <n ; i ++) i n s t r u k c j a ; i = 0 ; while ( i <n ) { i n s t r u k c j a ; i ++; }
break z n a l e z i o n o = 0 ; f o r ( i =1; i <=7; i++ ) { i f ( czy_wyklad_w_dniu ( i ) ) { z n a l e z i o n o = i ; break ; } }
continue while ( 1 ) { dzien = wez_dzien ( ) ; switch ( dzien ) { case 3 : case 5 : m a terialy = pobierz_mat_na_wyklad ( ) ; break ; case 1 : m a terialy = pobierz_mat_na_laboratorium ( ) ; break ; d e f a u l t : continue ; } otworz_sale ( ) ; p r e z e n t u j ( m a t e r i a l y ) ; zamknij_sale ( ) ; }
continue f o r ( i =0; i <10; i ++); p r i n t f ( " S e s j a \n" ) ;
Kontrola przepływu while ( pytanie=nastepne_pytanie ( ) ) { udziel_odpowiedzi ( pytanie ) ; } pokaz_nastepny_slajd ( ) ;
Zawartość pamięci f0c1be80 00 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 00 00 00 00 00 00 00 00
Konspekt 3 Wskaźniki Argumenty funkcji 4 Tablice 5 Arytmetyka wskaźników
Wskaźniki f0c1be80 [c0 00 00 00]00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a=192;
Wskaźniki f0c1be80 c0 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a=192; i n t p_a=&a ; //p_a = f0c1be80
Wskaźniki f0c1be80 c0 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a=192; i n t p_a=&a ; //p_a = f0c1be80 // p_a = 192
Wskaźniki f0c1be80 [80 00 00 00]00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 80 be c1 f 0 00 00 00 00 i n t a=192; i n t p_a=&a ; p_a = 128; //p_a = f0c1be80
Wskaźniki f0c1be80 c0 00 00 00 cc 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 80 be c1 f 0 00 00 00 00 i n t a=192; i n t b=204; i n t p_a ; p_a=&a ; //p_a = f0c1be80
Wskaźniki f0c1be80 [80]00 00 00[80]00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [84]be c1 f 0 00 00 00 00 i n t a=192; i n t b=204; i n t p_a ; p_a=&a ; //p_a = f0c1be80 p_a = 128; p_a=&b ; //p_a = f0c1be84 p_a = 128;
Argumenty funkcji void swap ( i n t a, i n t b ) { x = a ; a = b ; b = x ; } p = 4 ; q = 7 ; swap(&p,&q ) ;
Konspekt 3 Wskaźniki 4 Tablice Tablice jednowymiarowe Tablice dwuwymiarowe 5 Arytmetyka wskaźników
Tablice jednowymiarowe f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ;
Tablice jednowymiarowe f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ; i n t p_a = a ; &a [ 0 ] == a == p_a a [ 0 ] == p_a
Tablice dwuwymiarowe f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ;
Tablice dwuwymiarowe f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ; b == b [ 0 ] [ 0 ] == ( b [ 0 ] )
Konspekt 3 Wskaźniki 4 Tablice 5 Arytmetyka wskaźników
Arytmetyka wskaźników f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ; a [ 2 ] == ( a+2) == 32 &a [ 2 ] == a + 2 s i z e o f ( i n t ) == f0c1be88
Arytmetyka wskaźników f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ; b [ 2 ] == f0c1be88 ( ( b+2) + 1) == b [ 2 ] [ 1 ] == 8
Arytmetyka wskaźników i n t a = 256; char p_a = &a ; // warning : i n i t i a l i z a t i o n from incompatible p o i n t e r
Arytmetyka wskaźników i n t a = 258; char p_a = ( char )&a ; p_a [ 1 ] ; //1 p_a [ 0 ] ; //2
Arytmetyka wskaźników char a [ ] = " H e l l o world! " ; p r i n t f ( "%s \n",&a [ 6 ] ) ; // world!
Arytmetyka wskaźników i n t s t r l e n ( char s ) { i n t n ; f o r ( n=0; s ; s++) n++; return n ; }
Konspekt 6 gdb 7 ptrace 8 GUI 9 Standardowe wejście 10 Standardowe wyjście 11 Deskryptory plików
Konspekt 6 gdb Zasada działania Breakpointy Sterowanie 7 ptrace 8 GUI
Konspekt 6 gdb 7 ptrace Wsparcie systemu operacyjnego Debuggowanie zdalne Strace Strip 8 GUI
Unix is sexy talk; cd ; wine; talk; touch; unzip; strip; finger; mount; fsck; more; yes; umount; make clean; sleep
Konspekt 6 gdb 7 ptrace 8 GUI Breakpoint Watch Printf
Konspekt 9 Standardowe wejście getchar gets scanf cin 10 Standardowe wyjście 11 Deskryptory plików
Konspekt 9 Standardowe wejście 10 Standardowe wyjście putchar,puts,printf,cout Formatowanie Buforowanie 11 Deskryptory plików
Konspekt 9 Standardowe wejście 10 Standardowe wyjście 11 Deskryptory plików
Bibliografia http://edu.pjwstk.edu.pl/wyklady/pro/scb/prg2cpp_files/node22.html https://opensource.com/article/18/1/how-debuggers-really-work https://blog.0x972.info/?d=2014/11/13/10/40/50-how-does-a-debugger-work https://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb http://edu.pjwstk.edu.pl/wyklady/pro/scb/prg2cpp_files/node27.html
Koniec Dziękuję za uwagę!