Laboratorium telekomunikacji Zadanie 2
|
|
- Kajetan Marciniak
- 6 lat temu
- Przeglądów:
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 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
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
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
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
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
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
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()
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
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
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
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
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,
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,
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
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
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
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
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:
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,
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
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
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ą
Ć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
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
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
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
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
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,
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
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
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,
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
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ęć:
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ą
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
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
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
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
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
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
۰ 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
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
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
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
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ą
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
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
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,
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
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
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,
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ć,
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,
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ęść
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
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
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
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
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
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
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
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
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ą
Ć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
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/
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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ęć
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:
Ć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
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
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
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.
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++)
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
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
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,
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ę,
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;
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
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
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+'
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).
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ć
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