Laboratorium telekomunikacji Zadanie 2

Wielkość: px
Rozpocząć pokaz od strony:

Download "Laboratorium telekomunikacji Zadanie 2"

Transkrypt

1 Grzegorz Graczyk numer indeksu imi i nazwisko Paweł Tarasiuk numer indeksu imi i nazwisko Data Kierunek Informatyka Rok akademicki 2009/10 Semestr 4 Grupa dziekańska 2 Laboratorium telekomunikacji Zadanie 2

2 Opis programu i naszego rozumowania Przygotowane zostały dwa programy, których używaliśmy do rozwiązania problemu. Pierwszy z nich - napisany w języku Python - został wykorzystany do dogłębnej analizy problemu i wykonuje założenia instrukcji do ćwiczenia bardzo dokładnie, trzymając się semantyki postawionego problemu. Wyróżnione zostały np. funkcje przekształcające dane z pliku do postaci wektorów macierzy wartości logicznych, oraz funkcje przeznaczone do mnożenia macierzy. Program ten zawiera także funkcje badające zgodność wykorzystywanych macierzy z założeniami, oraz możliwość brutalnego szukania spełniającej wymagania macierzy o podanych wymiarach. Brutalne poszukiwania (sprawdzenie ponad pięciu milionów przypadków) utwierdziły nas w przekonaniu, że najmniejsza macierz H, która może pozwolić na korektę dwóch błędów w ośmiobitowej macierzy musi mieć dziewięć wierszy (a zatem minimalna liczba bitów kontrolnych to właśnie 9). Dużo prościej jest dla korekty jednego błędu - potrafimy oszacować od dołu, że liczba bitów kontrolnych musi wynosić co najmniej 4, i faktycznie dla 4 bitów udało nam się skonstruować poprawną macierz. Oszacowanie wynika z tego, że macierz H dla korekty jednego błędu musi posiadać n + 8 różnych, niezerowych kolumn, podczas gdy możliwych wariacji które mogą być kolumnami jest tylko 2 n 1. Uzyskany warunek n n 1 jest natomiast spełniony dla n > 3. Zatem przykładowe macierze, których można używać do tworzenia bitów kontrolnych oraz do korekty błędów, mają postać: H 1 = Dla korekty jednego błędu, oraz: H 2 = Dla korekty dwóch błędów Druga z przygotowanych implementacji cechuje się wysoką wydajnością, jednakże jest pisana w specyficznym dialekcie języka C, specyficznym dla kompilatora GNU. Jednakże kompilator gcc pozwala na korzystanie z niego na wielu platformach sprzętowych z systemami uniksopobobnymi. Implementacja ta jest szybka i oszczędna pamięciowo, lecz jej wadami są: mniejsza przenośność, gorsza czytelność i pewne zmiany w rozumowaniu w stosunku do instrukcji. Jednakże wynik działania drugiego programu jest w pełni zgodny z oczekiwaniami i obie implementacje są wzajemnie kompatybilne. Implementacja przenośna, ściśle zgodna z opisem, wykonana w języku Python #! / usr / bin / env python import s y s Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 2 / 11

3 import random # # Agumenty programu : # 1 lub 2 tryb pracy ( przygotowanie do k o r e k c j i 1 b i t u na 12 lub 2 bitow na 17) # enc lub dec przygotowanie lub odczyt # p l i k wejsciowy # p l i k wyjsciowy # # macierz do korekty jednego bledu przy 8 b i t a c h danych 4 b i t y k o n t r o l n e H1 = [ [ 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0 ], [ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 ], [ 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 ], [ 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1 ] ] # macierz do korekty dwoch bledow przy 8 b i t a c h danych 9 bitow kontrolnych H2 = [ [ 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ], [ 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 ], [ 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 ], [ 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 ], [ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ], [ 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 ], [ 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ] ] # sprawdza poprawnosc macierzy H s l u z a c e j do naprawy jednego bledu # i i n f o r m u j e o ewentualnych bledach w macierzy d e f m a t r i x t e s t 1 (H, q u i e t = F a l s e ) : HT = t r a n s p o n a t e (H) HT. append ( [ ] ) f o r i i n xrange ( l e n (HT [ 0 ] ) ) : HT[ 1 ]. append ( 0 ) h = l e n (HT) f o r i i n xrange ( h ) : f o r j i n xrange ( i ) : i f HT[ i ] == HT[ j ] : i f not q u i e t : p r i n t Columns %d and %d are equal. % ( i, j ) r e t u r n True # sprawdza poprawnosc macierzy H s l u z a c e j do naprawy dwoch bledow # i i n f o r m u j e o ewentualnych bledach w macierzy d e f m a t r i x t e s t 2 (H, q u i e t = F a l s e ) : HT = t r a n s p o n a t e (H) HT. append ( [ ] ) f o r i i n xrange ( l e n (HT [ 0 ] ) ) : HT[ 1 ]. append ( 0 ) h = l e n (HT) P = [ ] f o r i i n xrange ( h ) : f o r j i n xrange ( i ) : i f HT[ i ] == HT[ j ] : i f not q u i e t : p r i n t Columns %d and %d are equal. % ( i, j ) P. append ( [ b o o l v e c t o r x o r (HT[ i ], HT[ j ] ), i, j ] ) h = l e n (P) f o r i i n xrange ( h ) : f o r j i n xrange ( h ) : i f i!= j : i f P [ i ] [ 0 ] == P [ j ] [ 0 ] : i f not q u i e t : p r i n t ( Columns (%d, %d ) and (%d, %d ) have equal sums. Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 3 / 11

