1 / 35

Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty

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 funkcji. int i, j, k; float X, Y; int F1( int a, int b) { char c1, c2; float B; }

ting
Download Presentation

Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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 funkcji

  2. int i, j, k; float X, Y; int F1(int a, int b) {char c1, c2; float B;} int F2(float Z1, float Z2, char cp) { int A1[15]; long A2[15][15]; float B1, B2, B3;} void main(void) { int m, n, p, q; float V1, V2, V3; long T1[15][15], T2[15][15]; }

  3. zakres globalny : i, j, k, X, Y, F1, F2 zakres lokalny w funkcji F1 : a, b, c1, c2, B zakres lokalny w funkcji F2 : Z1, Z2, cp, A1, A2, B1, B2, B3 zakres lokalny w funkcji main : m, n, p, q, V1, V2, V3, T1, T2

  4. Zasięg deklaracji : te fragmenty programu, w których obowiązuje deklaracja Identyfikator o zakresie globalnym : dowolne miejsceprogramu ( zasięg globalny ) Identyfikator o zakresie lokalnym : zasięg od miejscawystąpienia deklaracji do końca bloku, w którym deklaracja wystąpiła

  5. { int i; ..... {.... int j; .... { z.i int n; ..... z.nz.j } for(int k=0;.. ) { ... } z.k } }

  6. Przesłanianie identyfikatorów : deklaracja lokalna przesłania deklarację globalną int i = 5; // i == 5 int F1 (int n) { int i = 7;// i == 7 return i + n; } int F2 (int m) { return i + m; // i == 5 } voidmain(void) { int k,z,i = 0; // i == 0 k = F1(0); // k == 7 z = F2(0); } // z == 5

  7. Redefinicja identyfikatora w tym samym zakresie : błąd float eps = 0.001; ... double eps = 0.05; // błąd - redefinicja // w zakresie globalnym ... void main(void) { long k1; ... int k1; // błąd - redefinicja // wzakresie lokalnym ... }

  8. Dostęp do obiektów globalnych const int max = 15750; // zakres globalny int MAX(int TAB[ ], int rozmiar) { int max = TAB[0]; // zakres lokalny for (int i = 1 ; i < rozmiar ; ++i) if (::max > TAB[i] && // zakres globalny max < TAB[i]) // zakres lokalny max = TAB[i]; // zakres lokalny return max; // zakres lokalny }

  9. Lokalizacja zmiennych ·zmienne statyczne ·zmienne dynamiczne zmienne automatyczne zmienne rejestrowe Zmienne statyczne (ustalona wartość początkowa) : zmienne o zakresie globalnym zmienne lokalne poprzedzone słowem static

  10. int Licznik(void) { staticint ct = 0; return++ct; } int numer; numer = Licznik(); // numer == 1 .................. numer = Licznik(); // numer == 2 .................. numer = Licznik(); // numer == 3

  11. Zmienne dynamiczne : na stosie programu auto register registerint i, rozmiar; for (i = 0; i < rozmiar; ++i) T[i] = i; struct lista { int cecha; lista *nastepny; }; int Sprawdz(register lista *wsk, int wzor) { while (wsk != NULL) { if (wsk->cecha == wzor) return 1; wsk = wsk->nastepny; } return 0; }

  12. Pliki dyskowe Plik dyskowy : ciąg pozycji bajtowych z jedną pozycją aktualną Zapis lub odczyt danych : zawsze od pozycji aktualnej, przesunięcie tej pozycji w kierunku końca pliku oliczbę przeczytanych lub zapisanych bajtów Otwarcie pliku : wskaźnik pliku FILE* Zamknięcie pliku

  13. 32H 35H 20H 19H 0H 0H 0H • ·pliki tekstowe i binarne • => • - plik tekstowy • - plik binarny

  14. #include <stdio.h> 3 grupy funkcji : ·fopen, fclose, fcloseall : otwieranie i zamykanie plików ·ftell, fseek, rewind, feof: ustalanie aktualnejpozycji pliku, wykrywanie końca pliku ·fread, fwrite, fgetc, fputc, fgets, fputsfscanf, fprintf : odczyt i zapis danych

  15. fopen D. FILE* fopen(constchar* nazwa, constchar* tryb); F. Otwarcie pliku ”nazwa” tryb : r : odczyt istniejącego pliku w : utworzenie pliku do zapisu a : zapis na końcu istniejącego pliku r+ : zapis lub odczyt istniejącego pliku w+ : utworzenie pliku do zapisu i odczytu a+ : zapis lub odczyt na końcu istniejącego pliku dodatkowo t : plik tekstowy b : plik binarny

  16. W. Wskaźnik pliku lub NULL P. #include <stdio.h> void main(void) { ... FILE *spis; spis = fopen("SPIS.TXT","rt+")); if (spis== NULL) printf("\nNie można otworzyć pliku."); ... }

  17. fclose D. int fclose ( FILE *plik ) ; F. Zamknięcie pliku W. 0 lub EOF P. #include <stdio.h> void main(void) { ... FILE *personel = fopen ( "PER.TXT", "rt" ); ... fclose ( personel ); ... }

  18. fcloseall D. int fcloseall ( void ) ; F. Zamkniecie wszystkich otwartych plików dyskowych W. Liczba zamkniętych plików lub EOF

  19. fseek D. int fseek (FILE *plik, long pozycja, int cel); F. Ustalenie aktualnej pozycji pliku cel : SEEK_SET - początek pliku, SEEK_CUR - aktualna pozycja pliku SEEK_END - koniec pliku pozycja : +/- , od 0, można poza koniec pliku W. 0 : poprawnie, !0 : błąd

  20. P. #include <stdio.h> void main(void) { ... long pp; FILE *opis = fopen("OP1.DOC","rt+"); fseek(opis, 0L, SEEK_END); ... // zapis na końcu pliku fseek(opis, 0L, SEEK_SET); ... // zapis na początku pliku pp = 15453l; fseek(opis, pp, SEEK_CUR); ... // odczyt z pliku ... }

  21. rewind D. void rewind ( FILE *plik ); F. Ustalenie aktualnej pozycji na początku pliku P. #include <stdio.h> void main(void) { ... FILE *roboczy = fopen("R1.DAT","rt+"); fseek(roboczy, 0L, SEEK_END); ... // zapis na końcu pliku rewind(roboczy);// początek pliku ... }

  22. feof D. int feof ( FILE *plik ); F. Odczyt stanu znacznika końca pliku W. !0 : napotkano EOF, przeciwnie 0 P. #include <stdio.h> void main(void) { ... FILE *plik1 = fopen("P1.MAN","rt"); ... // odczyt z pliku if (feof(plik1)!= 0) printf("\nKoniec pliku."); ... }

  23. fgetc D. int fgetc ( FILE *plik ); F. Odczyt kolejnego znaku W. Liczba całkowita 000| kod_znaku P. #include <stdio.h> void main(void) { ... char cc; FILE *info = fopen("INF.DOC","rt"); cc = fgetc(info); ... }

  24. fputc D. int fputc ( int znak, FILE *plik ) ; F. Zapis kolejnego znaku (liczba całkowita : 000| kod) W. znak lub EOF P. #include <stdio.h> void main(void) { ... char cc = 'K'; FILE *dane = open("DANE.DOC","rt+"); ... fputc(cc, dane); ... }

  25. fgets D. char* fgets ( char *napis, int liczba, FILE *plik) ; F. Odczyt ciąg znaków, maksymalnieliczba-1 znaków W. napis lub NULL P. #include <stdio.h> void main(void) { ... char nazwisko[16]; FILE *teczka = fopen("TECZ.DOC","rt"); fgets(nazwisko, 16, teczka); ... }

  26. fputs D. int fputs ( char *napis, FILE *plik ); F. Zapis ciągu znaków W. Ostatni zapisany znak lub EOF P. #include <stdio.h> void main(void) { ... char *spis = "Spis treści"; FILE *dok = fopen("DOK1.DOC","rt+"); fputs(spis, dok); ... }

  27. fscanf D. int fscanf(FILE *plik, const char *format,wskaźnik, wskaźnik, ...); F. Odczyt ciągów znaków i konwersji na wartości binarne (podobnie jak scanf) W. Liczba wczytanych ciągów znaków lub EOF

  28. P. #include <stdio.h> void main(void) { ... int sztuki; float cena; FILE *towar = fopen("SPIS_TOW.DOC","rt"); ... fscanf(towar, "%d%f", &sztuki, &cena); ... }

  29. fprintf D. int fprintf ( FILE *plik, constchar *format, wyrażenie, wyrażenie, ...); F. Zapis ciągów znaków zadanych za pomocą wyrażeń (podobnie jak printf) W. Liczba zapisanych bajtów lub EOF

  30. P. #include <stdio.h> void main(void) { ... int kod_waluty = 15; float kurs_biezacy = 0.23547; FILE *tabela_kursow = fopen("KURSY.TAB","wt"); ... fprintf(tabela_kursow, "\n%3d\t%8.3f", kod_waluty, kurs_biezacy); ... }

  31. fread D. int fread (wskaźnik, int rozmiar, int liczba, FILE *plik); F. Odczytanie zadanej liczby struktur danych,każda o długości rozmiar W. Liczba odczytanych struktur lub 0

  32. P. #include <stdio.h> void main(void) {... struct ksiazka { char autor[25]; char tytul[50]; } ksiazki[100]; ... FILE *magazyn = fopen("MAG.DOC","rt"); fread(ksiazki, sizeof(ksiazka), 100, magazyn); ... }

  33. void main(void) { int liczba_odczytow; structpozycja { doublewspolrzedne[2]; double wysokosc; } marszruta[1000]; ... FILE *wycieczka = fopen("W1.DAT","rb"); fread(&liczba_odczytow, sizeof(int), 1, wycieczka); fread(marszruta, sizeof(pozycja), liczba_odczytow, wycieczka); ... }

  34. fwrite D.int fwrite ( wskaźnik, int rozmiar, int liczba, FILE *plik ); F. Zapis wskazanej liczby struktur danych o długości rozmiar W. Liczba zapisanych struktur lub 0

  35. P. #include <stdio.h> void main(void) { ... long double pomiary[wie][kol]; ... FILE *archiwum = fopen("ARCH.TAB","wb"); fwrite(pomiary, sizeof(pomiary), 1, archiwum); ... } PaNiePa, Split, BookCode, BitMap

More Related