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.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Wstęp do strumieni danych
C++ wykład 2 ( ) Klasy i obiekty.
Język C/C++ Funkcje.
Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Dzisiejszy wykład Wyjątki.
Programowanie obiektowe
Zmienne i Typy.
Wzorce.
Programowanie w języku Visual Basic
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Opisy funkcji Adres strony WWW : html /html_node/libc_528.html.
formatowanie kodu źródłowego
Struktura programu dyrektywy preprocesora
Funkcje Modularyzacja : program główny , funkcje Funkcje :
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
DZIEDZICZENIE · klasy bazowe i klasy pochodne WyświetlAutora( ) Autor
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
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.
Struktury.
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
C++ wykład 2 ( ) Klasy i obiekty.
Ćwiczenie (1) Dostosuj poniższy program do wymogów programu zaliczeniowego #include typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia;
Programowanie w C Wykład 3
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Podstawy programowania PP – WYK3 Wojciech Pieprzyca.
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB6 Wojciech Pieprzyca.
Podstawy programowania PP – LAB4 Wojciech Pieprzyca.
Język ANSI C Operacje we/wy
Wykład 2 struktura programu elementy języka typy zmienne
Programowanie obiektowe W2
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Podstawy programowania
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Podstawy programowania w języku C i C++
Jerzy F. Kotowski1 Informatyka I Wykład 11 STRUKTURY I UNIE.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Podstawy programowania
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
Podstawy programowania w języku C i C++
Jerzy Kotowski Politechnika Wrocławska
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie strukturalne i obiektowe
Podstawy informatyki 2013/2014
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
1 argumenty wiersza poleceń: getopt #include /* getopt2.c getopt2.c */ #include int main(int argc, char *argv[]) { int n; int opt; printf("\n argc=%d\n",argc);
1 struktura #include struct complex {double real; double img; } alfa; struct complex beta={2.0,2.0}, delta; struct complex multi (struct complex x, struct.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
PODSTAWY INFORMATYKI Wykład 4.
Opisy funkcji Adres strony WWW :
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Operacje na plikach w C++
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

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; } 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]; }

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

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

{inti;..... {.... intj;.... { z.i int n;..... z.n z.j } for(int k=0;.. ) {...} z.k }

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 } void main(void) {int k,z,i = 0; // i == 0 k = F1(0); // k == 7 z = F2(0); } // z == 5

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 // w zakresie lokalnym... }

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 }

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

int Licznik(void) { static int ct = 0; return ++ct; } int numer; numer = Licznik(); // numer == numer = Licznik(); // numer == numer = Licznik(); // numer == 3

Zmienne dynamiczne : na stosie programu autoregister register int 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; }

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 o liczbę przeczytanych lub zapisanych bajtów Otwarcie pliku : wskaźnik pliku FILE* Zamknięcie pliku

pliki tekstowe i binarne 25=> - plik tekstowy - plik binarny 32H 35H 20H19H 0H 0H 0H

#include 3 grupy funkcji : fopen, fclose, fcloseall : otwieranie i zamykanie plików ftell, fseek, rewind, feof: ustalanie aktualnej pozycji pliku, wykrywanie końca pliku fread, fwrite, fgetc, fputc, fgets, fputs fscanf, fprintf : odczyt i zapis danych

fopen D. FILE* fopen(const char* nazwa, const char* 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

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

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

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

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

P. #include 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... }

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

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

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

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

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

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

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

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

fprintf D. int fprintf ( FILE *plik, const char *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

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

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

P. #include 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);... }

void main(void) { int liczba _ odczytow; struct pozycja { double wspolrzedne[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);... }

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

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