4 r e t u r n True % (P [ i ] [ 1 ], P [ i ] [ 2 ], P [ j ] [ 1 ], P [ j ] [ 2 ] ) ) # g e n e r u j e macierz, np. # matrix gen ( 4, m a t r i x t e s t 1 ) l o s u j e macierz do k o r e k c j i jednego bledu # matrix gen ( 9, m a t r i x t e s t 2 ) l o s u j e macierz do k o r e k c j i dwoch bledow # matrix gen ( 8, m a t r i x t e s t 2 ) w i e c z n i e p r a c u j e i i n f o r m u j e o l i c z b i e zbadanych przypadkow d e f matrix gen ( t, t e s t ) : U = [ ] P = [ ] s = 0 f o r i i n xrange ( t + 1 ) : U. append ( [ ] ) f o r j i n xrange ( t ) : U[ i ]. append ( 0 ) f o r i i n xrange ( 1, t + 1 ) : U[ i ] [ i 1 ] = 1 f o r i i n xrange (1 << t ) : P. append ( [ ] ) f o r j i n xrange ( t ) : P [ i ]. append ( i n t ( bool ( i & (1 << j ) ) ) ) f o r e i n U: P. remove ( e ) w h i l e True : R = [ ] f o r e i n random. sample (P, 8 ) : R. append ( e ) f o r e i n U [ 1 : ] : R. append ( e ) i f t e s t ( t r a n s p o n a t e (R), True ) : p r i n t Analyzed samples : %d % ( s + 1) p r i n t Result : [ f o r e i n t r a n s p o n a t e (R) : p r i n t e p r i n t ] r e t u r n True s += 1 i f s % == 0 : p r i n t Analyzed samples : %d % s # dodaje b i t y k o n t r o l n e do t a b l i c y bitow d e f a d d c o n t r o l (T, H) : S = T n = l e n (H) m = l e n (H[ 0 ] ) n f o r i i n xrange ( n ) : c = 0 f o r j i n xrange (m) : c ˆ= H[ i ] [ j ] & T[ j ] [ 0 ] S. append ( [ c ] ) r e t u r n S # mnozy macierze d e f boolmatrix mul (A, B ) : i f l e n (A[ 0 ] )!= l e n (B ) : R = [ ] h = l e n (A) w = l e n (B [ 0 ] ) n = l e n (B) f o r i i n xrange ( h ) : R. append ( [ ] ) f o r j i n xrange (w) : R[ i ]. append ( 0 ) f o r k i n xrange ( n ) : R[ i ] [ j ] ˆ= A[ i ] [ k ] & B[ k ] [ j ] r e t u r n R # dodaje wektory jednowymiarowe Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 4 / 11

