Rozdzia l 3. Laboratorium 3. danych zawierajac

Podobne dokumenty
Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

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

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

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

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

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Argumenty wywołania programu, operacje na plikach

Paradygmaty programowania. Paradygmaty programowania

Aplikacje w środowisku Java

Tablice, DataGridView

STYCZEŃ LUTY. Dyżury aptek w Grójcu 2014

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

Struktury, unie, formatowanie, wskaźniki

Podstawy i języki programowania

Tablice. Jones Stygar na tropie zmiennych

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

Podstawy programowania. Podstawy C# Tablice

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Stałe, tablice dynamiczne i wielowymiarowe

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

LibreOffice Calc VBA

Podstawy programowania

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Podstawy i języki programowania

Funkcje. Piotr Zierhoffer. 7 października Institute of Computer Science Poznań University of Technology

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

Człowiek - najlepsza inwestycja

Microsoft IT Academy kurs programowania

Piotr Tronczyk U K O. Visual Studio.NET. VB.NET i C# K M K T

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

lekcja 8a Gry komputerowe MasterMind

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

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Materiały do laboratorium MS ACCESS BASIC

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

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Podstawy Programowania C++

Piotr Tronczyk U K O. Visual Studio.NET. VB.NET i C# K M K T

Programowanie Komputerów

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

Paradygmaty programowania

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Przykład powyżej pokazuje, że w zapytaniu można umieszczać funkcje zarówno zdefiniowane w ramach środowiska, jak również własne.

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

Wykład 4. Tablice. Pliki

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

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

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

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

Wskaźniki, funkcje i tablice

Wprowadzenie do języka Java

Functionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ

Instrukcje cykliczne (pętle) WHILE...END WHILE

GRUPA 1. Adres: Plac Kościuszki 13, Tomaszów Mazowiecki

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Październik Data Dzień tygodnia Szczęśliwy numerek [Wybierz inny miesiąc]

Pętle. Dodał Administrator niedziela, 14 marzec :27

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Lab 9 Podstawy Programowania

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Podstawy i języki programowania

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.pl. Tablice cz. II. Kopiowanie tablic, tablice wielowymiarowe

Rozdział 4 KLASY, OBIEKTY, METODY

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

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

Tablice i łańcuchy znakowe jako obiektowe typy danych. dr Jarosław Skaruz

Inicjacja tablicy jednowymiarowej

Kalendarz wydany na zlecenie Urzędu Gminy Pomiechówek

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Podstawy programowania w języku C++

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

Automatyzacja pracy w AutoCAD

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

Wykład 4: Klasy i Metody

Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Programowanie komputerowe. Zajęcia 3

Podstawy programowania

Programowanie komputerowe. Zajęcia 4

1 Podstawy c++ w pigułce.

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Java EE produkcja oprogramowania

6 Przygotował: mgr inż. Maciej Lasota

2017 r. STOPA BEZROBOCIA r. STOPA BEZROBOCIA

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki w C. Anna Gogolińska

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

PHP: bloki kodu, tablice, obiekty i formularze

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Transkrypt:

Rozdzia l 3 Laboratorium 3 3.1. Tablice Tablica jest struktura danych zawierajac a zmienne tego samego typu. CLR środowiska.net Framework wspiera tworzenie tablic jedno oraz wielo wymiarowych. 3.1.1. Tablice w VB.NET Każda tablica VB.NET jest obiektem dziedziczacym z klasy System.Array. Tablice deklaruje sie w nastepuj acy sposób: Dim <i d e n t y f i k a t o r >(<rozmiar t a b l i c y >) As <typ> Deklaracja tablicy do przechowania 10 wartości typu Integer: Dim t a b l i c a L i c z b C a l k o w i t y c h ( 9 ) As i n t e g e r Powyższy fragment kodu deklaruje tablice mogac a przechować 10 wartości typu Integer, elementy tablicy indeksowane sa od 0 do 9. W tym przypadku rozmiar tablicy jest sta ly i zosta l podany w nawiasach przy deklaracji zmiennej typu tablicowego. Możemy również zadeklarować zmienna tablicowa bez podawania jej rozmiaru, rozmiar zostanie ustalony podczas inicjalizacji tablicy: Dim tab ( ) As I n t e g e r tab = New I n t e g e r ( ) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 38

