INFORMATYKA Studia Niestacjonarne Elektrotechnika

Podobne dokumenty
INFORMATYKA Studia Niestacjonarne Elektrotechnika

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

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

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

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Tablice, funkcje - wprowadzenie

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

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

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

Podstawy Programowania C++

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy programowania skrót z wykładów:

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Zmienne, stałe i operatory

6 Przygotował: mgr inż. Maciej Lasota

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Tablice. Jones Stygar na tropie zmiennych

Tablice, funkcje, wskaźniki - wprowadzenie

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania

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

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

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

Języki programowania obiektowego Nieobiektowe elementy języka C++

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

ŁAŃCUCHY W JĘZYKU C/C++

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

KURS C/C++ WYKŁAD 6. Wskaźniki

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

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

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

tablica: dane_liczbowe

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Struktury Struktura polami struct struct struct struct

Tablice deklaracja, reprezentacja wewnętrzna

1. Wprowadzanie danych z klawiatury funkcja scanf

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

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

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

Wstęp do programowania

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Podstawy programowania w języku C++

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

Lab 9 Podstawy Programowania

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

5 Przygotował: mgr inż. Maciej Lasota

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

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

Podstawy programowania 1

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

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

MATERIAŁY DO ZAJĘĆ II

Język C++ Różnice między C a C++

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

1 Podstawy c++ w pigułce.

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

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

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

Wstęp do programowania

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Zasady programowania Dokumentacja

Argumenty wywołania programu, operacje na plikach

Struktury, unie, formatowanie, wskaźniki

Stałe i zmienne znakowe. Stała znakowa: znak

Programowanie w językach wysokiego poziomu

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

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

int tab1[30]; // 30-elementowa tablica elementów typu int char tekst[10]; // 10-elementowa tablica elementów typu char (tablica tekstowa)

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

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

Język C zajęcia nr 11. Funkcje

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Obliczenia iteracyjne

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Wstęp do programowania

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

Wskaźniki w C. Anna Gogolińska

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

Podstawy Programowania

Kier. MTR Programowanie w MATLABie Laboratorium

Wykład 3 Składnia języka C# (cz. 2)

Operacje wejścia/wyjścia odsłona pierwsza

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Biblioteka standardowa - operacje wejścia/wyjścia

Część 4 życie programu

Transkrypt:

INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl Zakres wykładu o Tablice Definiowanie tablic Inicjowanie tablic Tablice znakowe Tablice wielowymiarowe Tablice dynamiczne o Typ wyliczeniowy o Struktury o Unie 2 1

Tablica o Tablica jest ciągiem zmiennych jednego typu, określony pojedynczą nazwą. o Do poszczególnych elementów tablicy odwołuje się za pomocą numeru indeksu o W języku C elementy tablicy n elementowej indeksowane są od 0 do n-1 3 Tablica - definiowanie Tablicę definiuje się analogicznie jak zmienne Tablice mogą przechowywać dane tych samych typów co zwykłe zmienne: int, float i char oraz pokrewnych Definiując tablicę należy podać jej typ, nazwę oraz rozmiar int numer[100]; float ocena[20]; 4 2

Tablica o Indeks tablicy jest typu całkowitego (int) o Przy odwoływaniu się do elementu tablicy można podać konkretną wartość: printf( %i,numer[2]); o Można wykorzystać zmienną: printf( %i,numer[x]); o Można to być także wynik działania: printf( %i,numer[(x+y)/2]); 5 Tablica o Dla zadeklarowanej tablicy rezerwowany jest w pamięci operacyjnej niezbędny obszar o Należy pamiętać, że po zadeklarowaniu tablica będzie zawierała losowe dane 6 3

Przykład 1 7 Przykład 1 8 4

Tablica Przykłady zastosowań Wykorzystanie tablicy jako licznika: o Zbierane są odpowiedzi do ankiety o Skala punktowa 1-10 o o W podsumowaniu pokazywana jest liczba odpowiedzi dla każdej wielkości punktowej możliwe do wybrania Program jest ograniczony do jednego pytania 9 Przykład 2 10 5

Przykład 2 11 Tablica Przykłady zastosowań o Przechowywanie kolejnych wyników obliczeń: o Program generujący ciąg liczb pierwszych o Liczba pierwsza jest to liczba podzielna tylko przez 1 i samą siebie o Sprawdzenie czy dana liczba może być pierwsza można zrealizować dzieląc ją przez znane mniejsze liczby pierwsze i sprawdzając czy w wyniku będzie 0 12 6