5 d e f b o o l v e c t o r x o r (A, B ) : i f l e n (A)!= l e n (B ) : R = [ ] l = l e n (A) f o r i i n xrange ( l ) : R. append (A[ i ] ˆ B[ i ] ) r e t u r n R # t r a n s p o n u j e macierz dwuwymiarowa d e f t r a n s p o n a t e (A) : R = [ ] h = l e n (A) w = l e n (A[ 0 ] ) f o r i i n xrange (w) : R. append ( [ ] ) f o r j i n xrange ( h ) : R[ i ]. append (A[ j ] [ i ] ) r e t u r n R # wprowadza bledy do t a b l i c y bitow d e f a d d e r r o r s (V, n ) : R = V f o r r i n random. sample ( range ( l e n (V) ), n ) : R[ r ] [ 0 ] ˆ= 1 r e t u r n R # sprawdza, czy czasem macierz n i e zawiera j a k i e g o s niezerowego pola d e f i s z e r o (A) : t r y : f o r i i n xrange ( l e n (A) ) : i f not i s z e r o (A[ i ] ) : r e t u r n True except : r e t u r n not bool ( i n t (A) ) # wyszukuje element w t a b l i c y ( n i e chce nam s i e potem obslugiwac bledow # jak elementu n i e ma, chcemy wartosc 1) d e f a r r a y f i n d (A, e ) : t r y : r e t u r n A. index ( e ) except : r e t u r n 1 d e f m a k e f l a t (A) : t r y : i f l e n (A) == 1 : r e t u r n m a k e f l a t (A[ 0 ] ) e l i f l e n (A) > 1 : f o r i i n xrange ( l e n (A) ) : A[ i ] = m a k e f l a t (A[ i ] ) r e t u r n A except : r e t u r n A # u s t a l a, na j a k i c h pozycjach sa bledy d e f f i n d e r r o r s (H, E ) : M = m a k e f l a t ( boolmatrix mul (H, E) ) HT = t r a n s p o n a t e (H) i f i s z e r o (M) : r e t u r n [ ] f = a r r a y f i n d (HT, M) i f f!= 1: r e t u r n [ f ] f o r i i n xrange ( l e n (HT) ) : f = a r r a y f i n d (HT, b o o l v e c t o r x o r (M, HT[ i ] ) ) i f f!= 1: r e t u r n [ f, i ] r e t u r n [ 1] Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 5 / 11

6 # zamienia c i a g bajtow na t a b l i c e bitow o zadanej d l u g o s c i d e f b y t e s 2 a r r ( b, n ) : R = [ ] p = 0 i f b == : b = \0 w h i l e n l e n (R) > 8 : t = ord ( b [ 0 ] ) f o r i i n xrange ( 8 ) : R. i n s e r t ( p, t & 1) t >>= 1 p += 8 b = b [ 1 : ] i f b == : b = \0 t = ord ( b [ 0 ] ) w h i l e l e n (R) < n : R. i n s e r t ( p, t & 1) t >>= 1 r e t u r n R # zamienia t a b l i c e bitow na c i a g bajtow d e f a r r 2 b y t e s (A) : B = A [ : 8 ] C = A [ 8 : ] n = 0 r = w h i l e l e n (B) < 8 : B. i n s e r t ( 0, 0) w h i l e B: n = ( n << 1) + B [ 0 ] B = B [ 1 : ] r += chr ( n ) i f C: r += a r r 2 b y t e s (C) r e t u r n r # przygotowuje p l i k do t r a n s m i s j i, o p c j o n a l n i e zaszumiajac go d e f e n c o d e f i l e ( inn, outn, H, e = 0 ) : f i n = open ( inn, rb ) f o u t = open ( outn, wb ) w h i l e True : c = f i n. read ( 1 ) i f c == : break f o u t. w r i t e ( a r r 2 b y t e s ( m a k e f l a t ( a d d e r r o r s ( a d d c o n t r o l ( t r a n s p o n a t e ( [ b y t e s 2 a r r ( c, 8 ) ] ), H), random. r a n d i n t ( 0, e ) ) ) ) ) f i n. c l o s e ( ) f o u t. c l o s e ( ) # o d c z y t u j e odebrany p l i k d e f d e c o d e f i l e ( inn, outn, H, e = 1): f i n = open ( inn, rb ) f o u t = open ( outn, wb ) n = l e n (H[ 0 ] ) b = ( n + 7) >> 3 w h i l e True : c = f i n. read ( b ) i f c == : break R = t r a n s p o n a t e ( [ b y t e s 2 a r r ( c, n ) ] ) E = f i n d e r r o r s (H, R) i f l e n (E) == 1 and E [ 0 ] == 1: p r i n t Error : data not r e c o g n i z e d at a l l ( and, e s p e c i a l l y, not f i x e d )! e l i f e!= 1 and l e n (E) > e : p r i n t ( Warning : more e r r o r s than expected. Probably mistaken due to too buggy + data. ) f o r x i n E : R[ x ] [ 0 ] ˆ= 1 Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 6 / 11