Powyższy kod deklaruje najpierw zmienna tab jako tablice liczb typu Integer, nastepnie w nawiasach klamrowych wystepuj a oddzielone przecinkami kolejne elementy tablicy. Kiedy deklaracja i inicjalizacja tablicy sa rozdzielone, inicjalizacje trzeba wykonać podajac w nawiasach klamrowych elementy tablicy. Odwo lanie sie do elementu tablicy odbywa sie poprzez operator indeksowania (i) gdzie i oznacza indeks elementu tablicy do którego chcemy sie odwo lać. Pamietajmy, że indeks pierwszego elementu to 0 Przyk ladowy program korzystajacy z tablicy: Dim i As I n t e g e r = 0 Dim tab ( ) As I n t e g e r tab = New I n t e g e r ( ) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} For i = 0 To 9 Console. WriteLine ( tab ( i ) ) Powyższy program jest dość prosty, ale musieliśmy na sztywno umieścić rozmiar tablicy w petli For. Wcześniej wspomnieliśmy, że wszystkie klasy.net Framework dziedzicza z klasy System.Array, w której znajduje sie wiele przydatnych metod i w laściwości. jedna z bardzo przydatnych w laściwości klasy System.Array jest Length gdzie przechowywana jest informacja o rozmiarze tablicy. Możemy napisać kod dla powyższego przyk ladu zastepuj ac sztywny rozmiar tablicy użyty w petli For odwo laniem do w laściwości Length Dim i As I n t e g e r = 0 Dim tab ( ) As I n t e g e r tab = New I n t e g e r ( ) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} For i = 0 To tab. Length 1 Console. WriteLine ( tab ( i ) ) Ponieważ w laściwość Length zawiera rozmiar tablicy a elementy indeksowane sa od 0, w petli for pojawia sie Length - 1 Możemy teraz zaprezentować inna forme funkcji Main od której rozpoczyna sie wykonanie aplikacji konsolowej napisanej w jezyku VB.NET. Sub Main ( ByVal args As S t r i n g ( ) ) 39

Zauważmy, że procedura Main posiada parametr o nazwie args (nazwa zmiennej może być dowolna) typu tablica wartości typu String. Dodatkowo pojawi lo si e s lowo kluczowe ByVal, które zostanie omówione później. Zmienna args b edzie zawiera la parametry przekazane naszej aplikacji z linii poleceń. Możemy napisać program, który wyświetli wszystkie parametry z jakimi zosta la wywo lana nasza aplikacja: Sub Main ( ByVal args As S t r i n g ( ) ) Dim i As I n t e g e r For i = 0 To args. Length 1 Console. WriteLine ( args ( i ) ) Powyższy przyk lad wykorzystuje petl e typu For. Jezyk VB.NET posiada jednak wygodniejsza konstrukcje do iteracji poprzez elementy tablicy, mianowicie konstrukcje For Each For Each <i d e n t y f i k a t o r > In <t a b l i c a lub k o l e k c j a > <blok i n s t r u k c j i > Zamieńmy kod wyświetlajacy elementy tablicy tak, aby wykorzystywa l konstrukcje For Each: Dim tab As I n t e g e r ( ) tab = New I n t e g e r ( ) 1, 2, 3, 4, 5} Dim i As I n t e g e r For Each i In tab Console. WriteLine ( i ) Zmienna i w każdej iteracji zawiera wartość kolejnego elementu tablicy tab. Zmienna i musi być tego samego typu co elementy tablicy (w naszym przypadku Integer). Zmienna i może być wykorzystana tylko do odczytania wartości elementu tablicy, nie można przy jej pomocy zmienić zawartości tablicy. Jeżeli zachodzi konieczność modyfikacji elementów tablicy podczas iteracji trzeba skorzystać z konstrukcji For..., Konstrukcja For Each s luży do iteracji po elementach tablicy jak i kolekcji. Pojecie kolekcji zostanie omówione później, Klasa String jest także kolekcja znaków. Możemy zastosować konstrukcje For Each do iteracji poprzez kolejne znaki wchodza- ce w sk lad lańcucha znaków. Poniższy program wypisuje poszczególne litery wchodzace w sk lad napisu: 40