Przykład 3 13 Tablica - inicjowanie Definiując tablicę można jednocześnie zainicjować ją z przypisaniem wartości o Można zainicjować całą tablice int test[4]={0,1,2,3}; o Można zainicjować kilka początkowych wartości, pozostałe elementy są zerowe int test[4]={0,1}; o Można zainicjować tablicę z przypisaniem wartości dla wybranych indeksów int test[4]={[3]=4,[1]=1}; o Inicjując tablicę nie trzeba podawać liczby elementów int test[]={0,1,2,3}; 14 7

Przykład 4 o Napisać program konwertujący liczbę z systemu 10 na system binarny, ósemkowy lub szesnastkowy o Użytkownik podaje liczbę do konwersji i następnie wybiera docelowy system liczbowy 15 Przykład 4 16 8

Przykład 4 17 Przykład 4 18 9

Tablica wielowymiarowa o Stosowane do tej pory tablice można określić jako wektory tablice jednowymiarowe o W C można definiować tablice wielowymiarowe, tablica dwuwymiarowa macierz o Zasady definiowania i inicjalizacji są analogiczne jak przy tablicy jednowymiarowej 19 Tablice wielowymiarowe o Definiowanie tablicy: int macierz[10][10]; o Można inicjować: int macierz[][]={{1,2,3},{2,3,4},{3,4,5}}; int macierz[3][3]={1,2,3,2,3,4,3,4,5}; o Można inicjować niepełnie: int macierz[3][3]={{1,2},{2},{3,4}}; o Można inicjować przez wskazanie indeksów int macierz[][]={[1][1]=4,[5][5]=10}; 20 10

Tablice wielowymiarowe Stosując metodę Richardsona napisać program rozwiązujący układ równań liniowych Ax=b gdzie: 21 Przykład 5 22 11

Przykład 5 23 Przykład 5 24 12

Tablica znakowa 11:18 o W języku C nie można zdefiniować zmiennej tekstowej, przechowującej ciąg znaków - string o W tablicy znakowej można przechowywać ciągi znakowe (np. teksty) o Ciąg znaków można przypisać jako tekst lub każdy znak osobno char tekst[]= Hello world! ; char tekst[]={ H, e, l, l, o,, w, o, r, l, d, \0 }; 25 Tablica znakowa o Każda tablica znakowa powinna być zakończona znakiem specjalnym \0 o W większości sytuacji wartość ta jest wstawiana automatycznie o Jeżeli do tablicy znakowej n elementowej wprowadzony zostanie ciąg n znaków zabraknie miejsca na znak końca \0 o W takiej sytuacji większość funkcji realizujących operacje na tablicach znakowych może funkcjonować niewłaściwie 26 13

Tablica znakowa o Dane do tablicy znakowej można pobierać za pomocą: char tekst_1[80],tekst_2[4];; scanf( %s,tekst_1); gets(tekst_1); o W efekcie do zmiennych tablicowych zostanie przypisany ciąg znaków wprowadzony przez użytkownika 27 Podstawowe operacje na tablicy znakowej Dane do tablicy znakowej można wprowadzać na kilka sposobów: o W momencie inicjalizacji zmiennej o Jako ciąg znakowy pobierany przez instrukcje wejścia scanf lub gets o Znak po znaku scanf lub getchar o Jako wynik działania funkcji sprintf(zmienna, tekst do wstawienia ); strcpy(zmienna, tekst do wstawienia ); 28 14

Funkcje tekstowe o Język C dostarcza szeregu narzędzi umożliwiających przetwarzanie tablic znakowych o Funkcje te są dostępne w bibliotece standardowej o <stdio.h> o <ctype.h> o <string.h> 29 Rozmiar tablicy o Określenie rozmiaru tablicy ilości elementów możliwych do przechowywania w niej o Realizacja za pomocą funkcji: x=sizeof tablica; o Funkcja ta zwraca informacje o wielkości pamięci przydzielonej dla tablicy o Znając rozmiar pojedynczej komórki tablicy można policzyć ilość elementów tablicy x=(sizeof tablica)/(sizeof *tablica); 30 15

Przykład 6 31 Przykład 6 o Zmienna inicjowana bez podania rozmiaru tablicy rezerwuje tyle komórek ile jest wymaganych dla znaków w tekście plus jeden dla znaku końca ciągu tekstowego o Przy zmiennej zawierającej więcej komórek niż przypisany tekst wolne komórki zawierają znak końca ciągu tekstowego 32 16

