Argumenty wywołania programu, operacje na plikach

Podobne dokumenty
Programowanie w językach wysokiego poziomu

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Zmienne, stałe i operatory

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki. Informacje ogólne. Obsługa plików w języku C

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

7 Przygotował: mgr inż. Maciej Lasota

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Część 4 życie programu

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Pliki. Informacje ogólne. Obsługa plików w języku C

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Język C zajęcia nr 11. Funkcje

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Funkcje zawarte w bibliotece < io.h >

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

5 Przygotował: mgr inż. Maciej Lasota

Funkcje zawarte w bibliotece < io.h >

Wskaźniki. Informatyka

Wstęp do Programowania, laboratorium 02

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Biblioteka standardowa - operacje wejścia/wyjścia

I - Microsoft Visual Studio C++

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

wykł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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Lab 9 Podstawy Programowania

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Rozdział 4 KLASY, OBIEKTY, METODY

Tablice, funkcje - wprowadzenie

Wstęp do wskaźników w języku ANSI C

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Wstęp do programowania 1

Programowanie Proceduralne

Ćwiczenie nr 8. Temat: Operacje na plikach - zapis i odczyt danych.

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

Tablice wielowymiarowe. Przykład tablica 2-wymiarowa. Przykład. Przykład 3-wymiarowy. Tak naprawdę nie istnieją w C! Rozważmy tablicę o rozmiarze 3x2

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Ćwiczenie 1. Wprowadzenie do programu Octave

1 Podstawy c++ w pigułce.

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy programowania w języku C++

Podstawy Kompilatorów

Programowanie Procedurale. Pliki w języku C++

do instrukcja while(wyrażenie);

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Wprowadzenie do programowania i programowanie obiektowe

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

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

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Programowanie strukturalne język C

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Ćwiczenie 1. Wprowadzenie do programu Octave

Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (instrukcja wyboru: switch)

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

while(wyrażenie) instrukcja

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Języki i metodyka programowania. Wprowadzenie do języka C

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Pliki. Operacje na plikach w Pascalu

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.

Transkrypt:

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ą o tym tzw. klasy pamięci. Zdefiniowano 4 klasy pamięci: 1. auto (klasa automatyczna) Zmienne automatyczne widoczne są tylko wewnątrz bloku, w którym są utworzone (blok to fragment programu zawarty pomiędzy nawiasami: ). Tworzone są zawsze w momencie wchodzenia do bloku, a niszczone po wyjściu z bloku. Przykładami zamiennych automatycznych są zmienne deklarowane jako zmienne pomocnicze wewnątrz funkcji. Można jawnie deklarować zmienną jako automatyczną: auto int a; 2. static (klasa statyczna) Zmienne statyczne widoczne są również tylko wewnątrz bloku, ale tworzone są tylko raz, a ich wartość po wyjściu z bloku jest zachowywana. Jeśli zadeklarujemy zmienną globalną jako statyczną, to ograniczamy jej zasięg tylko do jednego pliku. Zmienną statyczną powołujemy przy pomocy słowa kluczowego static, np.: static int a=5; 3. extern (klasa zewnętrzna) Deklarując zmienną jako zewnętrzną informujemy, że będzie ona widoczna w całym programie we wszystkich plikach. 4. register (klasa rejestrowa) Zmienna rejestrowa, jeśli jest to możliwe, umieszczana jest w rejestrach procesora w celu przyspieszenia obliczeń. Nie można się do niej odwołć przez adres (wskaźnik). Przykładowa deklaracja zmiennej może mieć postać: register int a=5; Przykładowy program ilustruje zastosowanie zmiennych statycznych: Zadanie 1. Dany jest program: void licznik_static(void); void licznik(void); void main(void) int k; for(k=0;k<5;k++) licznik_static(); for(k=0;k<5;k++) licznik();

void licznik_static(void) static int i=0; i++; printf( %d\n,i); void licznik(void) int i=0; i++; printf( %d\n,i); Porównać i wyjaśnić wyniki działania funkcji licznik i licznik_static. Należy zwrócić uwagę na zastosowanie i interpretowanie przez program zmiennej statycznej. Zagadnienie 2. (Tablica wskaźników na teksty) Do przechowywania zestawu informacji tekstowych w programie można posługiwać się albo dwuwymiarowymi tablicami znakowymi: char dane[13][20]= // można przechować 20 tekstów do 80 znaków każdy bledny miesiac, styczeń, luty, marzec, kwiecen, maj, czerwiec, lipiec, sierpień, wrzesien, pazdziernik, listopad, grudzień ;,albo tablicami wskaźników na teksty: char* name[]= bledny miesiac, styczeń, luty, marzec, kwiecen, maj, czerwiec, lipiec, sierpień, wrzesien, pazdziernik, listopad, grudzień ; Stosowanie tablicy wskaźników oszczędza ilość pamięci przeznaczonej na informacje. Zadanie 2: Dany jest program: char* month_name(int n) static char* name[]= bledny miesiac, styczeń, luty, marzec, kwiecen, maj, czerwiec, lipiec, sierpień, wrzesien, pazdziernik, listopad, grudzień ; return (n<1 n>12)? name[0]:mname[n] void main(void) int nr_miesiaca; char *s;

