Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){};

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

Programowanie Wizualne WYKŁAD 4
Klasa listy jednokierunkowej Przekazywanie parametrów do funkcji
Programowanie obiektowe
Programowanie obiektowe
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Języki programowania C++
Standardowe kontrolki (1)
argumenty wiersza poleceń: getopt
formatowanie kodu źródłowego
20/09/ Języki programowania 1 Piotr Górczyński Debugowanie kodu.
GDB Omówienie z przykładami
Jakub Jurkiewicz Mirosław Ochodek Sponsorzy: Debug Jak szukać błędów w Eclipsie?
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Ćwiczenie (1) Dostosuj poniższy program do swojego programy zaliczeniowego. (Plik z programem jest dostępny pod adresem
Ćwiczenie (1) Dostosuj poniższy program do wymogów programu zaliczeniowego #include typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia;
Sprawy organizacyjne 1. Zasady zaliczenia przedmiotu
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Zachodniopomorskie Centrum Edukacyjne Zadanie domowe.
Algorytmy.
#include #include main () { cout
Procesy odrębne –Unikatowy PID ( ) –Zmienne –Zbiory deskryptorów plików –Przestrzeń stosu (lokalne zmienne, wywołania funkcji) –Środowisko –Licznik.
Programowanie obiektowe W2
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Jerzy F. Kotowski1 Informatyka I Wykład 7 STEROWANIE c.d. n switch n Pętle.
Mateusz Antonow. Tekst Obraz Galeria Media Kształty & linie Przyciski & menu Sklep Internetowy Ustawienia Społecznościowe Aplikacje 3. Dodaj.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Moduł sprawdzianów.
Przekazywanie argumentów
Moduł Lojalnościowy. Czyli zatrzymanie klienta przy naszym zakładzie optycznym.
PHP: warunki, pętle, switch, break, continue
Programowanie strukturalne i obiektowe
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Plany zajęć dodatkowych pracownika.
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.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Ujarzmić Worda Agnieszka Terebus.
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Systemy operacyjne (wiosna 2014)
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
Animacje/rożne orientacje slajdów power point 2013
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Pętle Zajęcia 6.
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
EBSCOhost Collection Manager Konto osoby proponującej książki do zakupu Przewodnik support.ebsco.com.
EBSCOhost Collection Manager Konto osoby akceptującej zakupy książek Przewodnik support.ebsco.com.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Switch. Instrukcja switch Składnia instrukcji: switch (wyrażenie){ case wyrażenie_stałe1: ciąg instrukcji dla wariantu 1; break; case wyrażenie_stałe2:
Przewodnik Wyszukiwanie eKsiążek EBSCO.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
Programowanie I Rekurencja.
Bazy CINAHL Wyszukiwanie zaawansowane Przewodnik
Wspomaganie edycji programu ● automatyczne wcięcia ● kolorowanie składni ● dopasowywanie nawiasów ● ukrywanie kodu ( Edit/Outlining ) – #region... #endregion.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Wskaźniki Elżbieta Labocha.
Programowanie obiektowe – zastosowanie języka Java SE
Programowanie I Rekurencja.
dynamiczny przydział pamięci
Zapis prezentacji:

Ćwiczenie (1) Dostosuj poniższy program do potrzeb zdefiniowanych w treści programu zaliczeniowego: #include void dodaj(){}; void edytuj(){}; void usun(){}; void wyszukaj(){}; void zakoncz(){}; int main(int argc, char *argv[]){ int option; while(option!=0){ printf("Wybierz opcję:\n1 - Dodaj kienta\n2 - Edytuj klienta\n3 - Usuń klienta\n"); printf("4 - Wyszukaj klienta\n0 - Zakończ\n"); scanf("%d", &option); switch(option){ case 0: zakoncz(); break; case 1: dodaj(); break; case 2: edytuj(); break; case 3: usun(); break; case 4: wyszukaj(); break; } system("PAUSE"); return 0; }

Debugowanie w środowisku Dev C++ Wykorzystanie opcji debugowania w środowisku Dev C++ wymaga odpowiedniej konfiguracji Linkera. Po wyborze pozycji menu Project\Project Options należy przejść na zakładkę Compiler, a następnie po wybraniu opcji Linker ustawić na Yes wartość parametru Generate debug information". Dev C++ udostępnia kilka opcji pomocnych w debugowaniu kodu. Wszystkie dostępne są w menu Debug. Debugowanie (1)

Ćwiczenie 1.Otwórz dowolny program zrealizowany na poprzednich zajęciach. 2.Wykonaj program w dotychczasowy sposób (Execute\Compile & Run). 3.Ustaw opcje kompilatora jak opisano na poprzednim slajdzie. 4.Ustaw kursor na początku funkcji main i wybierz opcję Debug\Toggle breakpoint. 5.Wybierz opcję Debug\Run to cursor. Rozpoczęło się wykonanie programu, jednak zostało ono zatrzymane na linii, w której ustalono breakpoint. 6.Skorzystaj z opcji Debug\Next step. W ten sposób można przejść do wykonania kolejnej instrukcji. 7.Ustaw breakpoint w dalszej linii i wykorzystaj opcję Debug\Continue. 8.Ustaw breakpoint na wywołaniu własnej funkcji, a gdy sterowanie przejdzie do tej lini skorzystaj z opcji Debug\Step into. Debugowanie (2)

Ćwiczenie 9.Wybierz opcję Debug\Add Watch i wpisz po pojawiającym się okienku nazwę zmiennej wykorzystywanej w programie. 10.Skorzystaj z opcji Debug\Watch Variables. W ten sposób można zobaczyć jaką wartość przyjmuje w danym momencie wykonywania programu zmienna. 11.Dodaj do funkcji main instrukcję cout << argv[1]<<endl; (argv jest drugim parametrem funkcji main). W okienku Debug\Parameters wpisz w górnym polu jakąś wartość i zaobserwuj wynik działania programu. Tabela dostępna w drugim parametrze funkcji main przechowuje parametry przekazywane przy wywołaniu programu z linii komend. Debugowanie (3)

Wskaźniki (1) Wskaźniki służą do wskazywania na zmienne lub obszary pamięci. Deklaracja wskaźnika: nazwa_typu *nazwa_zmiennej; nazwa_typu określa typ zmiennej na jaką może wskazywać wskaźnik. Wskaźnik to nie tylko adres miejsca w pamięci. Zawiera też informację o tym, na jaki typ wskazuje. Wiedza ta może być wykorzystana przy: - interpretowaniu tego, na co pokazuje wskaźnik, - poruszaniu wskaźnika. Przykłady: int *a; short *b; void *c; /*wykorzystywane do wskazywania obszaru pamięci nieokreślonego typu*/

Wskaźniki (2) Przykład: #include int main() { int a; int *b; a = 10; b = &a; //nadanie adresu zmiennej a wskaznikowi b printf("a = %d = %d\n", a, *b); *b = 20; printf("a = %d = %d\n", a, *b); printf("%d\n", b); system("PAUSE"); return 0; }

Tablice (1) Deklaracja tablic: nazwa_typunazwa_tablicy[rozmiar_tablicy] Inicjalizacja tablic: nazwa_typunazwa_tablicy[rozmiar_tablicy] = {wartość_pierwszego_elementu, wartość_drugiego_elementu,...} nazwa_typunazwa_tablicy[] = {wartość_pierwszego_elementu, wartość_drugiego_elementu,..., wartość_ostatniego_elementu}

Tablice (2) Elementy tablicy nazwa_tablicy[numer elementu] Numeracja elementów tablicy zaczyna się od 0. Przekazywanie tablicy do funkcji Deklaracja funkcji: nazwa_typunazwa_funkcji(nazwa_typu nazwa_tablicy[]); Wywołanie funkcji: nazwa_funkcji(nazwa_tablicy);

Tablice (3) Przykład: #include int main() { int vti_a[10]; int vi_i; for(vi_i = 0; vi_i<10; vi_i++){ vti_a[vi_i] = vi_i % 2; } for(vi_i = 0; vi_i<10; vi_i++){ printf("%d. element tablicy to %d\n", vi_i+1, vti_a[vi_i]); } system("PAUSE"); return 0; }

Tablice (4) Tablice wielowymiarowe Deklaracja tablicy dwuwymiarowej: nazwa_typu nazwa_tablicy[rozmiar_1][rozmiar_2]; Przykład: int tab[4][2]; Elementy tablicy tab: tab[0][0], tab[0][1], tab[1][0], tab[1][1], tab[2][0], tab[2][1], tab[3][0], tab[3][1]

Tablice (5) Tablice i wskaźniki Nazwa tablicy jest adresem jej zerowego elementu. Dodanie do wskaźnika liczby całkowitej powoduje, że pokazuje on tyle elementów tablicy dalej. Odjęcie od siebie dwóch wskaźników pokazujących na elementy tej samej tablicy zwraca liczbę dzielących je elementów tablicy.

Tablice (6) Przykład: #include int main() { int vti_a[10]; int vi_i; for(vi_i = 0; vi_i<10; vi_i++){ vti_a[vi_i] = vi_i*10; } printf("3. element tablicy ma wartosc %d\n", *(vti_a+2)); printf("3. element tablicy ma wartosc %d\n", vti_a[2]); system("PAUSE"); return 0; }

Tablice (7) Tablice znakowe Przykład: char nazwisko[30] = {Andrew Golota}; W rezultacie w poszczególnych komórkach tablicy znajdują się następujące znaki: nazwisko[0] = A; nazwisko[1] = n; nazwisko[2] = d;... nazwisko[11] = t; nazwisko[12] = a; nazwisko[13] = NULL;

Tablice (8) Przykład: #include int main() { char tytul[50] = {"Pan Tadeusz"}; char tytul2[50]; printf("Adam Mickiewicz \"%s\"\n", tytul); strcpy(tytul2, "Krzyzacy"); printf("Henryk Sienkiewicz \"%s\"\n", tytul2); system("PAUSE"); return 0; }

Tablice (9) Zadanie 1. Napisz program realizujący mnożenie wprowadzonych przez użytkownika macierzy. Zadanie 2. Napisz program realizujący dodawanie i odejmowanie wprowadzonych przez użytkownika macierzy. Zadanie 3. Napisz program obliczający wyznacznik wprowadzonej przez użytkownika macierzy.

Struktury (1) Struktura to zbiór elementów dowolnych typów. Elementy struktury nazywane są polami. Definicja struktury: struct [nazwa_struktury]{ definicja_pola_1 definicja_pola_2... definicja_pola3 } [nazwa_zmiennej]; Definicja pola struktury ma identyczną składnię jak definicja pojedynczej zmiennej. Nazwa pola jest widoczna tylko wewnątrz struktury. Wprowadzenie nazwy struktury umożliwia późniejszą deklarację zmiennych będących tymi strukturami. Odwoływanie się do pól struktury: nazwa_zmiennej_strukturowej.nazwa_pola

Struktury (2) Przykład: #include struct adres{ char nazwa_ulicy[50]; int nr_domu; int nr_mieszkania; char kod[10]; char miejscowosc[50]; }; int main() { struct adres adres_pracownika1, adres_pracownika2; printf("Ulica: "); scanf("%s", adres_pracownika1.nazwa_ulicy); printf("Nr domu: "); scanf("%d", &adres_pracownika1.nr_domu); printf("Nr mieszkania: "); scanf("%d", &adres_pracownika1.nr_mieszkania);

Struktury (3) adres_pracownika2 = adres_pracownika1; printf("Dane skopiowanej struktury\n"); printf("Ulica: %s\n", adres_pracownika2.nazwa_ulicy); printf("Nr domu: %d\n", adres_pracownika2.nr_domu); printf("Nr mieszkania: %d\n", adres_pracownika2.nr_mieszkania); system("PAUSE"); return 0; }

Unie Unia to zbiór elementów zajmujących ten sam obszar pamięci. Deklaracja: union nazwa_unii{ definicja_pola_1; definicja_pola_2;... definicja_pola_n; } Przykład: union rwd{ short a; int b; char nazwa[20]; } Odwołanie do pól unii: nazwa_unii.nazwa_pola

Wyliczenia (1) Wyliczenia Deklaracja: enum nazwa_typu {nazwa1 = [liczba1],..., nazwaN [= liczbaN]} Przykład: main () enum miesiace{styczen = 1, luty = 2, marzec, kwiecien, maj, czerwiec, lipiec, sierpien, wrzesien, pazdziernik, listopad, grudzien}; int miesiac; scanf("%d", miesiac); case(miesiac){ case styczen: printf("31 dni\n"); break; case luty: printf("28/29 dni\n"); break; case marzec: printf("31 dni\n"); break; //... case grudzien: printf("31 dni\n"); break; }

Wyliczenia (2) Przykład: #include enum miesiac{styczen = 1,luty =2,marzec,kwiecien,maj,czerwiec, lipiec,sierpien,wrzesien,pazdziernik,listopad,grudzien}; int main() { int a; printf("Podaj numer miesiaca: "); scanf("%d",&a); switch(a){ case styczen: printf("31 dni\n"); break; case luty: printf("28/29 dni\n"); break; case marzec: printf("31 dni\n"); break; //... case grudzien: printf("31 dni\n"); break; }; system("PAUSE"); return 0; }

Definiowanie typów Definiowanie typów Definiowanie typów realizuje się za pomocą słowa kluczowego typedef. Przykład: typedef int macierz[10][20]; typedef int* b[10]; macierz A, B; b wskaxniki;

Operacje na tekstach (1) Łączenie tekstów char * strcat(char * tekst_1, char * tekst_2); char * strncat(char * tekst_1, char * tekst_2, rozmiar int); Funkcja strcat zwraca wskaźnik do zmiennej tekst_1. Do wartości zmiennej wskazanej przez tekst_1 zostaje na końcu dołączona wartość zmiennej wskazanej przez tekst_2. Parametr rozmiar pozwala wskazać ile znaków ma zostać skopiowane.

Operacje na tekstach (2) Przykład: #include int main() { char a[20], b[10]; scanf("%s", a); scanf("%s", b); printf("Polaczone teksty: %s\n", strcat(a,b)); system("PAUSE"); return 0; }

Operacje na tekstach (3) Kopiowanie tekstów char *strcpy(char * tekst_docelowy, char * tekst_zrodlowy); char *strncpy(char * tekst_docelowy, char * tekst_zrodlowy, rozmiar int); Funkcja strcpy i strncpy pozwalają skopiować tekst wskazany wskaźnikiem tekst_zrodlowy, do zmiennej wskazanej wskaźnikiem tekst_docelowy. Parametr rozmiar pozwala określić ile znaków ma być skopiowane. Porównywanie tekstów int strcmp(char * tekst_1, char * tekst_2); int strncmp(char * tekst_1, char * tekst_2, rozmiar_int); Funkcja realizuje porównanie dwóch tekstów. Teksty porównywane są od lewej znak po znaku. Jeśli teksty są jednakowe, to funkcja zwraca 0. Funkcja zwraca wartość mniejszą od 0, jeśli tekst_1 jest mniejszy od tekst_2. Funkcja zwraca wartość większą od 0, jeśli tekst_1 jest większy od tekst_2.

Operacje na tekstach (4) Obliczanie długości tekstu size_t strlen(char * tekst); Funkcja zwraca liczbę znaków wskazanego tekstu. Znak \0 nie jest wliczany. Przeszukiwanie tekstu char * strstr(char * tekst_1, char * tekst_2); Funkcja znajduje pierwsze wystąpienie ciągu znaków tekst_2 w tekście tekst_1. Zwracany jest wskaźnik do znalezionego tekstu. Jeśli ciąg znaków nie został znaleziony zwracana jest wartość NULL.

Operacje na plikach (1) Otwieranie pliku FILE * fopen(char * sciezka, char * typ); Funkcja otwiera wskazany plik i zwraca wskaźnik do niego. Pierwszy parametr określa pełną ścieżkę lub tylko nazwę pliku, jeśli plik znajduje się w aktualnym katalogu. Funkcja zwraca NULL jeśli otwarcie pliku nie powiodło się. Plik można otworzyć w różnych trybach. Tryb otwarcia wskazuje drugi parametr, który może przy przybierać m. in. wartości: r – Otwiera plik do odczytu. w – Tworzy nowy plik. Jeśli istnieje plik o tej samej nazwie, to zostaje skasowany. Plik otwarty jest w trybie zapisu. a – Otwiera plik w trybie dopisywania. Jeśli plik nie istnieje, to zostaje utworzony. r+ - Otwiera plik w trybie modyfikacji. w+ - Kasuje poprzednią zawartość pliku. Jeśli plik nie istnieje, to zostaje utworzony.

Operacje na plikach (2) Odczytywanie pliku i zapisywanie do pliku int fprint(FILE * tekst, char * format [, wartosc_1,...]); int fscanf(FILE * tekst, char * format [, wartosc_1,...]); Działanie funkcji fprintf i fscanf jest analogiczne do funkcji printf i scanf. Dodatkowy parametr FILE jest wskaźnikiem do pliku otwartego w trybie odczytu dla funkcji fscanf, a dla funkcji fprintf parametr FILE jest wskaźnikiem do pliku otwartego w trybie odczytu. Zamykanie pliku int fclose(FILE * stream); Funkcja realizuje zapisanie wszystkich zmian w pliku i zamknięcie go. Funkcja zwraca 0 jeśli operacja zakończyła się powodzeniem. W przypadku wystąpienia błędu funkcja zwraca EOF.

Operacje na plikach (3) Przykład: #include int main() { FILE *plik; char a[100], sciezka[100] = "C:\\temp\\abc.txt" ; if ((plik = fopen(sciezka, "r")) == NULL) { printf("Nie mozna otworzyc %s\n", sciezka); system("PAUSE"); exit(1); } while (fscanf(plik, "%s", a)==1) { printf("%s\n", a); } fclose(plik); system("PAUSE"); return 0; }

Operacje na plikach (4) Przesuwanie wskaźnika pliku long ftell(FILE * stream); Zwraca aktualną pozycję wskaźnika pliku. int fseek(FILE * stream, long offset, int whence); Funkcja umożliwia przesunięcie wskaźnika pliku. Parametr whence może przyjmować wartości: 0 – wskaźnik jest przesuwany do pozycji wskazanej przez offset, 1 – wskaźnik jest przesuwany do pozycji będącej sumą aktualnej pozycji i wartości offset, 2 – wskaźnik jest przesuwany do pozycji będącej sumą rozmiaru pliku i parametru offset W przypadku powodzenia funkcja zwraca 0.

Operacje na plikach (5) Zadanie 4. Napisz program pozwalający na prowadzenie pamiętnika. Program pozwala na dopisywanie do istniejącego pliku dodatkowych zapisków. Możliwe jest też wyświetlenie wszystkich dotychczasowych zapisów.