Dim napis As S t r i n g = J a k i ś napis Dim c As Char For Each c In napis Console. WriteLine ( c ) Poniższy kod pokazuje zastosowanie tablicy tablic, do wyświetlenia kalendarza. 1 2 Dim i As I n t e g e r 3 Dim M i e s i a c e ( ), Dni ( ) As S t r i n g 4 Dim Kalendarz ( ) ( ) As I n t e g e r = New I n t e g e r ( 1 1 ) ( ) } 5 Dim Miesiac, Dzien As I n t e g e r 6 M i e s i a c e = New S t r i n g ( 1 1 ) Styczeń, Luty, Marzec, 7 Kwiecień, Maj, Czerwiec, 8 L i p i e c, S i e r p i e ń, Wrzesień, 9 Październik, Listopad, Grudzień } 10 Dni = New S t r i n g ( 6 ) Pn, Wt, Śr, Cz, 11 Pt, So, Nie } 12 For M i e s i a c = 0 To M i e s i a c e. Length 1 13 Dzien = DateTime. DaysInMonth ( Year (Now), Mi es ia c + 1) 14 Kalendarz ( M i e s i a c ) = New I n t e g e r ( Dzien 1) } 15 For i = 0 To Dzien 1 16 Kalendarz ( M iesiac ) ( i ) = i + 1 17 i 18 Mie si ac 19 Dim d As DateTime 20 For M i e s i a c = 0 To M i e s i a c e. Length 1 21 Console. WriteLine ( M i e s i a c e ( Miesiac ) ) 22 d = New DateTime ( Year (Now), Miesiac + 1, 1) 23 i = d. DayOfWeek 0 nd, 1 pn... 24 I f ( i = 0) Then 25 i = 6 26 E l s e 27 i = i 1 28 End I f 29 For Dzien = 0 To Dni. Length 1 30 Console. Write ( 0}, Dni ( Dzien ) ) 31 32 Console. WriteLine ( ) 33 For Dzien = 0 To i 1 34 Console. Write (. PadRight ( 3 ) ) 35 36 For Dzien = 0 To Kalendarz ( Mie si a c ). Length 1 37 Console. Write ( 0:00}, Kalendarz ( Miesiac ) ( Dzien ) ) 38 I f ( i + 1) Mod 7 = 0 Then 39 Console. WriteLine ( ) 40 End I f 41 i = i + 1 42 Dzien 43 Console. WriteLine ( ) 44 Console. WriteLine ( ) 45 Mie si ac 46 41

3.1.2. Tablice w C# Każda tablica C# jest obiektem dziedziczacym z klasy System.Array. Tablice deklaruje sie w nastepuj acy sposób: <typ>[<rozmiar t a b l i c y >] <i d e n t y f i k a t o r >; Deklaracja tablicy do przechowania 10 wartości typu Integer: i n t [ 1 0 ] t a b l i c a L i c z b C a l k o w i t y c h ; Powyższy fragment kodu deklaruje tablice mogac a przechować 10 wartości typu Integer, elementy tablicy indeksowane sa od 0 do 9. W tym przypadku rozmiar tablicy jest sta ly i zosta l podany w nawiasach przy deklaracji zmiennej typu tablicowego. Podawanie rozmiaru w deklaracji tablicy różni sie w jezyku C# w stosunku d jezy- ka VB.NET. Deklarujac tablice w VB.NET podawaliśmy maksymalny indeks tablicy, natomiast w C# podajemy ilość elementów. Tak jak w przypadku VB.NET możemy zadeklarować tablic e bez podawania jej rozmiaru, a nast epnie dokonać jej inicjalizacji: i n t [ ] tab ; tab = new i n t [ 1 0 ] 1, 2, 3, 4, 5, 6, 7, 8, 9, 1 0 } ; Możemy również utworzyć tablice dynamicznie nie inicjalizujac jej: i n t [ ] tab ; tab = new i n t [ 1 0 ] ; Operatorem indeksowania w przypadku C# jest operator []. przyk ladowy program deklaruje zmienna tab jako tablice liczb typu int, nastepnie tworzy nowy obiekt reprezentujacy tablice i wype lnia elementy tablicy kolejnymi liczbami by na końcu używajac petli for wyświetlić zawartość tablicy: s t a t i c void Main ( s t r i n g [ ] args ) i n t [ ] tab ; tab = new i n t [ 1 0 ] ; f o r ( i n t i =0; i <tab. Length ; i ++) tab [ i ]= i +1; f o r ( i n t i = 0 ; i < tab. Length ; i ++) Console. WriteLine ( tab [ i ] ) ; } 42