7 f o u t. w r i t e ( a r r 2 b y t e s ( m a k e f l a t ( t r a n s p o n a t e (R ) ) [ : 8 ] ) ) f i n. c l o s e ( ) f o u t. c l o s e ( ) c o n f i g s = [ [ H1, m a t r i x t e s t 1, 1 ], [ H2, m a t r i x t e s t 2, 2 ] ] i f l e n ( s y s. argv )!= 5 : p r i n t Too l i t t l e arguments. p r i n t p r i n t USAGE: p r i n t %s 1 2 enc dec INFILE OUTFILE s y s. e x i t ( ) i f s y s. argv [ 1 ] == 1 : c o n f i g = c o n f i g s [ 0 ] e l i f s y s. argv [ 1 ] == 2 : c o n f i g = c o n f i g s [ 1 ] i f not c o n f i g [ 1 ] ( c o n f i g [ 0 ] ) : p r i n t E r r o r s i n b u i l t i n matrix... e x i t ( ) i f s y s. argv [ 2 ] == enc : e n c o d e f i l e ( s y s. argv [ 3 ], s y s. argv [ 4 ], c o n f i g [ 0 ], c o n f i g [ 2 ] ) e l i f s y s. argv [ 2 ] == dec : d e c o d e f i l e ( s y s. argv [ 3 ], s y s. argv [ 4 ], c o n f i g [ 0 ] ) Implementacja wydajna - w dialekcie języka C wykorzystującym specyficzne właściwości kompilatora GNU #i n c l u d e <s t d i o. h> #i n c l u d e <s t r i n g. h> #i n c l u d e <s t d l i b. h> c o n s t char usage [ ] = Usage \n. / main [ s s e c i n g s ] mode\n Modes : \ n // term t e r m i n a l c o n n e c t i o n \n // r e c v r e c i v e f i l e u s i n g xmodem\n // send send f i l e u s i n g xmodem\n cat w r i t e input to output \n // Port : \ n // e n t e r port as d e v i c e f i l e path \n S s e c i n g s : \ n i f i l e use FILE as input \n o f i l e use FILE as output \n c code encode f i l e u s i n g CODE\n codes : \n s e c S i n g l e Error C o r r e c t i o n \n s e c r S i n g l e Error C o r r e c t i o n Revert \n dec Double Error C o r r e c t i o n \n decr Double Error C o r r e c t i o n Revert \n e r r 1 Create e r r o r s f o r SEC\n e r r 2 Create e r r o r s f o r DEC\n v v e rbose mode\n ; / s s e c i n g s : / #d e f i n e bool char #d e f i n e t r u e ( ( bool ) 1 ) #d e f i n e f a l s e ( ( bool ) 0 ) t y p e d e f i n t ( coder ) ( char, int, char ) ; FILE input ; FILE output ; coder code = NULL; bool v e r b o s e = f a l s e ; / kodowanie ( zad2 ) / Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 7 / 11

