ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C klasy pamięci ISO/ANSI C. ISO/ANSI C klasy pamięci. ISO/ANSI C klasy pamięci
|
|
- Agnieszka Urbańska
- 5 lat temu
- Przeglądów:
Transkrypt
1 ISO/ANSI C ostęp o plików ISO/ANSI C ostęp o plików Tryb binarny size_t frea( voi *buffer, size_t size, size_t count, FILE *stream ); size_t fwrite( const voi *buffer, size_t size, size_t count, FILE *stream ); Oczytuje lub zapisuje określoną liczbę porcji anych o/z bufora azywanego przez buffer z/o pliku azywanego przez stream Zwraca liczbę porcji wczytanych/zapisanych. Jeżeli liczba nie zgaza się z zaeklarowaną, to w przypaku oczytu znaczy, że być może w pliku było mniej anych niż się spoziewano, lub wystąpił błą oczytu (należy użyć funkcji feof lub ferror, żeby to rozstrzygnąć) 111 ISO/ANSI C Klasy pamięci Zmienne mogą być efiniowane z moyfikatorami: auto, extern, static auto zmienna lokalna istniejąca tylko w obrębie bloku: tworzona w momencie gy sterowanie wchozi o anego bloku i usuwana gy opuszcza (wszystkie zmienne zaeklarowane w obrębie bloku są z efinicji lokalne, latego tego moyfikatora się nie używa). extern eklaracja zmiennej zefiniowanej w innym pliku (la kou programu, który jest pozielony na pliki) static zmienne statyczne, istniejące w jenym egzemplarzu 113 Czym różnią się zmienne static o globalnych? Zmienne static są wiziane tylko w moule/pliku, w którym zostały zaeklarowane; nie można się o nich owołać z innego pliku za pomocą extern zmienna static zaeklarowana w bloku nie jest usuwana po wyjściu z tego bloku. Po powrocie sterowania o tego bloku wartość zmiennej static jest zachowana 114 zmienne volatile może ulec zmianie bez wiezy programu, np. ponieważ reprezentuje obszar anych bęący po kontrolą interfejsu o urzązenia zewnętrznego, lub gy programujemy wielowątkowo i zmienna pozwala na wymianę informacji mięzy wątkami Kompilator traktują ją jako niewną, tj. prze każym użyciem oczytuje jej wartość z pamięci (a nie np. z cache u), a każa moyfikacja musi zostać wykonana prze przystąpieniem o wykonania następnych instrukcji (żanego przyspieszania wykonania programu przy pomocy potokowego wykonania instrukcji przez zaawansowany procesor, itp.) 115 1
2 zmienne const wartość zmiennej nie może ulec zmianie po jej utworzeniu jest inicjalizowana w momencie jej efiniowania Komentarz na marginesie: moyfikator const wykorzystywany jest również przy eklarowaniu argumentów funkcji la zagwarantowania nietykalności zmiennych poawanych w argumentach wykonania, np.: char *strcpy( char *strdestination, const char *strsource ); Uwaga: typ char* to nie to samo co const char* Pamięć programu Pamięć jest pozielona na cztery segmenty: ane, sterta, stos i ko zmienne globalne ane zmienne statyczne ane zmienne const ko i/lub ane zmienne lokalne (zaeklarowane i zefiniowane w funkcjach) stos zmienne zaeklarowane i zefiniowane w main stos aźniki ane lub stos, w zależności o kontekstu pamięć alokowana ynamicznie sterta ISO/ANSI C Zmienne ynamiczne Zmienne eklarowane w kozie programu są tworzone: w momencie uruchomienia programu (zmienne globalne), lub w momencie wejścia sterowania o bloku instrukcji, w którym zostały zaeklarowane (zmienne lokalne) Zmienne te są ientyfikowane przez nazwy Programista musi przewizieć, ile zmiennych bęzie potrzebował la swojego algorytmu A co robić, jeżeli zarzy się, że programista nie jest w stanie tego przewizieć? 119 Sytuacje, kiey nie wiemy nic wnego o rozmiarze zbioru anych, na którym bęziemy orować: praca na anych z pliku (rozmiar pliku nie jest znany) wczytywanie anych, co o których nie znamy ograniczenia na ilość (wprowazanie faktur, prouktów o cennika) obiór anych z interfejsu zewnętrznego (billingi telefoniczne, w meycynie: pomiary ciągłe stanu pacjenta temratura, tętno, itp.) Algorytm musi być przygotowany na to, że opiero w trakcie ziałania owie się, jaki jest rozmiar anych roboczych i musi umieć opowienio o tego rozmiaru na bieżąco przygotować struktury anych na jego przyjęcie Dynamiczne ostosowanie się programu o anych wejściowych jest możliwe z pomocą zmiennych ynamicznych. Zmienne ynamiczne są tworzone w trakcie ziałania programu za pomocą polecenia alokacji anych. Ich rozmiar może być określony opiero czasie ziałania programu (nie musi być wcześniej znany programiście), a po ich wykorzystaniu, zaalokowany obszar pamięci można zwolnić i z powrotem oać o yspozycji systemowi. Alokowanie zmiennej ynamicznej (<stlib.h> i <malloc.h>): voi* malloc( size_t size ); Funkcja zwraca ares o obszaru pamięci o rozmiarze size. Zwracany typ voi* pozwala na zapisanie wyniku o zmiennej aźnikowej owolnego typu
3 Przykła: char *string1 = malloc( 80 ); if( string1 == NULL ) printf("brak wystarczającej ilości pamięci\n"); else printf("zaalokowano zmienną ynamiczną\n"); Aby zagwarantować przenośność kou, zamiast samemu obliczać całkowity rozmiar pamięci, lepiej wykorzystać funkcję sizeof: string1 = malloc( 80 *sizeof(char) ); Usuwanie zaalokowych zmiennych Kiey zmienna przestaje być potrzebna zaalokowane zasoby pamięci należy zwolnić. voi free( voi *memblock ); Argumentem wywołania jest aźnik na zmienną. Zapominanie o zwalnianiu zaalokowanych zasobów jest typowym błęem, powouje, że w trakcie pracy aplikacji zużywa ona coraz więcej i więcej zasobów. Takie zjawisko jest nazywane wyciekaniem pamięci Usuwanie zaalokowych zmiennych Przykła: char *string1 = malloc( 80 ); if( string1 == NULL ) printf( Brak wystarczającej ilości pamięci\n" ); else { printf( Zaalokowano zmienną ynamiczną\n" ); /* ko programu wykorzystujący zaalokowaną zmienną */ free( string1 ); Rozmiar zaalokowanej pamięci jest zawarty w oatkowym, niewielkim nagłówku ołączonym o obszaru zaalokowanego przez malloc. Dlatego funkcja free nie musi rozpoznawać rozmiaru pamięci o zwolnienia po typie aźnika. Zgubienie aźnika o zmiennej ynamicznej powouje całkowitą utratę kontroli na tą zmienną, ale nie zwalnia zasobów. Przykła z tablicami ynamicznymi: ouble * t1 = malloc(100*sizeof(ouble)); ouble * t2 = malloc(100*sizeof(ouble)); /* zamieniamy się tablicami */ t1 = t2; t2 = t1; /* Bez sensu. Tak się nie robi.. */ /* prawiłowo zamieniamy się tablicami */ ouble *t3; /* tworzymy zmienną pomocniczą t3 */ t3 = t1; t1 = t2; t2 = t3; /* zamieniamy */ Dwuwymiarowe tablice ynamiczne Alokowanie: int i; ouble **t1 = malloc(100*sizeof(ouble*)); for (i=0; i<100; i++) t1[i] = malloc(100*sizeof(ouble)); Zwalnianie: int i; for (i=0; i<100; i++) free( t1[i] ); free( t1 ); Alokowanie i inicjalizacja zerami voi *calloc( size_t num, size_t size ); long *buffer; buffer = calloc( 40, sizeof( long ) ); if (buffer == NULL) { printf( "Can't allocate memory\n" ); exit(1); /* ziałania na zmiennej buffer */ free( buffer );
4 Zmiana rozmiaru zaalokowanego bloku voi *realloc(voi *memblock, size_t size); long *buffer; buffer = malloc( 1000 * sizeof( long ) ); if (buffer == NULL) exit( 1 ); /* Realokacja */ buffer = realloc( buffer, 2000 * sizeof( long )); if (buffer == NULL) exit( 1 ); Zwraca ares o tego samego bloku pamięci, jeżeli uało się go rozszerzyć. Zwraca NULL jeżeli poano size=0 a memblock!=null, bąź jeżeli nie uało się rozszerzyć zaalokowanego bloku o żąanych rozmiarów. Jeżeli poano memblock==null, ziała jak zwykły malloc. 128 voi *memcpy( voi *est, const voi *src, voi *memmove( voi *est, const voi *src, Kopiuje z obszaru pamięci azanego przez src liczbę count bajtów o obszaru pamięci azanego przez est memcpy szybsze (różnica wioczna przy wielkich rozmiarach anych kopiowanych po wielokroć) memmove zabezpiecza poprawne ziałanie w przypaku, kiey azane obszary pamięci mogą się częściowo pokrywać 129 voi *memcpy( voi *est, const voi *src, voi *memmove( voi *est, const voi *src, Przykła: char tab[] = "Lorem ipsum olor sit amet, consectetur aipisicing elit"; char*ptab = calloc(100,sizeof(char)); int i = sizeof(tab); /* zwróci rozmiar całej tablicy */ memcpy(ptab,tab, i); /* tak jest szybciej: */ memmove(tab+5,tab, i); /* tak bezpieczniej: */ 130 Dygresja: ziałanie funkcji sizeof( ) la tablic i aźników - Zwraca rozmiar całej tablicy (w bajtach) tylko jeżeli kompilator jenoznacznie ientyfikuje argument jako tablicę: char tab[] = "Zakopane na pokaz"; int i = sizeof(tab); // i = 18 (tablica rozpoznana!) long ouble *ptab = calloc(100, sizeof(long ouble)); ptab[0] = sizeof(ptab); // ptab[0] = 4 ptab[1] = sizeof(*ptab); // ptab[1] = 8 - Jeżeli tablicę przekażemy jako argument wywołania funkcji np.: voi fun(char *w) tj. zostanie przekazana za pomocą argumentu typu aźnik, to sizeof(w) wywołany w kozie funkcji zwróci rozmiar zmiennej aźnikowej 131 Porównanie znaków w wóch buforach: int memcmp( const voi *buf1, const voi *buf2, char first[] = " "; char secon[] = " "; int result = memcmp( first, secon, 19 ); if( result < 0 ) printf( Pierwszy jest mniejszy niż rugi.\n" ); else if( result == 0 ) printf( Pierwszy i rugi są równe.\n" ); else printf( Pierwszy jest większy niż rugi.\n" ); Wyłnienie bufora znakami: voi *memset( voi *est, int c, char buffer[] = To tylko taki mały test memset"; printf( Prze: %s\n", buffer ); memset( buffer, '*', 14 ); printf( Po: %s\n", buffer ); Prze: To tylko taki mały test memset Po: **************mały test memset
5 Rekurencyjne typy anych ISO/ANSI C Zmienne ynamiczne: Rekurencyjne typy anych struct element { ouble ; struct element * ; 135 Rekurencyjne typy anych struct element { ouble ; struct element * ; ; struct element * = malloc(sizeof(struct element)); -> = malloc(sizeof(struct element)); Wskaźników używa się np. o buowy grafów skończonych, rzew, list (jeno- i wukierunkowych) i o manipulacji na nich. Poniżej pokazany jest przykła listy interpretowanej jako graf liniowy zorientowany. struct element { struct Dane_t ane; struct element * ; Lista jest szczególnym przypakiem rekurencyjnego typu anych, w którym przyjmuje się, że: zbiór pusty wierzchołków jest listą, jeśli h jest wierzchołkiem listy, a t jest listą, to para uporząkowana (h,t) jest listą, w której h jest nazywana głową listy, a t ogonem listy. Lista jest szczególnym przypakiem rekurencyjnego typu anych, w którym przyjmuje się, że: zbiór pusty wierzchołków jest listą, jeśli h jest wierzchołkiem listy, a t jest listą, to para uporząkowana (h,t) jest listą, w której h jest nazywana głową listy, a t ogonem listy
6 Głową listy może być zmienna aźnikowa, przechowująca ares pierwszego elementu listy, np.: struct element* gp; // notacja ANSI C element *gp; // notacja C++ Tworzenie nowej listy glowa lub zmienna typu struct, np.: struct element g; element g; // notacja ANSI C // notacja C++ Początek wstawiania W rugim przypaku głowa listy jest jenocześnie pierwszym elementem przechowującym ane Tworzenie nowej listy 1. utwórz aźniki: na głowę listy glowa, oraz na ostatni element listy. 2. while (są ane o wprowazenia) { 1. utwórz nowy element listy 2. jeżeli glowa nie azuje na nic, niech glowa i azują na nowy element. W przeciwnym przypaku niech pole aźnikowe elementu listy azywanego przez azuje na nowy. Następnie zmień tak, aby również azywał na nowy 3. wyłnij anymi zawartość nowego elementu 4. zapisz NULL w polu azującym na następny element listy w nowym elemencie glowa glowa Prze ołączeniem: Po ołączeniu: Przykłaowy program tworzący listę struct film_t { char tytul[80]; int rok; struct film_t *nast; ; struct film_t *, *glowa = NULL; char tytul[80]; int rok; FILE* stream; if( (stream = fon( "filmy.txt", "r" )) == NULL ) exit(1); /* zakłaamy, że w pliku filmy.txt wiersze zawierają tytuł i rok proukcji. Tytuł jest jenym slowem */ fscanf(stream, "%s %i", tytul, &rok); while (!feof( stream )) { if (glowa == NULL) glowa = = malloc(sizeof(struct film_t)); else { ->nast = malloc(sizeof(struct film_t)); = ->nast; strcpy(->tytul,tytul); ->rok = rok; ->nast = NULL; fscanf(stream, "%s %i", tytul,&rok); 144 fclose(stream); 6
ISO/ANSI C klasy pamięci ISO/ANSI C. ISO/ANSI C klasy pamięci. ISO/ANSI C klasy pamięci. Pamięć programu. ISO/ANSI C klasy pamięci
ISO/ANSI C klasy pamięci ISO/ANSI C Klasy pamięci Zmienne mogą być efiniowane z moyfikatorami: auto, extern, static auto zmienna lokalna istniejąca tylko w obrębie bloku: tworzona w momencie gy sterowanie
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
Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku
Tablice w argumentach funkcji Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Przykład: char str[] = abcdef ;... fun(str); // argument faktyczny to id
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
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,
Wskaź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
Wskaź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
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
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;
Struktury. Przykład W8_1
Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla
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
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
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
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
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
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
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
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
dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )
dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int
Struktury czyli rekordy w C/C++
Struktury czyli rekordy w C/C++ Wprowadzenie do programowania w języku C struktury. pola bitowe, unie Struktury (rekordy) są złożonymi zmiennymi, składającymi się z elementów różnych typów zwanych polami,
Wskaź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ą
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Stał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
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ę
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
main( ) 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
Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)
Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych
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
Tablice deklaracja, reprezentacja wewnętrzna
Tablice deklaracja, reprezentacja wewnętrzna Tablica jest zmienną złożoną z elementów tego samego typu. Obejmuje ona ciągły obszar pamięci operacyjnej dokładnie tak duży, aby zmieścić wszystkie jej elementy.
Języki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
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
Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.
1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci
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
Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje
ISO/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
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Tablice 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).
Wprowadzenie do programowania w języku C
Wprowadzenie do programowania w języku C Część piąta Tablice koncepcja, reprezentacja, przetwarzanie Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy KONSTRUKTORY
Inicjalizacja obiektu KONSTRUKTORY Inicjalizacja Przyczyną wielu błędów w programach jest nieprawidłowe zainicjalizowanie zmiennych na początku działania programu. Obiekt zawiera z reguły szereg pól ich
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
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
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
Plik to uporządkowany ciąg danych Dostęp do danych w pliku jest sekwencyjny, tj. istnieje pojęcie elementu aktualnego (tzw. wskaźnika pliku). Możliwy dostęp do danych w pliku jest tylko tam, gdzie wskazuje
Podstawy 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
Lab 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
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Ć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
ISO/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
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia
Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy
Zmienne 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
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
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
Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:
Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:
Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp
Wykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
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
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót
Programowanie 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
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
ZASADY 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.
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
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)
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
Wstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
Wskaź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
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
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
Programowanie i struktury danych
Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie
Tablice, 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
ŁAŃCUCHY W JĘZYKU C/C++
ŁAŃCUCHY W JĘZYKU C/C++ Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem... 74 101 115 116 101 109 32 116 101 107 115 116 101 109 0......
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:
// Potrzebne do memset oraz memcpy, czyli kopiowania bloków
ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using
Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki
Wpisy zaliczeń: 18.02.2011, godz. 12:00, sala 503 Język ANSI C część 11 tablice 2D, alokacja pamięci Jarosław Gramacki Instytut Informatyki i Elektroniki Było: Alokacja pamięci, stos i sterta Stałe, zmienne
Grzegorz 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
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Wprowadzenie do programowania w języku C
Wprowadzenie do programowania w języku C Część szósta Zmienne wskaźnikowe koncepcja, zastosowania, sztuczki i triki Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1D300 017 (studia stacjonarne)
Ję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
Wskaźniki. Przemysław Gawroński D-10, p Wykład 1. (Wykład 1) Wskaźniki / 9
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 1 01.04.2019 (Wykład 1) Wskaźniki 01.04.2019 1 / 9 Outline 1 Literatura 2 Programowanie proceduralne - zarządzanie pamięcią 3 Wskaźniki 4 Tablice a wskaźniki
Zasady programowania Dokumentacja
Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Stałe, tablice dynamiczne i wielowymiarowe
Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej
DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE
DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem ASCII... J e s t e m t e k s t e m \0...
Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)
C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
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ą
Podstawy 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
Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych
Wykład 6_ Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Abstrakcyjny typ danych Klient korzystający z abstrakcyjnego typu danych: o ma do dyspozycji jedynie
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
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
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,