Tak samo jak w przypadku VB.NET w jezyku C# istnieje konstrukcja foreach s luż aca do wykonania operacji iteracji na elementach tablicy lub kolekcji. f o r e a c h (<typ> <i d e n t y f i k a t o r > in <t a b l i c a lub k o l e k c j a >) <blok i n s t r u k c j i > Analogiczny kod jak w przypadku VB.NET używajacy konstrukcji foreach s t a t i c void Main ( s t r i n g [ ] args ) s t r i n g s = J a k i ś napis ; } f o r e a c h ( char c in s ) Console. WriteLine ( c ) ; Zauważmy, że deklaracja funkcji Main j ezyka C# od której rozpoczyna si e wykonanie aplikacji konsolowej, zawiera argument o nazwie args typu string[]. Tak jak w przypadku VB.NET jest to tablica lańcuchów znaków zawierajaca parametry przekazane w linii poleceń podczas uruchamiania programu. Przyk ladowy kod wykorzystuje p etl e foreach do wyświetlenia parametrów przekazanych z linii poleceń: s t a t i c void Main ( s t r i n g [ ] args ) i f ( args. Length < 1) C o ns o le. WriteLine ( Brak parametró wywo lania! ) ; e l s e Console. WriteLine ( Przekazana parametry : ) ; f o r e a c h ( s t r i n g c in args ) Console. WriteLine ( c ) ; } // f o r e a c h } // e l s e }//Main Tablice wielowymiarowe deklaruje si e podobnie do tablic jednowymiarowych: i n t [, ] tablica2wymiarowa ; tablica2wymiarowa = new i n t [ 1 0, 1 0 ] ; 43

Kod wykorzystujacy tablice tablic: 1 s t a t i c void Main ( s t r i n g [ ] a r g s ) 2 3 i n t Dzien, Miesiac, i ; 4 s t r i n g [ ] Miesiace, Dni ; 5 i n t [ ] [ ] Kalendarz = new i n t [ 1 2 ] [ ] ; 6 M i e s i a c e = new s t r i n g [ 1 2 ] Styczeń, Luty, Marzec, Kwiecień, 7 Maj, Czerwiec, L i p i e c, S i e r p i e ń, 8 Wrzesień, Październik, Listopad, 9 Grudzień } ; 10 Dni = new s t r i n g [ 7 ] Pn, Wt, Śr, Cz, Pt, So, Nie } ; 11 f o r ( Miesiac = 0 ; Miesiac < M i e s i a c e. Length ; Miesiac++) 12 13 Dzien = DateTime. DaysInMonth ( DateTime. Now. Year, Miesiac + 1 ) ; 14 Kalendarz [ M i e s i a c ] = new i n t [ Dzien ] ; 15 f o r ( i = 0 ; i < Dzien ; i ++) 16 Kalendarz [ M i e s i a c ] [ i ] = i + 1 ; 17 } // f o r M i e s i a c 18 f o r ( Miesiac = 0 ; Miesiac < M i e s i a c e. Length ; Miesiac++) 19 20 Console. WriteLine ( M i e s i a c e [ Miesiac ] ) ; 21 DateTime d = new System. DateTime ( DateTime. Now. Year, Miesiac + 1, 1 ) ; 22 i = ( i n t ) d. DayOfWeek ; 23 i = i == 0? 6 : i 1; 24 // 0 nd, 1 pn... 25 f o r ( Dzien = 0 ; Dzien < Dni. Length ; Dzien++) 26 Console. Write ( 0}, Dni [ Dzien ] ) ; 27 Console. WriteLine ( ) ; 28 Console. Write (. PadRight (3 i ) ) ; 29 f o r ( Dzien = 0 ; Dzien < Kalendarz [ Miesiac ]. Length ; Dzien++) 30 31 Console. Write ( 0:00}, Kalendarz [ Miesiac ] [ Dzien ] ) ; 32 i f ( ( i++ + 1) % 7 == 0) 33 Console. WriteLine ( ) ; 34 } 35 Console. WriteLine ( ) ; 36 Console. WriteLine ( ) ; 37 } // f o r M i e s i a c 38 } // Main Rys. 3.1.1. Wynik dzia lania programu 44