8 / Eight to Twelve / c o n s t char sec mask [ 4 ] = { 0 x0f, 0x71, 0xb6, 0xda ; i n t s e c r ( char in, i n t len, char out ) { i n t i, j, k ; unsigned char er, m; r e t u r n l e n / 2 ; f o r ( i = j = 0 ; i < l e n ; i += 2, j++) { out [ j ] = i n [ i ] ; e r = 0 x f f ; m = i n [ i + 1 ] ; f o r ( k = 0 ; e r && k < 4 ; k++, m >>= 1) { // f p r i n t f ( s t d e r r, %d ) %x %x\n, k, er, m ) ; i f ( ( b u i l t i n p o p c o u n t ( i n [ i ] & sec mask [ k ] ) & 1) == (m & 1 ) ) e r &= sec mask [ k ] ; e l s e e r &= sec mask [ k ] ; i f ( v e r b o s e ) f p r i n t f ( s t d e r r, Fixing e r r o r! \ n, k ) ; out [ j ] ˆ= e r ; r e t u r n j ; i n t s e c ( char in, i n t len, char out ) { i n t i, j, k ; r e t u r n l e n 2 ; f o r ( i = j = 0 ; i < l e n ; i ++, j += 2) { out [ j ] = i n [ i ] ; out [ j + 1 ] = 0 ; f o r ( k = 0 ; k < 4 ; k++) out [ j + 1 ] = ( b u i l t i n p o p c o u n t ( i n [ i ] & sec mask [ k ] ) & 1) << k ; r e t u r n j ; / Eight to Seventeen / c o n s t char dec mask [ 9 ] = { 0x31, 0 xf4, 0xc9, 0x2a, 0xbd, 0 x5f, 0 xfe, 0x2d, 0 x5a ; s h o r t d e c e r r o r s [ 1 7 ] = { 1 ; void d e c i n i t ( ) { i n t i, k ; f o r ( i = 0 ; i < 8 ; i ++) { d e c e r r o r s [ i ] = 0 ; f o r ( k = 0 ; k < 9 ; k++) i f ( dec mask [ k ] & (1 << i ) ) d e c e r r o r s [ i ] = 1 << k ; f o r ( ; i < 1 7 ; i ++) d e c e r r o r s [ i ] = 1 << ( i 8 ) ; i n t decr ( char in, i n t len, char out ) { i n t i, j, k, l ; unsigned s h o r t er, m; r e t u r n l e n / 3 ; i f ( d e c e r r o r s [ 0 ] == 1) d e c i n i t ( ) ; f o r ( i = j = 0 ; i < l e n ; i += 3, j++) { Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 8 / 11

9 out [ j ] = i n [ i ] ; e r = 0 ; m = ( i n [ i + 2 ] << 8) ( unsigned char ) i n [ i + 1 ] ; f o r ( k = 0 ; k < 9 ; k++, m >>= 1) { i f ( ( b u i l t i n p o p c o u n t ( i n [ i ] & dec mask [ k ] ) & 1)!= (m & 1 ) ) e r = 1 << k ; // f p r i n t f ( s t d e r r, %x\n, e r ) ; f o r ( k = 0 ; e r && k < 1 7 ; k++) i f ( d e c e r r o r s [ k ] == e r ) { e r = 0 ; i f ( k < 8) out [ j ] ˆ= 1 << k ; i f ( v e r b o s e ) f p r i n t f ( s t d e r r, Error at %d b i t! \ n, k ) ; f o r ( k = 0 ; e r && k < 1 7 ; k++) f o r ( l = k + 1 ; e r && l < 1 7 ; l ++) i f ( ( d e c e r r o r s [ k ] ˆ d e c e r r o r s [ l ] ) == e r ) { // f p r i n t f ( s t d e r r, wtf : %x ˆ %x = %x\n, d e c e r r o r s [ k ], d e c e r r o r s [ l ], e r ) ; e r = 0 ; i f ( k < 8) out [ j ] ˆ= 1 << k ; i f ( l < 8) out [ j ] ˆ= 1 << l ; i f ( v e r b o s e ) f p r i n t f ( s t d e r r, E r r o r s at %d and %d b i t! \ n, k, l ) ; i f ( e r ) f p r i n t f ( s t d e r r, Unrepaired e r r o r! \ n ) ; r e t u r n j ; i n t dec ( char in, i n t len, char out ) { i n t i, j, k ; r e t u r n l e n 3 ; f o r ( i = j = 0 ; i < l e n ; i ++, j += 3) { out [ j ] = i n [ i ] ; out [ j + 1 ] = 0 ; f o r ( k = 0 ; k < 8 ; k++) out [ j + 1 ] = ( b u i l t i n p o p c o u n t ( i n [ i ] & dec mask [ k ] ) & 1) << k ; out [ j + 2 ] = ( b u i l t i n p o p c o u n t ( i n [ i ] & dec mask [ 8 ] ) & 1 ) ; r e t u r n j ; / / i n t e r r 1 ( char in, i n t len, char out ) { i n t i, r ; r e t u r n l e n ; f o r ( i = 0 ; i < l e n ; i += 2) { out [ i ] = i n [ i ] ; out [ i + 1 ] = i n [ i + 1 ] ; r = rand ( ) % 1 2 ; i f ( r < 8) out [ i ] ˆ= 1 << r ; e l s e out [ i + 1 ] ˆ= 1 << ( r 8 ) ; r e t u r n i ; i n t e r r 2 ( char in, i n t len, char out ) { i n t i, r ; Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 9 / 11

10 r e t u r n l e n ; f o r ( i = 0 ; i < l e n ; i += 3) { out [ i ] = i n [ i ] ; out [ i + 1 ] = i n [ i + 1 ] ; out [ i + 2 ] = i n [ i ] ; r = rand ( ) % 1 7 ; i f ( r < 8) out [ i ] ˆ= 1 << r ; e l s e i f ( r < 16) out [ i + 1 ] ˆ= 1 << ( r 8 ) ; e l s e out [ i + 2 ] ˆ= 1 << ( r 1 6 ) ; r e t u r n i ; / / i n t cat ( ) { i n t s i z e = 1024, l e n = 0, num ; char i n = malloc ( s i z e ), out = NULL; do { num = f r e a d ( i n + len, 1, s i z e len, input ) ; i f (num == 1) r e t u r n 1; l e n += num ; i f ( l e n == s i z e ) { s i z e <<= 1 ; i n = r e a l l o c ( in, s i z e ) ; w h i l e (num > 0 ) ; i f ( code ) { out = malloc ( code ( 0, len, 0 ) ) ; l e n = code ( in, len, out ) ; f w r i t e ( out, 1, len, output ) ; e l s e f w r i t e ( in, 1, len, output ) ; f r e e ( i n ) ; i f ( out ) f r e e ( out ) ; i n t term ( c o n s t char path ) { FILE f i l e = fopen ( path, r ) ; i n t v a l ; char buf [ ] ; do { v a l = f g e t c ( f i l e ) ; i f ( v a l == EOF) putchar ( v a l ) ; w h i l e ( 1 ) ; f c l o s e ( f i l e ) ; r e t u r n 0 ; void d e s t r u c t o r ( ) { i f ( input!= s t d i n ) f c l o s e ( input ) ; i f ( output!= stdout ) f c l o s e ( output ) ; #d e f i n e CODE( name ) i f ( strcmp ( argv [ i ], #name ) == 0 ) code = &name ; i n t main ( i n t argc, c o n s t char c o n s t argv [ ] ) { Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 10 / 11

11 i n t i, j ; c o n s t char mode, port ; FILE f ; input = s t d i n ; output = stdout ; f o r ( i = 1, j = 0 ; i < argc ; i ++) { i f ( argv [ i ] [ 0 ] == ) switch ( argv [ i ] [ 1 ] ) { c a s e i : f = fopen ( argv[++ i ], rb ) ; i f ( f == NULL) i = argc ; e l s e input = f ; c a s e o : f = fopen ( argv[++ i ], wb ) ; i f ( f == NULL) i = argc ; e l s e output = f ; c a s e c : ++i ; CODE( s e c ) e l s e CODE( s e c r ) e l s e CODE( dec ) e l s e CODE( decr ) e l s e CODE( e r r 1 ) e l s e CODE( e r r 2 ) e l s e i = argc ; c a s e v : v e r b o s e = t r u e ; d e f a u l t : i = argc ; e l s e switch ( j++) { c a s e 0 : mode = argv [ i ] ; c a s e 1 : port = argv [ i ] ; d e f a u l t : i = argc ; i f ( i > argc j!= 1) { puts ( usage ) ; r e t u r n 1; i f ( strcmp (mode, cat ) == 0) r e t u r n cat ( ) ; // i f ( strcmp ( argv [ 1 ], term ) == 0 ) // r e t u r n term ( argv [ 2 ] ) ; // puts ( usage ) ; r e t u r n 1; Telekomunikacja: Grzegorz Graczyk i Paweł Tarasiuk 11 / 11

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Programowanie w językach

Programowanie w językach Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. 1. Dynamiczna alokacja pamięci dla tablic wielowymiarowych - Przykładowa

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Wprowadzenie do programowania i programowanie obiektowe

Wprowadzenie do programowania i programowanie obiektowe Wprowadzenie do programowania i programowanie obiektowe Wirtotechnologia Zajęcia nr 10 autor: Grzegorz Smyk Wydział Odlewnictwa Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza

Bardziej szczegółowo

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

Ghost in the machine

Ghost in the machine Operacje na pami eci i odrobina I/O Zak lad Chemii Teoretycznej UJ 8 stycznia 2007 Funkcje operujace Wstep do operacji I/O na plikach 1 Operacje na pami eci 2 Funkcje operujace 3 Wst Funkcje operujace

Bardziej szczegółowo

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2) Podstawy programowania ( język C ) Wskaźniki do funkcji Wykład 11. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Wskaźniki do funkcji (1) W języku C funkcje nie są zmiennymi, ale

Bardziej szczegółowo

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego

Programowanie współbieżne Zadanie 5 - Podstawowe problemy programowania współbieżnego 150875 Grzegorz Graczyk numer indeksu imię i nazwisko 151021 Paweł Tarasiuk numer indeksu imię i nazwisko Data 2011-11-07 Kierunek Informatyka Specjalizacja Inżynieria Oprgoramowania i Analiza Danych Rok

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę: Rozdział 1 Obsługa plików W językach C pliki powiązane są ze strumieniami i pracuje się na nich podobnie jak na innych strumieniach. W języku C do operacji na plikach służą funkcje z biblioteki stdio.h,

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ Jeszcze o funkcjach i strukturze projektu Zak lad Chemii Teoretycznej UJ 3 grudnia 2008 1 2 3 4 5 typedef Plan typedef specyfikator typu nazwa S luży do stworzenia nowej nazwy dla jakiegoś typu. Nazwa

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część jedenasta Przetwarzanie plików amorficznych Konwencja języka C Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011 Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt

Bardziej szczegółowo

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h> PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki Pliki TEKSTOWE zawierające ciągi liczb: TXT- 1: Kalkulator sumowanie dwóch liczb zapisanych w pliku tekstowym ( fopen, fscanf, fprintf,

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej Laboratorium 1 - Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Punkty Na laboratorium można zdobyć 60 punktów. Ocena ogólna z zajęć:

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

Pliki. Informacje ogólne. Obsługa plików w języku C Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Instytut Informatyki Politechnika Poznańska Proces transmisji może w prowadzać błędy do przesyłanych wiadomości błędy pojedyncze lub grupowe Detekcja: Wymaga uznania, że niektóre wiadomości są nieważne

Bardziej szczegółowo

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

Bardziej szczegółowo

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof] 1 Plik jest wydzielonym fragmentem pamięci (najczęściej dyskowej) posiadającym nazwę. Z punktu widzenia C plik jest ciągiem bajtów, z których każdy może zostać oddzielnie odczytany. Zgodnie ze standardem

Bardziej szczegółowo

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h > PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece

Bardziej szczegółowo

Język Python (2) Język Python (2) 1/36

Język Python (2) Język Python (2) 1/36 Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy

Bardziej szczegółowo

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

Bardziej szczegółowo

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście. Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka 2018-03-27 09:06:38 +0200 Część I Formatowane (tekstowe) wejście/wyjście Otwarcie pliku

Bardziej szczegółowo

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4 Politechnika Łódzka Instytut Systemów Inżynierii Elektrycznej Laboratorium cyfrowej techniki pomiarowej Ćwiczenie 4 Zapis danych do pliku w programie LabVIEW 1. Zapis i odczyt sygnałów pomiarowych Do zapisu

Bardziej szczegółowo

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości

Bardziej szczegółowo

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki Konwersje napis liczba Struktury, unie Scanf / printf Wskaźniki Konwersje liczba napis Ćwiczenia 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12,

Bardziej szczegółowo

Podstawy Kompilatorów

Podstawy Kompilatorów Podstawy Kompilatorów Laboratorium 12 Analiza zależności kontekstowych. Zadanie 1: Proszę napisać analizator zgodności typów dla podzbioru standardowych wyrażeń języka Pascal. Dla uproszczenia należy założyć,

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Laboratorium podstaw elektroniki

Laboratorium podstaw elektroniki 150875 Grzegorz Graczyk numer indeksu imie i nazwisko 150889 Anna Janicka numer indeksu imie i nazwisko Grupa: 2 Grupa: 5 kierunek Informatyka semestr 2 rok akademicki 2008/09 Laboratorium podstaw elektroniki

Bardziej szczegółowo

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++   w odpowiednim systemie operacyjnym Laboratorium 1 I. Zainstaluj program Eclipse (wersja C/C++ http://www.eclipse.org/downloads/) w odpowiednim systemie operacyjnym II. Zainstaluj narzędzia Windows CDT (w Eclipse jako software site dodajemy

Bardziej szczegółowo

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład I I Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Na laboratorium można zdobyć 100 punktów. Do zaliczenia niezbędne jest

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część trzynasta Tablice struktur, pliki struktur Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

I znowu można jak w C, za pomocą starych struktur i metod:

I znowu można jak w C, za pomocą starych struktur i metod: Obsługa plików I znowu można jak w C, za pomocą starych struktur i metod: Odczyt (ifstream) Zapis (ofstream) Czego tu wszędzie brakuje? plik.close(); Wynik Plik testowy.txt app jak append http://www.cplusplus.com/reference/iostream/ifstream/

Bardziej szczegółowo

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 6. Tablice znakowe o dwóch indeksach, przekazywanie tablic do funkcji cd., dynamiczna alokacja pamięci, funkcje przetwarzające ciągi

Bardziej szczegółowo

Wskaźniki. Pamięć dynamiczna

Wskaźniki. Pamięć dynamiczna Wskaźniki. Pamięć dynamiczna wer. 8 z drobnymi modyfikacjami Wojciech Myszka 2015-04-13 11:39:01 +0200 Wskaźniki Wskaźniki to podstawa C. Kto nie umie się nimi posługiwać ten nie potrafi wykorzystać siły

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

Języki i metodyka programowania. Wprowadzenie do języka C

Języki i metodyka programowania. Wprowadzenie do języka C Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia

Bardziej szczegółowo

Wskaźniki. Pamięć dynamiczna

Wskaźniki. Pamięć dynamiczna Wskaźniki. Pamięć dynamiczna wer. 10 Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2019-03-27 08:28:44 +0100 Literatura I Ted Jensen. A tutorial on pointers and arrays in C, Feb. 2000. Dostępne

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

Bardziej szczegółowo

Laboratorium podstaw elektroniki

Laboratorium podstaw elektroniki 150875 Grzegorz Graczyk numer indeksu imie i nazwisko 150889 Anna Janicka numer indeksu imie i nazwisko Grupa: 2 Grupa: 5 kierunek Informatyka semestr 2 rok akademicki 2008/09 Laboratorium podstaw elektroniki

Bardziej szczegółowo

Podstawy Kompilatorów

Podstawy Kompilatorów Podstawy Kompilatorów Laboratorium 10 Translacja sterowana składnią w generatorze YACC. Zadanie 1: Proszę napisać program, który dla danej liczby całkowitej j oraz niepustego ciągu liczb naturalnych c

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Języki i paradygmaty programowania 1 studia niestacjonarne 2018/19

Języki i paradygmaty programowania 1 studia niestacjonarne 2018/19 Języki i paradygmaty programowania 1 studia niestacjonarne 2018/19 Lab 4. Program zapisany w kilku plikach. Pliki nagłówkowe (*h.). Słowa kluczowe static, const. Klasy pamięci (auto), static, extern. Tablice

Bardziej szczegółowo

Wprowadzenie do Valgrinda

Wprowadzenie do Valgrinda Wprowadzenie do Valgrinda Jan Karwowski Wydział Matematyki i Nauk Informacyjnych PW 10 lutego 2015 Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego 2015 1 / 33 Valgrind Valgrind jest narzędziem

Bardziej szczegółowo

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików ISO/ANSI C Dostęp do plików w trybie tekstowym znak po znaku Czytanie z pliku int fgetc( FILE *stream ); char buffer[81]; int i, ch; if((stream = fopen("test.txt","r")) == NULL ) exit( 0 ); ch

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Przemysłowe układy sterowania PID Układy regulacji PID w strukturze sprzętowej Pytania i zadania do zajęć

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 8 (15.04.2019) Kompilacja Kompilacja programu (kodu): proces tłumaczenia kodu napisanego w wybranym języku na kod maszynowy, zrozumiały

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

Technologie cyfrowe semestr letni 2018/2019 Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 19 października 2018 1 / 35 mgr inż. Krzysztof

Bardziej szczegółowo

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury, , Programowanie, uzupełnienie notatek: dr Jerzy Białkowski , 1 2 3 4 , Wczytywanie liczb , Wczytywanie liczb 1 #include 2 #include < s t d l i b. h> 3 4 int main ( ) { 5 int rozmiar, numer

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne 1 Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,

Bardziej szczegółowo

Uzupełnienie dot. przekazywania argumentów

Uzupełnienie dot. przekazywania argumentów Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;

Bardziej szczegółowo

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234 Dr inż. Robert Wójcik Zakład Podstaw Informatyki i Teleinformatyki Instytut Cybernetyki Technicznej, Politechnika Wrocławska Wykład 15 15. Obsługa plików 15.1. Pliki tekstowe i binarne 15.2. Standardowa

Bardziej szczegółowo

Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający. Pakiety wrapfig i listings. 1. Pakiet wrapfig. 21 marca 2015

Tekst oblewający literę. Tekst oblewający literę. Tekst oblewający. Pakiety wrapfig i listings. 1. Pakiet wrapfig. 21 marca 2015 Pakiety wrapfig i listings 21 marca 2015 1. Pakiet wrapfig Pakiet wrapfig należy wczytać w preambule dokumentu. Pozwala on na oblewanie tekstem obrazka. \beginwrapfigure[2]r[12pt]60pt \includegraphics[width=60pt]graf

Bardziej szczegółowo

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Operacje na plikach Otwarcie i zamknięcie pliku: fh = open('plik', 'r') Atrybuty: 'r' odczyt 'w' zapis 'a' dopisanie 'r+'

Bardziej szczegółowo

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8 12.1 12.2 Klasa iostream... 1 Klasy ofstream, ifstream... 3 12.3 Struktura FILE... 8 12.1 Klasa iostream Obiekty klasy stream tworzone automatycznie: istream& cin, standardowe wejście konsoli (klawiatura).

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki W językach niskopoziomowych błędy zgłaszane były przez zwracanie odpowiedniego statusu (liczby) W C main() zwraca int żeby można było określić

Bardziej szczegółowo

Wykresy i interfejsy użytkownika

Wykresy i interfejsy użytkownika Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka

Bardziej szczegółowo