GOSPODARKA PAMIĘCIĄ, STRUMIENIE (i nie tylko)

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

C++ wykład 4 ( ) Przeciążanie operatorów.
Język C/C++ Funkcje.
Funkcje standardowe (1)
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Wskaźniki repetytorium Wskaźniki int Y = 1, X = 2; X = 5; int *p = &X; Y X p 4 4 p = &Y; *p = 4; 5.
Wzorce.
Wprowadzenie.
Systemy rozproszone W. Bartkiewicz
dynamiczny przydział pamięci
Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa.
Struktura programu dyrektywy preprocesora
Funkcje Modularyzacja : program główny , funkcje Funkcje :
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Podstawy informatyki Informatyka stosowana Prowadzący: Grzegorz Smyk
C++ wykład 2 ( ) Klasy i obiekty.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Programowanie w C Wykład 3
PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w
Język ANSI C Operacje we/wy
Programowanie obiektowe W2
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT
Podstawy programowania w języku C i C++
Jerzy F. Kotowski1 Informatyka I Wykład 7 STEROWANIE c.d. n switch n Pętle.
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Informatyka I Wykład 5 OPERATORY Priorytety i kolejność obliczeń
Podstawy programowania w języku C i C++
Informatyka I Wykład 10 WSKAŹNIKI I ADRESY Jerzy F. Kotowski.
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
sortowanie na bazie – wykorzystanie sortowania ze zliczaniem
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład VIII.
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Jerzy F. Kotowski1 Informatyka I Wykład 15 PIERWSZE KROKI.
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT
STEROWANIE Ale nie tylko
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Kurs języka C++ – wykład 3 ( )
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
Kurs języka C++ – wykład 4 ( )
Modele pamięci Tiny - mikroskopijny do 64 K zmienne inicjalizowane kod programu zmienne nie inicjalizowane HEAP (sterta) obszar wolny STACK (stos) Model.
1 Zagadnienia na egzamin. 2 Język C podsumowanie Struktura programu w języku C Zmienne, Stałe Operacje arytmetyczne Operatory logiczne Priorytety operatorów.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
1 Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct.
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Piotr Kawałek , Mateusz Śliwowski
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
PODSTAWY INFORMATYKI Wykład 3.
Kurs języka C++ – wykład 4 ( )
Uzupełnienie dot. przekazywania argumentów
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Przykładowy algorytm geometryczny (geometria płaska)
dynamiczny przydział pamięci
Zapis prezentacji:

GOSPODARKA PAMIĘCIĄ, STRUMIENIE (i nie tylko) Informatyka I Wykład 12 GOSPODARKA PAMIĘCIĄ, STRUMIENIE (i nie tylko) Jerzy F. Kotowski

TROCHĘ TAJEMNIC char A[12]=“Ala ma kota”; kopiowanie Ala ma kota obiekt A[12] char *B=“Ala ma kota”; C[ ] Ala ma kota wskaźnik *B Adres printf(“Ala ma kota”); - argumentem jest adres!! char C[ ]=“Ala ma kota”; - policz sobie sam ?!?! Jerzy F. Kotowski

Uchylanie (rąbka) tajemnicy 12_1 Uchylanie (rąbka) tajemnicy type *ident; Û type ident[ ]; Przykład: double Ula[ ]; Û double *Ula; Użycie identyczne jak w przypadku “prawdziwej” tablicy: Ula[1]; Û Ela[1]; Dodatkowa możliwość: int Ula[ ] = {3,5.3,4.1,-5}; int *Ala = {3,5.3,4.1,-5}; int Ela[4] = {3,5.3,4.1,-5}; Ala++; OK!! Ula++; !!! ERROR Ela++; !!! ERROR Są to konsekwencje wzoru a[i] º *(a + i) Jerzy F. Kotowski

Uchylanie tajemnicy c.d. char s[3][5] = {“Ala”, “ma”, “kota”}; Ala s[0] ma kota s[1] s[2] Kopiowanie do kolejnych wierszy tablicy s char ss[ ][5] = {“Ala”, “ma”, “kota”}; - policz sam!? Alternatywa: char *v[3] = {“Ala”, “ma”, “kota”}; - v jest tablicą wskaźników do obiektów typu char. Ala v[0] ma kota v[1] v[2] Podstawianie adresów do wskaźników Użycie identyczne: v[0][0]=‘E’; v[2][2]=‘s’; Jerzy F. Kotowski

