WYKŁAD 4, 5 i 6. Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C. Programy: c1_1.c... c1_9.c.
|
|
- Maksymilian Sobczak
- 9 lat temu
- Przeglądów:
Transkrypt
1 WYKŁAD 4, 5 i 6 Wprowadzenie do języka C Mój pierwszy, drugi,..., n-ty program w języku C Programy: c1_1.c... c1_9.c Tomasz Zieliński
2 KOMPILATOR vs. INTERPRETER (1) - ogólnie C/C++ = kompilatory tłumaczą od razu cały program na kod maszynowy potem dopiero program jest wykonywany stosowane kiedy jest już znany algorytm rozwiązania Basic = interpretery Matlab tłumaczona i wykonywana jest linia po linii programu stosowane kiedy jest poszukiwany algorytm rozwiązania Kompilator Interpreter Zalety Szybkie działanie programu Możliwość optymalizacji kodu programu, np. minimalizacji potrzebnej pamięci Krótka droga do pomysłu do jego weryfikacji Wady Długa droga do pomysłu do jego weryfikacji Wolne działanie programu
3 KOMPILATOR vs. INTERPRETER (2) - praca nad programem f1.obj, f2.obj,... statyczne (lib) i dynamiczne (dll) dołączanie bibliotek system.lib Lib Maker Konsolidator my.lib system.dll my.dll wykonanie całego programu Edytor tekstu KOMPILATOR programu Linker System operacyjny prog.c prog.obj prog.exe INTERPRETER to oddzielny program / aplikacja 1 2 Edytor linii Program czyli zbiór linii 1 2 INTERPRETER Interpreter linii >>...?... (CR) Egzekutor linii
4 KOMPILATOR vs. INTERPRETER (3) szybkość pisania vs. szybkość działania czas napisania i uruchamiania (usunięcia błędów) programu czas wykonania programu Asembler Język C/C++ Matlab Simulink WNIOSEK: kiedy poszukuję rozwiązania problemu, wybieram język wysokiego poziomu, nawet graficzny, z dużą liczbą bibliotek (szybko piszę program, który wolno działa) kiedy znam rozwiązanie problemu wybieram język niskiego poziomu (wolno piszę program, który szybko działa)
5 Kod znak-moduł = +16 (16) = 16 (144) = 32 (160) Kod uzupełnień do dwóch U2 ARYTMETYKA KOMPUTEROWA (1) (problem zapisu znaku liczby) = (zaneguj wszystkie bity) + 1 (dodaj 1 do wyniku negacji) = 16 ( = 240) +16 = bez zmiany do pierwszej 1 włacznie, a potem negacja (+16) (-16) -16 = (+0)
6 ARYTMETYKA KOMPUTEROWA (2) (przykład zastosowania kodu U2) = = = = = = 5
7 ARYTMETYKA KOMPUTEROWA (3) (problem zapisu liczb niecałkowitych, ułamkowych w kodzie U2) binarnie (70) wagi 1 1/2 1/4 1/8 1/16 1/32 1/64 1/ wynik 1/2 1/32 1/64 = 35/64 = binarnie (-70) wagi 1 1/2 1/4 1/8 1/16 1/32 1/64 1/ wynik 1 1/4 1/8 1/16 1/64 = 35/64 = PRZYKŁADY: = 0 + (1/32 + 1/64) = 3/ = 1 + (1/2 + 1/4 + 1/8 + 1/16 + 1/64 + 1/128) = /128 = 5/128
8 ARYTMETYKA KOMPUTEROWA (4) (problem zapisu bardzo małych/dużych liczb rzeczywistych) x = 0, = 0, *10-2 = 0,625 * 2-6 x = (-1) z * m * 2 c x = z 1 bit c 8 bitów (p) m 23 bity, c 8 bitów (p) = c + 127, -126 c 127 8bitów 23 bity x = /2 + 1/8 = 5/8 = 0, = 0 + 1*64 +1*32 + 1*16 + 1*8 + 0*4 + 0*2 + 1*1 121 =
9 /* Przyklad 1 - ver. 1 - mój pierwszy program */ // komentarz #include <stdio.h> // opis użycia funkcji z biblioteki stdio.h // w tym opis wywołania funkcji printf main() // początek programu // otwarcie bloku instrukcji programu float kasa, moje; // deklaracja zmiennych int osoby; // kasa, moje, osoby kasa = ; osoby = 4; // inicjalizacja wartości zmiennych // kasa i osoby moje = kasa/osoby; // użycie zmiennych kasa i osoby // obliczenie mojego kieszonkowego // nowa linia printf(" moje kieszonkowe = %7.3f \n", moje ); // wydruk na monitor // nowa linia return(0); // wyjście z programu // zamknięcie bloku instrukcji programu /* OPIS PROGRAMU 1) Program powinien zaczynać komentarz co dany program robi: /*... co ja robię?.. */. 2) Następnie dołączany jest zbiór opisów wywołań funkcji bibliotecznych: np. #include <stdio.h> - biblioteka standardowego wejścia (input) i wyjścia (output) #include <math.h> - biblioteka funkcji matematycznych sin(), cos(), exp(), log(),... #include <string.h> - biblioteka operacji na łańcuchach znaków 3) main()... mój program... - program główny (funkcja główna) char to kod znaku zapisany na 8 bitach (1 bajt) int to liczba całkowita ze znakiem zapisana na 16 bitach (2 bajtach) long to liczba całkowita ze znakiem zapisana na 32 bitach (4 bajtach) float to liczba zmiennoprzecinkowa zapisana na 32 bitach (4 bajtach) double to liczba zmiennoprzecinkowa zapisana na 64 bitach (8 bajtach) 4) W wyniku deklaracji typu zmiennych (liczba bitów i sposób zapisu) kompilator przydziela pamięć poszczególnym zmiennym. 5) W wyniku inicjalizacji zmiennych do przydzielonych pamięci zostają zapisane ich wartości. 6) Użycie zmiennych to operacja na ich nazwach (operatory arymetyczne: +, -, *, /, % - reszta z dzielenia dwóch liczb całkowitych). Przykładowo operacja moje = kasa/osoby oznacza: a) pobierz z pamięci wartości zmiennych kasa i osoby do rejestrów procesora b) podziel zawartość tych rejestrów c) zapisz wynik do pamięci przydzielonej do przechowywania zmiennej moje 7) Funkcja printf( moje kieszonkowe = %f PLN \n, moje) wypisze na ekranie monitora: moje kieszonkowe = PLN %d %f %c %s... - znaki przekształceń (decimal, float, character, string) \n \t \b - znaki sterujące kursorem */
10 /* Przyklad 1 ver. 2 - #define, scanf */ #include <stdio.h> #define OSOBY 4 // definicja stałej tekstowej OSOBY // podczas kompilacji tekst OSOBY main() // będzie zawsze zastępowany przez 4 float kasa, moje; printf("ile do podzialu? "); scanf("%f", &kasa); moje = kasa/osoby; // na ekranie monitora: nowa linia // na ekranie monitora: pytanie // wczytanie liczby z klawiatury // do zmiennej kasa printf(" moje kieszonkowe = %7.3f \n", moje ); return(0); /* OPIS PROGRAMU 1) Stałe tekstowe są definiowane na początku programu: dlatego jest je bardzo łatwo znaleźć oraz zmienić ich wartość. Np. liczba znaków w wierszu, długość bufora,... 2) Są one pisane dużymi literami: dlatego łatwo jest je odróżnić od zmiennych w tekście programu. 3) Funkcja scanf("%f", &kasa): a) wczytuje z klawiatury sekwencję znaków ASCII (zakończonych klawiszem ENTER), b) zamienia ją na liczbę binarną o zadanym formacie (u nas %f, czyli float) c) zapisuje ją do komórek pamięci, przydzielonych zmiennej kasa. 4) WAŻNE: kasa - nazwa zmiennej, &kasa - adres w pamięci zmiennej kasa, *adres - wartość liczby znajdującej się w pamięci pod zadanym adresem wskaźnik to zmienna będąca adresem w pamięci, pokazująca na liczbę określonego typu */ PRZYKŁAD definicji wskaźników do pamięci, pokazujących na liczby określonego typu: int x, y; // deklaracja zmiennych x i y int *pa, *pb; // deklaracja wskaźników pa i pb do zmiennych typu int pa = &x; pb = &y; // wskaźnik pa ma wskazywać na zmienną x, zaś pb - na zmienną y *pa = 10; *pb = 20; // zapisanie liczb 10 i 20 pod zadane adresy, czyli inicjalizacja // wartości zmiennych x oraz y
11 /* Przyklad 1 - ver. 3 - funkcja prosta */ #include <stdio.h> #define OSOBY 4 // deklaracja sposobu wywołania funkcji // z biblioteki stdio float wzor( float forsa ); // deklaracja sposobu wywołania // mojej funkcji /* program glowny */ main() float kasa, moje; printf("ile do podzialu? "); scanf("%f", &kasa); // wywołanie mojej funkcji moje = wzor( kasa ); // jest do niej przekazana wartość zmiennej // kasa, a odebrana wartość zmiennej moje printf("moje kieszonkowe = %7.3f \n", moje); return(0); /* definicja funkcji pomocniczej */ float wzor( float forsa ) float temp; // funkcja otrzymuje i zwraca liczbę typu float // wewnętrzna zmienna pomocnicza temp = forsa/osoby; // obliczenie wartości zmiennej temp return( temp ); // przekazanie tej wartości do programu /* OPIS PROGRAMU 1) Sposób wywołania funkcji pisanych przez nas musi być zdefiniowany przed programem głównym, analogicznie jak dla funkcji bibliotecznych. 2) Należy podać: a) typy zmiennych przekazywanych do funkcji b) typ zmiennej odbieranej z funkcji za pomocą komendy return()
12 3) Do funkcji są przekazywane wartości zmiennych, tzn. liczby odczytane z pamięci spod adresów komórek przydzielonych zmiennym, lub sam adres do pamięci. W tym drugim przypadku funkcja może sama odczytać wartość zmiennej oraz ją zmodyfikować zapisując nową liczbę pod adres zmiennej. moje = wzór( kasa ) - przekazanie wartości zmiennej (kopii liczby z pamięci) moje = wzór( &kasa ) - przekazanie adresu zmiennej w pamięci W naszym przykładzie przekazujemy wartość zmiennej (kopię tego co jest w pamięci). 4) Funkcja ma dostęp do następujących wartości zmiennych: a) otrzymanych z programu nadrzędnego (wartość lub adres) b) globalnych, tzn. zdefiniowanych poza nawiasami programu głównego, a więc nie ukrytych wewnątrz jego nawiasów, czyli dostępnych dla wszystkich ; c) lokalnych, tzn. takich które sama powołała do życia W naszym przypadku: a) forsa to przekazana wartość kasy, b) stała tekstowa OSOBY jest zdefiniowana poza wszystkimi nawiasami, a więc może być także używana wewnątrz funkcji, c) temp to lokalna zmienna funkcji. 5) Wewnętrzne nazwy zmiennych, których używa funkcja, mogą być różne niż nazwy zmiennych, których wartości przekazano do funkcji. Pierwsze z nich są nazwami formalnymi a drugie nazwami wywołania. W naszym przykładzie możemy do funkcji wzor() przekazać wartość budżetu dowolnej rodziny, tzn. kasę1, kasę2 lub kasę3. Wewnątrz funkcji ta wartość zawsze będzie nazywana forsą. Oznacza to, że można wywoływać funkcję dla różnych danych. Funkcję piszemy raz, a używamy wielokrotnie. Prowadzi to do tzw. programowania strukturalnego (modułowego): program główny to pień, z którego wchodzimy do konarów - funkcji pomocniczych (z których możemy zagłębiać się dalej do dalszych gałęzi bocznych, czyli pod-funkcji). */
13 /* Przyklad 1 - ver. 4 - funkcja zlozona wieloargumentowa */ #include <stdio.h> #define OSOBY 3 void wzor( float forsa, float *osoba1, float *osoba2, float *osoba3 ); /* program glowny */ main() float kasa; float tata, mama, ja; printf(" ile do podzialu? "); scanf("%f", &kasa); // wywołanie funkcji wzor( kasa, &tata, &mama, &ja ); // wartość kasy // adres do taty, mamy i do mnie printf("tata = %7.3f, mama = %7.3f, ja = %7.3f \n", tata, mama, ja); return(0); /* funkcja wlasna - pomocnicza */ void wzor( float forsa, float *osoba1, float *osoba2, float *osoba3 ) float srednia; /* wewnetrzna zmienna pomocnicza */ srednia = forsa/osoby; *osoba1 = 1.25 * srednia; *osoba2 = 1.00 * srednia; *osoba3 = 0.75 * srednia;
14 /* OPIS PROGRAMU 1) Nie jesteśmy już egoistami. Interesuje nas teraz także kieszonkowe taty, mamy, a nie tylko własne. 2) W związku z czym deklarujemy trzy zmienne typu float: tata, mama, ja. 3) Do funkcji wzor() przekazujemy adresy w pamięci do tych zmiennych: &tata, &mama, &ja. 4) Wewnątrz funkcji adresy te oznaczone jako: osoba1, osoba2, osoba3. Pisząc float *osoba1, mówimy: wartość pod adresem osoba1 jest liczbą typu float. Czyli mówimy, że osoba1 jest wskaźnikiem pokazującym na liczbę typu float. 4) Wewnątrz funkcji wyliczamy co trzeba i podstawiamy wynik pod adresy przekazane podczas wywołania funkcji, np.: *osoba1 = 1.25*srednia, czyli wartość pod adresem osoba1 ma być równa 1.25*srednia; tzn. podstaw wartość 1.25*srednia pod adres osoba1. 5) Teraz możemy pisać funkcje wieloargumentowe: wzor(a, b, c, &x, &y, &z) - wartości (kopie) zmiennych a, b,c, adresy do zmiennych x, y, z - funkcja nie może zmienić wartości zmiennej, której kopię otrzymała; może z niej tylko skorzystać; - funkcja może korzystać i zmieniać wartości zmiennych, których zna adres w pamięci */
15 /* Przyklad 1 ver. 5 - tablice, for, if */ #include <stdio.h> #define OSOBY 3 // void = funkcja nic nie void wzor( float forsa, float czlonkowie[] ); // zwraca poprzez return // przekazanie tablicy /* program glowny */ main() float kasa; float rodzina[ OSOBY ]; char *imiona[ OSOBY ] = "tata", "mama", "ja"; int i; printf( "\n" ); printf( "ile do podzialu?" ); scanf( "%f", &kasa ); wzor( kasa, rodzina ); for( i=0; i<osoby; i++ ) printf( "osoba nr %d, czyli %s = %7.3f \n", i, imiona[i], rodzina[i] ); if ( rodzina[1] > rodzina[2] ) // >, >=, <, <=, ==,!= printf( "Jakis kant! Mam za malo! \n" ); else printf( "Jest dobrze! \n" ); printf( "\n" ); return(0);
16 /* funkcja wlasna - pomocnicza */ void wzor( float forsa, float czlonkowie[] ) float srednia; /* wewnetrzna zmienna pomocnicza */ srednia = forsa/osoby; czlonkowie[0] = 1.25 * srednia; czlonkowie[1] = 1.00 * srednia; czlonkowie[2] = 0.75 * srednia; /* OPIS PROGRAMU 1) void wzor() - oznacza, że funkcja nic nie zwraca poprzez return. 2) void wzor( float forsa, float czlonkowie[] ) - do funkcji jest przekazana wartość zmiennej forsa oraz tablica czlonkowie[] liczb typu float; Tablica jest blokiem wartości liczbowych tego samego typu zapisanych w pamięci jedna za drugą. Przekazanie tablicy, to przekazanie adresu do początku tego bloku komórek pamięci. 3) float rodzina[ OSOBY ] - deklaracja tablicy 3-elementowej (gdyż OSOBY = 3), czyli trzech liczb zmiennoprzecinkowych typu float umieszczonych w pamięci jedna za drugą, jako jeden wspólny blok danych, oraz oznaczanych jako: rodzina[0], 0 - zerowe przesunięcie w stosunku do początku bloku rodzina[1], 1 - przesunięcie o szerokość jednej liczby typu float od początku bloku rodzina[2], 2 - przesunięcie o szerokość dwóch liczb typu float od początku bloku PRZYKŁAD: int a[3]; a[0] = 1; a[1] = 10; a[2] = a[0] + a[1]; 4) char *imiona[ OSOBY ] = "tata", "mama", "ja"; Deklaracja 3-elementowej tablicy adresów do łańcuchów znaków (tekstów, napisów) oraz równoczesna inicjalizacja wartości znajdujących się pod tymi adresami, czyli zapisanie do pamięci pod przydzielone adresy następujących słów: tata, mama, ja. 5) wzor( kasa, rodzina ) - wywołanie funkcji wzor() oraz przekazanie do niej wartości (kopii) zmiennej kasa oraz adresu do początku bloków komórek pamięci, w których jest przechowywana tablica rodzina, czyli trzy liczby typu float: rodzina[0], rodzina[1], rodzina[2]. Wewnątrz funkcji tablica rodzina nosi nazwę członkowie. Ponieważ adres początkowy bloku komórek pamięci jest ten sam, dlatego: czlonkowie[0] = rodzina[0] czlonkowie[1] = rodzina[1] czlonkowie[2] = rodzina[2] Wyliczone wartości kieszonkowe są podstawiane w następujący sposób: czlonkowie[0] = 1.25 * srednia; i tak dalej
17 6) Instrukcja sterująca for: for( inicjalizacja1, warunek2, operacja4 ) zbiór instrukcji 3 Kolejność: a) dokonaj inicjalizacji1 b) sprawdź warunek2 c) jeśli jest prawdziwy, to wykonaj zbiór instrukcji 3; w przeciwnym wypadku KONIEC instrukcji for d) wykonaj operację4 e) skocz do punktu b) W naszym programie dla kolejnych wartości 0, 1, 2 zmiennej i są wypisywane wartości tablic imiona[i] oraz rodzina[1], czyli: osoba nr 0, czyli tata = osoba nr 1, czyli mama = osoba nr 2, czyli ja = ) Instrukcja sterująca if: if ( warunek ) if ( warunek ) wersja zbiór instrukcji A zbiór instrukcji A uproszczona else zbiór instrukcji B Kolejność: a) sprawdź warunek b) jeśli jest prawdziwy, to wykonaj zbiór instrukcji A c) w przeciwnym przypadku, wykonaj zbiór instrukcji B W naszym programie: ponieważ rodzina[1] > rodzina[2] ( > ) dlatego na monitorze zostanie wyświetlony napis Jakiś kant! Mam za mało!. Złożony warunek logiczny: AND (warunek1 && warunek2) np. if( (a>1) && (b<2) ) OR (warunek1 warunek 2) np. if( (a>b) (b>c) ) 8) Inne instrukcje sterujące: while( warunek ) do np. int i; i = 10; zbiór instrukcji zbiór instrukcji do while( warunek ) i = i-1; a) sprawdź warunek while( i > 0) b) jeśli jest prawdziwy, a) wykonaj zbiór instrukcji to wykonaj zbiór instrukcji b) sprawdź warunek c) powrót do pkt. a) c) jeśli jest prawdziwy, to powrót do pkt. a) goto ETYKIETA switch( wyrażenie ) np. char c; c = getchar();... case wyrażenie-stałe: instr switch( c ) ETYKIETA: default: case a : printf( a ); break; case b : printf( b ); break; default: printf( NIE a, NIE b ); 9) Operatory bitowe są podobne do operatorów logicznych: AND = & np. c = a & b (AND odpowiadających sobie bitów liczb a, b) OR = np. c = a b (OR...) XOR = ^ np. c = a ^ b (XOR...) Przesuniecie bitowe liczby: >> - w prawo np. b = a >> 1 (przesuń bity liczby a o 1 bit w prawo, b 2x mniejsze) << - w lewo np. b = a << 1 (przesuń bity liczby a o 1 bit w lewo, b 2x większe) np. c = a << b (przesuń bity liczby a o b bitów w lewo) */
18 /* Przyklad 1 ver. 6 - wartości argumentów z linii wywolania */ /* Uruchomienie programu: c1_6 <liczba> <Enter> */ /* np.: c1_ <Enter> */ #include <stdio.h> #include <stdlib.h> #define OSOBY 3 void wzor( float forsa, float czlonkowie[] ); // funkcja obliczająca /* program glowny */ main(argc, argv) /* argc to liczba parametrów, u nas argc = 2 */ int argc; /* parametr 1 - argv[ 0 ] = nazwa programu */ char *argv[]; /* parametr 2 - argv[ 1 ] = wartość kasy */ float kasa; float rodzina[ OSOBY ]; char *imiona[ OSOBY ] = "tata", "mama", "ja"; int i; if (argc < 2) // sprawdzenie liczby argumentów, // powinny być dwa printf("\n Blad! Wywolanie programu: c1_6 <liczba> \n"); return(0); // konwersja łancucha znaków ASCII kasa = atof( argv[ 1 ] ); // na liczbę typu float i podstawienie do kasy printf( "\n kasa = %7.3f \n", kasa ); wzor( kasa, rodzina ); printf( "\n" ); // nowa linia na monitorze for( i=0; i<osoby; i++) printf( "osoba nr %d, czyli %s = %7.3f \n", i, imiona[i], rodzina[i] ); // nowa linia na monitorze return(0);
19 /* funkcja wlasna - pomocnicza */ void wzor( float forsa, float czlonkowie[] ) float srednia; // wewnętrzna zmienna pomocnicza srednia = forsa/osoby; *czlonkowie++ = 1.25 * srednia; // podstaw, zwiększ wskaźnik *czlonkowie++ = 1.00 * srednia; // podstaw, zwiększ wskaźnik *czlonkowie = 0.75 * srednia; // podstaw /* OPIS PROGRAMU Wprowadzanie wartości parametrów bezpośrednio z linii wywołania jest bardzo często stosowane (na niebiesko - nazwa programu, na czerwono - parametr zawsze wprowadzany jako sekwencja znaków ASCII): edit program.c gcc program.c Przykładowo w programach c9_3.c, c9_4.c oraz c9_5.c wprowadza się w ten sposób parametry nagrywania zbiorów dźwiękowych typu WAVE: c9_5 <nazwa.wav> < 44/32/24/22/16/11/8 > < s/m > < 16/8 > czestotliwości liczba próbkowania bitow nazwa w khz zbioru Mono wave Stereo np. c9_5 test.wav 44 s 16 = zbiór test.wav, 44 khz, stereo, 16 bitów Ponieważ parametry są wprowadzane jako sekwencja znaków ASCII, muszą być potem zamienione na zmienną określonego typu: i = atoi( argv[ 1 ] ); f = atof( argv[ 2 ] ); // ASCII to integer // ASCII to float */
20 /* Przyklad 1 ver. 7 - wartości argumentów ze zbioru */ #include <stdio.h> #include <stdlib.h> #define OSOBY 3 void wzor( float forsa, float czlonkowie[] ); /* program glowny */ main() FILE *FileIn, *FileOut; // deklaracja uchwytów FileIn, FileOut // do zbiorów float kasa; float rodzina[ OSOBY ]; char *imiona[ OSOBY ] = "tato", "mama", "ja"; int i; // przyporządkuj zbiory do uchwytów FileIn = fopen( "we.dat", "r"); // otwórz zbior we.dat do czytania FileOut = fopen( "wy.dat", "w"); // otwórz zbior wy.dat do zapisu fscanf( FileIn, "%f", &kasa); // przeczytaj ze zbioru (uchwyt FileIn) fprintf( FileOut, "kasa = %7.3f \n", kasa ); // zapisz do zbioru (FileOut) wzor( kasa, rodzina ); // oblicz ile komu for( i=0; i<osoby; i++) fprintf( FileOut, " %s = %7.3f \n", imiona[i], rodzina[i] ); // zapisz fclose( FileIn ); fclose( FileOut ); // zamknij zbior (uchwyt FileIn), czyli we.dat // zamknij zbior (uchwyt FileOut), czyli wy.dat return(0); /* Kolejność: 1) zdefiniuj uchwyty do zbiorów, 2) otwórz odpowiednie zbiory do czytania ( r ), pisania ( w ), czytania & pisania ( rw ) i przyporządkuj je do uchwytów, 4) czytaj ze zbiorów i zapisuj do zbiorów, 5) zamknij zbiory */
21 /* Przykład 1 ver. 8 - struktury, czyli zmienne złożone */ #include <stdio.h> #define OSOBY 3 // DEKLARACJA STRUKTURY osoba struct osoba // Przykład inicjalizacji zmiennej "x" o tej strukturze char imie[10]; // struct osoba x; // deklaracja typu x float kieszonkowe; // strcpy( x.imie, "tata"); // imienia x ; // x.kieszonkowe = ; // kieszonkowego x void wzor( float forsa, struct osoba iksinscy[] ); // program główny main() // tablica zmiennych o strukturze osoba float kasa = ; // kowalscy[0].imie struct osoba kowalscy[ OSOBY ]; // kowalscy[0].kieszonkowe char *imiona[ OSOBY ] = "tata", "mama", "ja"; int i; for( i=0; i<osoby; i++ ) // To samo prościej: // kowalscy[0].imie = imiona[0]; strcpy( kowalscy[i].imie, imiona[i] ); // kowalscy[1].imie = imiona[1]; // kowalscy[2].imie = imiona[2]; wzor( kasa, kowalscy ); // wywołanie funkcji liczącej kieszonkowe for( i=0; i<osoby; i++) // wydruk kieszkonkowego członków rodziny printf("osoba %d, czyli %s = %7.3f \n", i, kowalscy[i].imie, kowalscy[i].kieszonkowe); getchar(); return(0);
22 // funkcja własna - pomocnicza void wzor( float forsa, struct osoba iksinscy[] ) float srednia; // wewnętrzna zmienna pomocnicza srednia = forsa/osoby; iksinscy[0].kieszonkowe = 1.25 * srednia; iksinscy[1].kieszonkowe = 1.00 * srednia; iksinscy[2].kieszonkowe = 0.75 * srednia; /* OPIS PROGRAMU W języku C można definiować zmienne złożone ( wielozmienne ) o złożonej strukturze. struct wielozmienna // deklaracja struktury o nazwie wielozmienna int a; // która się składa z jednej liczby a typu int float b; // jednej liczby b typu float char c; // oraz jednego znaku c ; struct wielozmienna x; x.a = 1; x.b = ; x.c = r ; // deklaracja zmiennej złożonej x typu wielozmienna // inicjalizacja podzmiennej a zmiennej x (int) // inicjalizacja podzmiennej b zmiennej x (float) // inicjalizacja podzmiennej c zmiennej x (char) Wskaźnik (adres) do zmiennych złożonych można przekazywać do funkcji, np. funkcja( &x ); // wywołanie funkcji. przekazanie wskaźnika (adresu) void funkcja( struct wielozmienna *y) // definicja funkcji (*y).a = 1; // inaczej: y->a = 1; (*y).b = ; // inaczej: y->b = ; (*y).c = r // inaczej: y->c = r ; Możemy definiować tablice zmiennych złożonych, np. struct wielozmienna x[10]; x[0].a = 1; x[0].b = ; x[0].c = r ; Stuktury mogą mieć budowę drzewiastą, tzn. jedna struktura może wchodzić w skład innej struktury, np. struktura adres może wchodzić w skład struktur pacjent, student,... itp. struct student struct adres char nazwisko[30]; char miasto[20]; char imie[20]; long kod; struct adres adr; char ulica[40]; int wiek; int numer; int wzrost; long mieszkanie; zm; ; zm.adr.kod = 30059; */
23 /* Przykład 1 ver. 9 - lista dynamiczna członków rodziny */ /* patrz wykład nr 7 i 8 */ #include <stdio.h> #include <stdlib.h> #define OSOBY 3 // DEKLARACJA STRUKTURY osoba struct osoba // Przykład inicjalizacji zmiennej x o strukturze osoba: char imie[10]; // struct osoba x; float kieszonkowe; ; // strcpy( x.imie, "tata"); // inicjalizacja imienia x // x.kieszonkowe = ; // inicjalizacja kieszonkowego x struct wezel struct osoba ktos; // wewnątrz węzła jest zmienna o strukturze osoba struct wezel *nastepny; // oraz adres do następnego węzła ; // np. struct wezel w; // strcpy(w.ktos.imie,"tata"); // w.ktos.kieszonkowe = ; // (*w).nastepny =?; lub w->nastepny =?; // DEKLARACJA WĘZŁA LISTY JEDNOKIERUNKOWEJ typedef struct wezel *ADRwezel; // ADRwezel jest teraz nazwą nowego typu, // czyli adresu węzła void wzor( float forsa, ADRwezel lista ); // deklaracja wywołania funkcji // program główny main() float kasa = ; // deklaracja i inicjalizacja wartości ADRwezel lista, w, w0, w1, w2; // deklaracja 5 adresów węzłów int i; // deklaracja zmiennej pomocniczej // dynamiczna alokacja pamięci dla 3 węzłów w0 = (ADRwezel) malloc( sizeof( struct wezel ) ); w1 = (ADRwezel) malloc( sizeof( struct wezel ) ); w2 = (ADRwezel) malloc( sizeof( struct wezel ) ); lista = w0; // lista = adres pierwszego węzła strcpy(w0->ktos.imie,"tata"); // podstaw imię osoby w węźle 0 strcpy(w1->ktos.imie,"mama"); // podstaw imię osoby w węźle 1 strcpy(w2->ktos.imie,"ja"); // podstaw imię osoby w węźle 2
24 // każdy węzeł, poza ostatnim, pokazuje na węzeł następny w0->nastepny = w1; // węzeł 0 pokazuje na węzeł 1 w1->nastepny = w2; // węzeł 1 pokazuje na węzeł 2 w2->nastepny = NULL; // węzeł 2 na nic nie pokazuje wzor( kasa, lista ); // wywołanie funkcji // nowa linia w = lista; // ustaw wskaźnik na początek listy while( w!= NULL ) // wydruk kieszonkowego printf( "osoba nr %d, czyli %s = %7.3f \n", i, w->ktos.imie, w->ktos.kieszonkowe ); w = w->nastepny; // ustaw wskaźnik na następny węzeł // nowa linia getchar(); // czekaj na znak z klawiatury free( w0 ); free( w1 ); free( w2 ); // zwolnienie pamięci węzłów return(0); // funkcja własna - pomocnicza void wzor( float forsa, ADRwezel w ) float srednia; // wewnętrzna zmienna pomocnicza srednia = forsa/osoby; w->ktos.kieszonkowe = 1.25 * srednia; // kieszonkowe w węźle 0 w = w->nastepny; // adres następnego węzła w->ktos.kieszonkowe = 1.00 * srednia; // kieszonkowe w węźle 1 w = w->nastepny; // adres następnego węzła w->ktos.kieszonkowe = 0.75 * srednia; // kieszonkowe w węźle 2
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoWYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
Bardziej szczegółowoTemat: 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ółowoProgramowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
Bardziej szczegółowoZmienne, stałe i operatory
Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe
Bardziej szczegółowoJęzyki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.
Typy, operatory, wyrażenia. Wejście i wyjście. Typy, operatory, wyrażenia Zmienna: [] [ '[' ']' ] ['=' ]; Zmienna to fragment pamięci o określonym
Bardziej szczegółowoCzęść 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ółowoWYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Bardziej szczegółowoArgumenty 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ółowo1 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ółowoWstę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ółowoWykł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ółowoJęzyk C zajęcia nr 11. Funkcje
Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji
Bardziej szczegółowoProgramowanie 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ółowo2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Bardziej szczegółowoWstę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ółowo1 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ółowoTablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
Bardziej szczegółowoWskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
Bardziej szczegółowowykł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ółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoTemat 1: Podstawowe pojęcia: program, kompilacja, kod
Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,
Bardziej szczegółowoBiblioteka 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ółowoWskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Bardziej szczegółowoPodstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/
Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura
Bardziej szczegółowoJę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ółowoPodstawy 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ółowowykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
Bardziej szczegółowoI - 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ółowoPliki 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ółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowoWstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Dyrektywy preprocesora #include #define Interakcja
Bardziej szczegółowoPliki. 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ółowoProgramowanie I C / C++ laboratorium 03 arytmetyka, operatory
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include
Bardziej szczegółowoStałe i zmienne znakowe. Stała znakowa: znak
Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby
Bardziej szczegółowoFunkcje 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ółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoFunkcje 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ółowoObsł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#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Bardziej szczegółowoStałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
Bardziej szczegółowoPliki. 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ółowoKURS C/C++ WYKŁAD 1. Pierwszy program
KURS C/C++ WYKŁAD 1 Pierwszy program Tworzenie programu odbywa sie w dwóch etapach: 1. opracowanie kodu źródłowego 2. generowanie kodu wynikowego Pierwszy etap polega na zapisaniu algorytmu za pomocą instrukcji
Bardziej szczegółowomain( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!
Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje
Bardziej szczegółowoDr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI
Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku
Bardziej szczegółowoWskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Bardziej szczegółowoPodstawy 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ółowoLaboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH
Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 1 Podstawy Wprowadzenie do programowania w języku C Kraków 2010 Twój pierwszy program w C Program w języku C, jak i w wielu innych językach
Bardziej szczegółowoJęzyk C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop
Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na
Bardziej szczegółowoProgramowanie 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ółowoWykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Bardziej szczegółowo#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
Bardziej szczegółowoProgramowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
Bardziej szczegółowoProgramowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory
Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Pętla while Pętla while Pętla
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowo1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Funkcje w języku C Zasięg zmiennych Przekazywanie
Bardziej szczegółowoOperatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1
Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne
Bardziej szczegółowoUzupeł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ółowoINFORMATYKA 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ółowo1. Wprowadzanie danych z klawiatury funkcja scanf
1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),
Bardziej szczegółowoFunkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Bardziej szczegółowoPascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Bardziej szczegółowoOPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
Bardziej szczegółowoJę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ółowoIX. Wskaźniki.(3 godz.)
Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje
Bardziej szczegółowoISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Bardziej szczegółowoElementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.
Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia
Bardziej szczegółowoProgramowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Bardziej szczegółowoPodstawy 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ółowoProgramowanie 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ółowoProgramowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Bardziej szczegółowoJęzyk C, tablice i funkcje (laboratorium, EE1-DI)
Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoMicrosoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Bardziej szczegółowoDYNAMICZNE 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ółowoWstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami
Bardziej szczegółowoTablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1
Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).
Bardziej szczegółowoLaboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 6: Ciągi znaków mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 17 listopada 2016 1. Wprowadzenie Instrukcja poświęcona jest zmiennym, które służą do przechowywania
Bardziej szczegółowoWskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
Bardziej szczegółowoPodstawy 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Ć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ółowoPodstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Bardziej szczegółowoWstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami
Bardziej szczegółowoiii. b. Deklaracja zmiennej znakowej poprzez podanie znaku
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 5. Stałe i zmienne znakowe. Tablice. Wskaźniki do tablic. Operacje na wskaźnikach. Instrukcja switch, case. Wyrażenie przecinkowe. Funkcje
Bardziej szczegółowotablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Bardziej szczegółowo/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>
Szablon programu: /* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include /* opcjonalne: deklaracja typów o rozmiarze jednego i dwóch
Bardziej szczegółowoMikrokontroler ATmega32. Język symboliczny
Mikrokontroler ATmega32 Język symboliczny 1 Język symboliczny (asembler) jest językiem niskiego poziomu - pozwala pisać programy złożone z instrukcji procesora. Kody instrukcji są reprezentowane nazwami
Bardziej szczegółowoWprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
Bardziej szczegółowoGrzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoWstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.
Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy
Bardziej szczegółowoWykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Bardziej szczegółowoZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
Bardziej szczegółowoInstrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory
Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.
Bardziej szczegółowoLaboratorium 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ółowoZmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
Bardziej szczegółowoPodstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!
Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Krzysztof Grudzień kgrudzi@kis.p.lodz.pl! Zbigniew Chaniecki zch@kis.p.lodz.pl 1 program zajęć - wykład Podstawowe pojęcia
Bardziej szczegółowoutworz 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