Biblioteka <string.h> Biblioteka zawiera ponad 20 funkcji realizujących zadania przetwarzania łańcuchów znakowych x=strlen(tablica); o Funkcja zwraca liczbę znaków przechowywanych w tablicy aż do napotkania \0 strcat(tekst_1,tekst_2); o Funkcja dopisuje znaki z tablicy tekst_2 do tablicy tekst_1 strcpy(tekst_1,tekst_2); o Funkcja kopiuje znaki z tablicy tekst_2 do tablicy tekst_1 33 Biblioteka <string.h> x=strcmp(tekst_1,tekst_2); o Funkcja porównuje dwie tablice znakowe i jeżeli są takie same to zwraca 0, jeżeli nie to 1 - x=strncmp(tekst_1,tekst_2,n); c=strchr(tekst_1, x ); c=strrchr(tekst_1, x ); o Funkcja zwraca wskaźnik do znaku x w łańcuchu (tablica znakowa) lub NULL x=strcspn(tekst_1,tekst_2); o Zwraca numer pierwszego znaku z zmiennej tekst_1 który nie pasuje do zestawu znaków z zmiennej tekst_2 34 17

Biblioteka <string.h> x=strspn(tekst_1,tekst_2); o Zwraca numer pierwszego znaku z zmiennej tekst_1 który pasuje do zestawu znaków z zmiennej tekst_2 *x=strstr(tekst_1,tekst_2); o Zwraca wskaźnik do adresu pierwszego znaku z zmiennej tekst_2 po odnalezieniu go w zmiennej tekst_1 *x=strpbrk(tekst_1,tekst_2); o Funkcja zwraca wskaźnik do pierwszego ze znaków z zmiennej tekst_2 która zostanie odnaleziona w zmiennej tekst_1 35 Przykład 7 o Deklaracje o Bibliotek o Zmiennych tablicowych znakowych o Zmiennych wymaganych do przetestowania funkcji 36 18

Przykład 7 o Wyszukiwanie znaku w tekście, od początku lub końca tablicy o Poszukiwanie znaku z bazy znaków w tekście zapisanym w tablicy o Określenie liczby znaków w zmiennej tablicowej znakowej 37 Przykład 7 o Poszukiwania znaków i łańcucha znaków w tekście o Dzielenie tekstu na wyrazy 38 19

Przykład 7 39 Tablice znakowe o Wykonując operacje na tablicach znakowych należy zachować szczególną ostrożność o Deklaracja tablicy oznacza przydzielenie jej określonego obszaru pamięci. o Wykonując niektóre operacja na tablicach znakowych (np. kopiowanie) możemy zmienić rozmiar przydzielanej dla tej zmiennej pamięci o Może to prowadzić do zmiany zawartości innych zmiennych (tablic) które były także zadeklarowane. 40 20

Przykład 8 41 Przykład 8 42 21

Struktura Struktura (rekord) to: o jedna lub kilka zmiennych, o tego samego lub różnych typów, połączone w taki sposób aby można było odwoływać się do nich przy użyciu jednej, wspólnej nazwy. Struktury ułatwiają organizację złożonych zbiorów danych. Struktury w naturalny sposób znajdują zastosowanie w aplikacjach bazodanowych. 43 Struktura - definicja Definiowanie zmiennej strukturalnej jest procesem dwuetapowym: o Definicja struktury o Definicja lub inicjalizacja zmiennej strukturalnej struct nazwa{ int element_1; char element_2; float element_3;}; struct nazwa nazwa_zmiennej; 44 22

Struktura - odwołanie o Zapisywanie i pobieranie danych ze zmiennej strukturalnej odbywa się na analogicznych zasadach jak dla zwykłych zmiennych o Podawana jest nazwa zmiennej strukturalnej, a po kropce nazwa elementu zmienna.param_1=34; x=zmienna.param; 45 Struktura tablicowa o Elementami struktury mogą być także tablice struct nazwa{ int element_1; int element_2[20];}; o Definiując zmienną strukturalną można zdefiniować ją jako tablicę struct nazwa nowa[5]; x=nowa[3].element_1; y=nowa[3].element_2[4]; 46 23