printf("podaj numer miesiaca:"); scanf("%d",&nr_miesiaca); s=month_name(nr_miesiąca); printf("miesiac o numerze %d to %s",nr_miesiaca,s); Uruchomić program Wyjaśnić wynik działania programu Zwrócić uwagę na: - sposób deklarowania i odwoływania się do tablicy wskaźników na tekst - zastosowanie operatora? :. Należy znać różnicę pomiędzy dwuwymiarowymi tablicami tekstowymi np.: char tekst_tab1[3][20]="tekst1","tekst2","tekst3"; a tablicami wskaźników na tekst np: char* tekst[3]="tekst1","tekst2","tekst3"; Zagadnienie 3. (Argumenty wywołania programu) Pełna postać wywołania funkcji main w języku C wygląda następująco: int main(int argc, char* argv[]) Funkcja zwraca do systemu operacyjnego wartość całkowitą. Zwrócenie 0 oznacza pomyślne zakończenie działania programu. Funkcja może przyjmować 2 argumenty. Umożliwiają one przesłanie do programu i przetwarzanie serii łańcuchów tekstowych (tak zwanych argumentów wywołania programu) bezpośrednio z linii poleceń systemu operacyjnego. Parametr argc zawiera ilość parametrów przesłanych do programu. Parametr argv jest tablicą wskaźników na teksty zawierające poszczególne parametry przesłane do programu. Pierwszy element tablicy wskaźników pokazuje na nazwę uruchomionego programu. Poniższy program wypisuje na konsoli wszystkie argumenty jakie przesłano do niego: Zadanie 3. Dany jest program: #include <conio.h> int main(int argc, char* argv[]) int i; for(i=0;i<argc;i++) printf("%s %s",argv[i],(i<argc-1)? " ": ""); printf("\n"); getch(); return 0;

Należy przeanalizować i uruchomić program Wykorzystując parametry wywołania programu napisać prosty kalkulator dwuargumentowy. Program powinien przyjmować 3 parametry: liczbę, liczbę i operację, która ma między nimi być wykonana, np.: calc 2 4 + gdzie calc jest nazwa programu a 2 4 + są argumentami jego wywołania. Zadanie nadobowiązkowe: Napisać prosty kalkulator pracujący w odwrotnej notacji polskiej. Odwrotna notacja polska polega na tym, że najpierw podawane są dwie liczby a potem operacja na nich np: calc_pl 2 3 4 + - jest jednoznaczne z wykonaniem operacji 2-(3+4). Zagadnienie 4. (Operacje na plikach) Przetwarzanie plików w języku C odbywa się zawsze w trzech etapach: - otwarcie pliku (funkcja fopen()) - zapis lub odczyt do/z pliku(funkcje fgetc(), fputc(), fscanf(), fprintf()) - zamknięcie pliku (funkcja fclose()). Komunikacja z plikiem odbywa się przez wskaźnik do "uchwytu do pliku": FILE* plik; Pełna postać deklaracji funkcji fopen ma postać: FILE* fopen(char* name, char *mode); Parametr name powinien zawierać ścieżkę dostępu do pliku, który chcemy otworzyć. Parametr mode powinien zawierać tryb, w jakim plik ma być otwarty. Wybrane tryby otwarcia pliku mają postać: "r" - plik będzie otwarty do czytania; "w" - plik będzie otwarty do zapisu, jeśli plik o podanej nazwie istnieje, to zostanie usunięty z dysku, a następnie ponownie utworzony; "a" - plik jest otwarty do dopisywania na końcu. Funkcja fopen w przypadku pomyślnego nawiązania komunikacji z plikiem zwraca wskaźnik na obiekt typu FILE. W przypadku braku pliku funkcja zwraca NULL (0). Funkcje umożliwiające zapis lub odczyt zawartości pliku korzystają z uzyskanego wskaźnika na obiekt typu FILE. Przykładowo odczyt pojedynczego znaku z pliku może się odbywać następująco: plik=fopen("\\autoexec.bat","r"); char c; c=fgetc(plik); Zapis pojedynczego znaku do pliku może odbywać się następująco: plik=fopen("\\tekst1.txt","w"); fputc('a',plik); Możliwy jest również zapis i odczyt danych tekstowych w sposób sformatowany: // odczyt z pliku: plik=fopen("\\dane.txt","r"); float dana; fscanf(plik,"%f",&dana);

//zapis do pliku: plik=fopen("\\dane.txt","w"); float dana=3.4; fprintf(plik,"%f",dana); Przed zakończeniem działania programu, w którym odbywała się komunikacja z plikami dyskowymi należy zamknąć otwarte uprzednio pliki. Służy do tego funkcja: fclose(plik);. Zadanie 4: Należy utworzyć plik tekstowy o nazwie "tekst.txt" Dany jest program wypisujący zawartość zadanego pliku tekstowego: int main(void) FILE* plik; char c; if((plik=fopen("tekst.txt","r"))==null) printf("nie moge otworzyc pliku: tekst.txt"); return(1); while((c=fgetc(plik))!=eof) putchar(c); fclose(plik) return 0; Sprawdzić działanie programu Napisać program, który wykorzystując parametry wywołania programu będzie w stanie wypisywać na ekranie zawartość dowolnie wskazanego pliku tekstowego, np.: wypisz.exe wypisz.c (należy zastosować argumenty wywołania programu) Napisać program, który oblicza średnia arytmetyczną z danych zawartych w pliku tekstowym postaci: 3.5 2.0 4.5 5.0 4.5 3.0 4.0 4.0 (kolejne oceny studenta zapisane są w pliku tekstowym w postaci pojedynczej kolumny liczb). Napisać program, który prosi kolejno użytkownika o podanie danych: imienia, nazwiska i nr telefonu. Podawane dane zapisuje do ustalonego pliku tekstowego w postaci: Jan

Kowalski 2345672 Waldemar Nowak 3345223 Napisać program, który zapisane w poprzednim programie dane odczytuje i wypisuje w postaci tabeli.