Dynamiczna alokacja pamięci double *p = malloc(100*sizeof(double)); Prototyp w alloc.h i w stdlib.h: void *malloc(size_t size); (...Returns a pointer to the newly allocated block, or NULL if not enough space exists for the new block…) Inne funkcje (wybrane): allocmem farmalloc calloc free Wybór funkcji zależeć może od potrzeb oraz używanego modelu pamięci: Tiny Small Medium Compact Large Huge Jerzy F. Kotowski

Dynamiczna alokacja pamięci - C++ double *p = new double[100]; Składnia: pointer_to_name = new name [name_initializer]; Niesamowicie ważne: The storage duration ot the new object is from the point of creation until the operator delete deallocates its memory, or until the end of the program. To znaczy, że zajęty obszar trzeba koniecznie zwalniać własnymi rękoma: delete(p); new delete - operatory jednoargumentowe (wiadomo jaki prirytet) języka C++ Jerzy F. Kotowski

malloc - free new - delete Przykłady użycia Składnia C: char *Ala = malloc(12); strcpy(Ala,”Ala ma kota); Ala[0]=‘U’; free(Ala); Składnia C++: char *Ala = new char[12]; strcpy(Ala,”Ala ma kota); Ala[0]=‘U’; delete(Ala); Narzędzia muszą być “do pary”, tzn.: malloc - free new - delete Jerzy F. Kotowski

Program info_12_2.cpp 12_2 F-cja void menu(void) oraz void menu(void) Tab. jednowymiarowa void error(char *tekst) Wywołanie funkcji scanf Zwalnianie pamięci Tablica dwuwymiarowa Tablica adresów do wierszy jest automatyczna Można zapomnieć o zwol-nieniu zajętego obszaru Pełne szaleństwo Tablica adresów jest zakładana dynamicznie Nie wolno zapominać o zwalnianiu pamięci - może to być trudne Niech żyje destruktor!!! Zachowanie funkcji scanf przy wprowadza-niu kilku wyrazów. Bufor klawiatury Jerzy F. Kotowski

Strumienie wejściowe i wyjściowe Otoczenie procesora: Wejście klawiatura dysk mysz skaner Wyjście monitor drukarka Strumienie - predefined streams automatically opened when the program is started. stdin standard input device stdout standard output devive stdprn standard printer ………….. nasze własne (np. pliki). Jerzy F. Kotowski

Obsługa strumienia wyjściowego Wprowadzanie do strumienia wyjściowego czym(gdzie, jak, co); int fprintf(FILE *stream, char *format [, arg,…]); fprintf(stdout,”Ala ma kota”); º printf(“Ala ma kota”); fprintf(stdprn,”Ala ma kota”); - wydruk na drukarkę FILE *f = fopen(“Ala.cpp”,”a”); fprintf(f,”Ala ma kota”); fclose(f); Tryby: r w a b t FILE *fopen(const char *filename, const char *mode); Jerzy F. Kotowski

Obsługa strumienia wejściowego Wczytywanie ze strumienia wyjściowego czym(skąd, jak, co); int fscanf(FILE *stream, char *format[, adress,…]); fscanf(stdin,”%d”,&i); º scanf(”%d”,&i); Przykład: char ss[100]; FILE *f = fopen(“dane”,”rt”); fscanf(f,”%s”,ss); fclose(f); Jerzy F. Kotowski

Kilka funkcji do odczytu ze strumieni a z klawiatury w szczególności int getc(FILE *stream); gets one character from a stream int getchar(void); gets character from stdin. It is line buffered. This means it will not return until you press ENTER. int getch(void); int getche(void); (echo) gets character from console. It is line buffered. This means it will not return until you press ENTER. int bioskey(int cmd); Keyboard interface Jerzy F. Kotowski

Kilka przykładów Program inf_12_3.cpp tekst_z_klawiatury czyta bufor klawiatury Odczyt rozpoczyna naciśnięcie ENTER. Pobieranie znaków kończy pobranie znaku ‘char c’ - 2 argument W buforze może coś zostać Program inf_12_4.cpp GetKey - naciśnięte klawisze Można przetestować samemu. #define F1 15104 #define Shift_F1 21504 #define Ctrl_F1 24064 #define Esc 27 ………………………… switch(p) { case F1: ………………. case Ctrl_F1: case Esc: Jerzy F. Kotowski

Merry Christmas and a Happy New Year 2006 Jerzy F. Kotowski