Struktura - inicjowanie Tak jak zmienne i tablice strukturę także można inicjować podając jej wartości początkowe: struct nowa{ int x; int y; int z}; struct nowa alfa= {1,2,3}; struct nowa beta={1,2}; struct nowa gamma={.y=3,.z=12}; 47 Struktura - funkcje o o o o Struktury są stosowane jako zmienne wejściowe i wyjściowe przez funkcje Przykładem wykorzystania struktur są funkcje czasu dostępne w bibliotece <time.h> W bibliotece <time.h> informacje o aktualnej dacie i godzinie zwracane są poprzez strukturę tw Dostępny jest też nowy typ zmiennej, zmienna czasowa time_t 48 24

Struktura tw Struktura tw ma postać struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; }; 49 Struktura tw Nazwa Znaczenie tm_sec Sekundy domyślnie są wyrażone w zakresie [0..59]. tm_min Minuty. Zakres [0..59] tm_hour Godziny. Zakres [0..23] tm_mday Dzień miesiąca. Zakres [1..31] tm_mon Miesiąc. Zakres [0..11] Obecny rok. Lata zaczynają się liczyć od roku 1900, czyli: tm_year wartość 0 = 1900 rok. Dzień tygodnia. Zakres [0..6]. Znaczenie poszczególnych wartości: 0 = Niedziela 1 = Poniedziałek tm_wday 2 = Wtorek 3 = Środa 4 = Czwartek 5 = Piątek 6 = Sobota tm_yday Dzień roku. Zakres [0..365]. Letnie/zimowe przesunięcie czasowe. Jeśli wartość jest tm_isdst większa od 0 to przesunięcie czasowe jest 'aktywne'. Jeśli wartość mniejsza od 0 to informacja jest niedostępna. 50 25

Biblioteka <time.h> o Pobranie informacji o dacie i czasie systemowym wymaga zainicjowania zmiennej time_t i zmiennej strukturalnej do przechowywania danych time_t czas; struct tw *data_czas; o Przypisanie informacji o aktualnym czasie realizowane jest przez funkcję time time(&czas); 51 Biblioteka <time.h> Pobranie szczegółowych informacji o dacie i czasie poprzez przypisanie ich do zmiennej strukturalnej realizowane jest przez dwie funkcje data_czas=localtime(&czas); //zwraca czas lokalny data_czas=gmtime(&czas); // zwraca czas w Greenwich 52 26

Biblioteka <time.h> o Wyświetlenie zwartych informacji o dacie i godzinie można wyświetlić za pomocą funkcji asctime(data_czas); puts(asctime(data_czas)); o Do poszczególnych danych czasowych dostęp jest realizowany przez elementy struktury o Ponieważ struktura data_czas jest wskaźnikiem dostęp do elementów struktury realizowany jest poprzez wskazanie x=data_czas->tm_mday; 53 Przykład 9 Napisać program wyświetlający aktualną datę i godzinę, oraz przedstawiający ją w formacie. Program pobiera informacje osobowe (imię, nazwisko i data urodzenia) Dzisiaj jest DD.MM.YYYY r. Jest DZIEŃ_TYGODNIA, XXX dzień roku Jest dokładnie GG.MM.SS Miłego dnia Imię Nazwisko. Do twoich urodzi jest jeszcze XX dni. 54 27

Przykład 9 55 Przykład 9 56 28

Przykład 9 57 Typ wyliczeniowy Jest to typ danych definiowany przez użytkownika, składający się ze stałych W pierwszym kroku należy zdefiniować typ danej wyliczeniowy W drugim kroku można przyporządkować zmiennej typ wyliczeniowy enum dzien {pon., wt., sr., czw., pt., sob., niedz.}; enum dzien dzien_tygodnia; 58 29

Typ wyliczeniowy Każdemu elementowi typu wyliczeniowego przyporządkowywany jest indeks, począwszy od 0 Można samemu przypisać indeks do definiowanego elementu, każdego lub wybranego Numer indeksu elementu następującego po ręcznie nadanym jest automatycznie o 1 większy 59 Typ wyliczeniowy enum typ {up, down=3,left,right}; up=0, down=3, left=4, right=5 enum typ {up,down=-1,left,right}; up=0,down=-1, left=0, right=1 60 30

Typ Unia Typ danych bardzo podobny do struktury Jest definiowany w analogiczny sposób unia nazwa{ int element_1; char element_2; float element_3;}; unia nazwa nowa_unia; W danej chwili można korzystać tylko z jednego elementu unii 61 Przykład 10 62 31