Przedmowa Rozdział 1. Wprowadzenie... 13
|
|
- Mikołaj Wojciechowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Spis treści Przedmowa Rozdział 1. Wprowadzenie Czym jest programowanie...13 Mnogość języków programowania...14 Edytory kodu...15 Kompilatory...15 Mity związane z programowaniem...16 Języki programowania...17 Asembler...18 Fortran...19 C...19 C Perl...20 PHP...20 Turbo Pascal...20 Java...21 Język maszynowy...21 Działanie kompilatorów...22 Tworzenie kodu źródłowego...22 Prekompilacja...23 Kompilacja do kodu Asemblera...23 Optymalizacja kodu...23 Asemblacja...23 Konsolidacja...24 Języki interpretowane...24 Język C#...24 Instalacja środowiska...24 Jak się uczyć...25 Nie ucz się na pamięć!...25 Początkowe trudności...25 Pomoc systemowa...25 Praktyka...26 Pierwsza aplikacja...26 Kompilacja i uruchamianie...26 Komponenty...28 Piszemy kod...29 Zapisywanie projektu...29 Podsumowanie...30
2 4 Wstęp do programowania w języku C# Rozdział 2. Podstawy platformy.net Interfejs programistyczny...32 API systemu Windows...32 Wizja.NET...33 Składniki platformy.net...34 Konkluzja...37 C# a.net...37 Rodzaje aplikacji...38 Aplikacje konsolowe...38 Windows Forms...38 Formularze Web Forms...38 Składniki.NET Framework...39 Usługi sieciowe...39 Niezależność...40 Uniwersalność...40 Podsumowanie...41 Rozdział 3. Podstawy języka C# Podstawowa składnia...43 Najprostszy program...45 Jak kompilatory czytają kod...45 Wielkość znaków...45 Program musi posiadać metodę Main...46 Średnik kończy instrukcję...46 Program musi posiadać klasę...47 Wcięcia, odstępy...47 Słowa kluczowe...47 Symbole...47 Komentarze...48 Podzespoły, metody, klasy...49 Funkcje...49 Metody...50 Klasy...50 Przestrzenie nazw...51 Operator kropki...51 Słowo kluczowe using...52 Zmienne...53 Deklarowanie zmiennych...53 Przydział danych...54 Typy danych...55 Restrykcje w nazewnictwie...55 Stałe...56 Operacje na konsoli...57 Metody klasy Console...58 Właściwości klasy Console...58 Operatory...59 Operatory porównania...60 Operatory arytmetyczne...60 Operator inkrementacji oraz dekrementacji...61 Operatory logiczne...62 Operatory bitowe...62 Operatory przypisania...63 Inne operatory...63
3 Spis treści 5 Instrukcje warunkowe...63 Instrukcja if...64 Słowo kluczowe else...68 Instrukcja else if...69 Instrukcja switch...70 Pętle...73 Pętla while...73 Pętla do-while...75 Pętla for...76 Instrukcja break...77 Instrukcja continue...78 Operator warunkowy...79 Konwersja danych...80 Rzutowanie...81 Przykładowa aplikacja...81 Dyrektywy preprocesora...83 Deklarowanie symboli...84 Instrukcje warunkowe...84 Błędy i ostrzeżenia...85 Podsumowanie...86 Rozdział 4. Przegląd.NET Framework Środowisko CLR...87 Kod pośredni IL...88 Kod zarządzany i niezarządzany...89 Moduł zarządzany...89 Podzespoły...90 Działanie CLR...90 System CTS...91 Specyfikacja CLS...92 Biblioteka klas...93 Moduły, przestrzenie nazw...93 Wieloznaczność...95 Główne przestrzenie nazw...96 Podsumowanie...97 Rozdział 5. Programowanie obiektowe Na czym polega programowanie obiektowe...99 Podstawowy kod formularza WinForms Moduł Form1.Designer.cs Generowanie kodu Ukrywanie kodu Programowanie zdarzeniowe Generowanie zdarzeń Obsługa zdarzeń Klasy Składnia klasy Do czego służą klasy Instancja klasy Klasy zagnieżdżone Pola...114
4 6 Wstęp do programowania w języku C# Metody Zwracana wartość Parametry metod Przeciążanie metod Przekazywanie parametrów Dziedziczenie Klasa domyślna Hermetyzacja Modyfikatory dostępu Sekcja private Sekcja public Sekcja protected Sekcja internal Konstruktor Pola tylko do odczytu Destruktor Właściwości Modyfikatory dostępu Elementy statyczne Metody statyczne Klasy statyczne Polimorfizm Ukrywanie elementów klas Słowo kluczowe base Metody wirtualne Przedefiniowanie metod Elementy abstrakcyjne Elementy zaplombowane net Framework Class Library Przestrzenie nazw Klasa System.Object Opakowywanie typów Interfejsy Implementacja wielu interfejsów Typy wyliczeniowe Wartości elementów Struktury Konstruktory struktur Operatory is i as Przeładowanie operatorów Słowo kluczowe operator Dzielenie klas Podsumowanie Rozdział 6. Delegaty i zdarzenia Delegaty Tworzenie delegatów Użycie delegatów Funkcje zwrotne Delegaty złożone Metody anonimowe Zdarzenia Podsumowanie...169
5 Spis treści 7 Rozdział 7. Tablice i kolekcje Czym są tablice Deklarowanie tablic Indeks Inicjalizacja danych Tablice wielowymiarowe Pętla foreach Pętla foreach a tablice wielowymiarowe Tablice tablic Tablice struktur Parametr args w metodzie Main() Klasa System.Array Metody klasy Słowo kluczowe params Przykład gra kółko i krzyżyk Zasady gry Specyfikacja klasy Ustawienie symbolu na planszy Sprawdzenie wygranej Interfejs aplikacji Mechanizm indeksowania Indeksy łańcuchowe Kolekcje Interfejsy System.Collections Stosy Kolejki Klasa ArrayList Listy Typy generyczne Korzystanie z list Słowniki Przykładowy program Podsumowanie Rozdział 8. Obsługa wyjątków Czym są wyjątki Obsługa wyjątków Blok finally Zagnieżdżanie wyjątków Klasa System.Exception Selektywna obsługa wyjątków Wywoływanie wyjątków Własne klasy wyjątków Deklarowanie własnej klasy Przykładowa aplikacja Przepełnienia zmiennych Podsumowanie Rozdział 9. Łańcuchy w C# Typ System.String Unicode w łańcuchach Niezmienność łańcuchów Konstruktory klasy Operacje na łańcuchach...234
6 8 Wstęp do programowania w języku C# Łańcuchy w WinForms Klasa StringBuilder Metody klasy StringBuilder Zastosowanie klasy StringBuilder Formatowanie łańcuchów Specyfikatory formatów Własne specyfikatory formatowania Specyfikatory typów wyliczeniowych Typ System.Char Podsumowanie Rozdział 10. Biblioteka Windows Forms Podzespół System.Windows.Forms Okno Object Browser Przestrzeń System.Windows.Forms Podstawowe klasy System.ComponentModel.Component System.Windows.Forms.Control System.Windows.Forms.Application Przykład działania Przygotowanie klasy Projektowanie interfejsu Rozwiązania programistyczne Technika przeciągnij i upuść Tworzenie menu Właściwości menu Ikony dla menu Skróty klawiaturowe Menu podręczne Paski narzędziowe Pasek statusu Zakładki Kontrolki tekstowe Komponent RichTextBox Okna dialogowe Właściwości okien dialogowych Aplikacja edytor tekstów Tworzenie nowego formularza Podsumowanie Rozdział 11. Podzespoły.NET Czym jest COM Kontrolka w rozumieniu COM Odrobinę historii ActiveX DCOM Podstawowy podzespół Deasembler.NET Komponenty.NET Przygotowanie komponentu w Delphi Przygotowanie komponentu C# Zalety stosowania podzespołów Budowa podzespołu Atrybuty podzespołu...297
7 Spis treści 9 Mechanizm refleksji Funkcja GetType Klasa System.Type Ładowanie podzespołu Przykład działania program Reflection Własne atrybuty Aplikacje.NET Framework SDK Global Assembly Cache Tool WinCV Narzędzie konfiguracji.net Framework PEVerify narzędzie weryfikacji net a COM PInvoke Użycie funkcji Win32 API Użycie atrybutu DLLImport Podsumowanie Rozdział 12. Pliki i obsługa strumieni Czym są strumienie Klasy przestrzeni System.IO Operacje na katalogach Tworzenie i usuwanie katalogów Kopiowanie i przenoszenie Odczytywanie informacji o katalogu Obsługa plików Tworzenie i usuwanie plików Kopiowanie i przenoszenie plików Odczytywanie informacji o pliku Strumienie Obsługa plików tekstowych Operacje na danych binarnych Serializacja Formaty zapisu danych Przykład serializacji Podsumowanie Rozdział 13. Obsługa formatu XML Niezależność XML XHTML Budowa dokumentu Prolog Znaczniki Atrybuty Podstawowa terminologia Węzeł główny Komentarze Przestrzenie nazw Składnia przestrzeni nazw Przestrzenie nazw i atrybuty DTD Deklaracja elementu Deklaracja atrybutu DTD w osobnym pliku Encje tekstowe...350
8 10 Wstęp do programowania w języku C# XSD Nagłówek XSD Elementy XSD Typy danych Typy proste XML a bazy danych XSL DOM SAX Korzystanie z System.XML Ładowanie pliku XML Odczyt dowolnego elementu Odczyt wartości atrybutów Tworzenie pliku XML Dokumentacja XML Podsumowanie Skorowidz
9 Rozdział 7. Tablice i kolekcje Omówiliśmy już sporą część tego, co oferuje język C#. Powiedzieliśmy sobie o najważniejszym programowaniu obiektowym, które może przysporzyć najwięcej kłopotów początkującemu programiście. Nie zaprezentowałem do tej pory bardzo ważnego elementu wielu języków programowania, a mianowicie obsługi tablic. Jest to bardzo wygodna funkcja języka programowania; przekonasz się o tym podczas pisania przykładowej aplikacji podsumowującej dotychczasową wiedzę o języku C#. Będzie to znana i lubiana gra kółko i krzyżyk. O tym jednak pod koniec tego rozdziału. Nie przedłużając, spieszę z wyjaśnieniem, czym są tablice Czym są tablice Wyobraź sobie, że w swojej aplikacji musisz przechować wiele zmiennych tego samego typu. Dla przykładu, niech będą to dni tygodnia typu string. Proste? Owszem, wystarczy zadeklarować siedem zmiennych typu string: string pon, wt, śr, czw, pt, so, nd; Teraz do tych zmiennych należy przypisać wartość: pon = "Poniedziałek"; wt = "Wtorek"; // itd Teraz wyobraź sobie sytuację, w której musisz zadeklarować 12 zmiennych oznaczających nazwy miesięcy. Nieco uciążliwe? Owszem. Do tego celu najlepiej użyć tablic, które służą do grupowania wielu elementów tego samego typu. Osobiście z tablic korzystam bardzo często, jest to znakomity, czytelny sposób na przechowywanie dużej ilości danych. Przejdźmy jednak do rzeczy. W C# istnieje możliwość deklaracji zmiennej, która przechowywać będzie wiele danych. Tak w skrócie i uproszczeniu możemy powiedzieć o tablicach.
10 172 Wstęp do programowania w języku C# Deklarowanie tablic Tablice deklaruje się podobnie jak zwykłe zmienne. Jedyną różnicą jest zastosowanie nawiasów kwadratowych: typ[] Nazwa; W miejsce typ należy podać typ danych elementów tablicowych (np. int, string), a w miejsce nazwa nazwę zmiennej tablicowej. Przykładowo: int[] Foo; W tym miejscu zadeklarowaliśmy tablicę Foo, która może przechowywać elementy typu int. Przed użyciem takiej tablicy należy zadeklarować, z ilu elementów ma się ona składać. W tym celu korzystamy ze znanego nam operatora new: Foo = new int[5]; Taka konstrukcja oznacza zadeklarowanie w pamięci komputera miejsca dla pięciu elementów tablicy Foo. Przypisywanie danych do poszczególnych elementów odbywa się również przy pomocy symboli nawiasów kwadratowych: int[] Foo; Foo = new int[5]; Foo[0] = 100; Foo[1] = 1000; Foo[2] = 10000; Foo[3] = ; Foo[4] = ; Console.WriteLine(Foo[4]); Możliwy jest również skrótowy zapis deklaracji tablic, podobny do tego znanego z tworzenia obiektów: int[] Foo = new int[5]; Indeks Tablica składa się z elementów. Każdemu z nich przypisany jest tzw. indeks, dzięki któremu odwołujemy się do konkretnego elementu tablicy. Ów indeks ma postać liczby i wpisujemy go w nawiasach kwadratowych, tak jak to zaprezentowano w poprzednim przykładzie. Spójrz na kolejny przykład: char[] Foo = new char[5]; Foo[0] = 'H'; Foo[1] = 'e'; Foo[2] = 'l'; Foo[3] = 'l'; Foo[4] = 'o';
11 Rozdział 7. Tablice i kolekcje 173 Indeksy numerowane są od zera do N 1, gdzie N to ilość elementów tablicy. Aby lepiej to zrozumieć, spójrz na tabelę 7.1. Tabela 7.1. Prezentacja zależności indeksów elementów Indeks Wartość H e l l o Należy uważać, aby nie odwołać się do elementu, który nie istnieje! Jeżeli zadeklarowaliśmy tablicę 5-elementową i odwołujemy się do szóstego elementu (poprzez indeks nr 5), kompilator C# nie zareaguje! Błąd zostanie wyświetlony dopiero po uruchomieniu programu. Inicjalizacja danych Po utworzeniu tablicy każdemu elementowi przypisywana jest domyślna wartość. Np. w przypadku typu int jest to cyfra 0. Programista po zadeklarowaniu takiej tablicy ma możliwość przypisania wartości dla konkretnego elementu. Istnieje możliwość przypisania wartości dla konkretnego elementu już przy deklarowaniu tablicy. Należy wówczas wypisać wartości w klamrach: char[] Foo = new char[5] 'H', 'e', 'l', 'l', 'o'; Console.WriteLine(Foo[4]); Język C# dopuszcza uproszczony zapis takiego kodu wystarczy pominąć ilość elementów tablicy: char[] Foo = 'H', 'e', 'l', 'l', 'o'; Kompilator oblicza rozmiar takiej tablicy po ilości elementów uporządkowanych pomiędzy klamrami. Tablice wielowymiarowe C# umożliwia także deklarowanie tzw. tablic wielowymiarowych. Przykładowo, poniższy kod tworzy tablicę 7 2 (7 kolumn i 2 wiersze): string[,] Foo = new string[7, 2]; Zasada deklarowania tablic wielowymiarowych jest prosta. W nawiasie kwadratowym wpisujemy znak przecinka (,), natomiast podczas inicjalizacji musimy podać wymiar tablicy (ilość elementów należy również rozdzielić znakiem średnika). Podczas przypisywania danych do elementów należy podać dokładny indeks:
12 174 Wstęp do programowania w języku C# Foo[0, 0] = "Pn"; Foo[1, 0] = "Wt"; Foo[2, 0] = "Śr"; Foo[3, 0] = "Czw"; Foo[4, 0] = "Pt"; Foo[5, 0] = "So"; Foo[6, 0] = "Nd"; Foo[0, 1] = "Mon"; Foo[1, 1] = "Tue"; Foo[2, 1] = "Wed"; Foo[3, 1] = "Thu"; Foo[4, 1] = "Fri"; Foo[5, 1] = "Sat"; Foo[6, 1] = "Sun"; Język C# nie ogranicza nas w ilości wymiarów. Możemy więc wprowadzić do naszej tablicy kolejny wymiar. Poniższy fragment prezentuje deklarację tablicy 2 4 2: string[,,] Foo = new string[2, 4, 2]; Inicjalizacja danych tablicy wielowymiarowej jest analogiczna do standardowej tablicy: int[,] Foo = new int[3, 3] 1, 2, 3, 4, 5, 6, 7, 8, 9 ; Zauważ jednak, że poszczególne elementy zawarte w klamrach są rozdzielone znakiem przecinka. Oczywiście istnieje możliwość skrótowego zapisu: lub: int[,] Foo = new int[,] 1, 2, 3, 4, 5, 6, 7, 8, 9 ; int[,] Foo = 1, 2, 3, 4, 5, 6, 7, 8, 9 ; Pętla foreach Podczas omawiania zagadnienia pętli nie wspomniałem o jednej ważnej pętli służącej do operowania na tablicach. Ponieważ tematyka tablic w rozdziale 3. nie była omawiania, pragnę wspomnieć o tej pętli właśnie tutaj. Pętla ta, znana programistom PHP, Perl czy też Delphi, dla.net jako parametru wymaga tablicy. Spójrz na poniższy fragment kodu: string[] Foo = new string[7]; Foo[0] = "Pn"; Foo[1] = "Wt"; Foo[2] = "Śr"; Foo[3] = "Czw"; Foo[4] = "Pt"; Foo[5] = "So"; Foo[6] = "Nd";
13 Rozdział 7. Tablice i kolekcje 175 foreach (string Bar in Foo) Console.WriteLine(Bar); Uruchomienie takiej aplikacji spowoduje wyświetlenie, jeden pod drugim, kolejnych elementów tablicy. Po każdej iteracji kolejny element tablicy przypisywany jest do zmiennej Bar. Tutaj ważna uwaga. Zmienna Bar nie może być zadeklarowana lub użyta we wcześniejszych fragmentach kodu. Np. poniższa konstrukcja jest błędna: string Bar = "Test"; foreach (string Bar in Foo) Console.WriteLine(Bar); Przy próbie kompilacji wyświetlony zostanie błąd: A local variable named 'Bar' cannot be declared in this scope because it would give a different meaning to 'Bar', which is already used in a 'parent or current' scope to denote something else. Identyczny rezultat jak ten pokazany przed chwilą można osiągnąć, stosując pętlę for: for (int i = 0; i < Foo.Length; i++) Console.WriteLine(Foo[i]); Konstrukcja Foo.Length zwraca rozmiar tablicy. Zasadniczo wygodniejszym i czytelniejszym sposobem jest użycie pętli foreach, która w końcu została stworzona po to, by operować na tablicach. Jednakże użycie pętli for ma jedną przewagę nad foreach można w niej modyfikować wartości elementów. Spójrz na poniższy przykład: for (int i = 0; i < Foo.Length; i++) Foo[i] = "Foo"; Console.WriteLine(Foo[i]); Identycznego efektu nie uzyskamy, stosując pętlę foreach: foreach (string Bar in Foo) Bar = "Foo"; W tym momencie kompilator zasygnalizuje błąd: Cannot assign to 'Bar' because it is a 'foreach iteration variable'.
14 176 Wstęp do programowania w języku C# Pętla foreach a tablice wielowymiarowe Pętla foreach z powodzeniem działa na tablicach wielowymiarowych. W takim wypadku kolejność iteracji jest następująca: najpierw przekazana zostanie wartość elementu [0, 1], następnie [0, 2] itd. Krótki kod prezentujący takie działanie: string[,] Foo = new string[7, 2]; Foo[0, 0] = "Pn"; Foo[1, 0] = "Wt"; Foo[2, 0] = "Śr"; Foo[3, 0] = "Czw"; Foo[4, 0] = "Pt"; Foo[5, 0] = "So"; Foo[6, 0] = "Nd"; Foo[0, 1] = "Mon"; Foo[1, 1] = "Tue"; Foo[2, 1] = "Wed"; Foo[3, 1] = "Thu"; Foo[4, 1] = "Fri"; Foo[5, 1] = "Sat"; Foo[6, 1] = "Sun"; foreach (string Bar in Foo) Console.WriteLine(Bar); Kolejność wyświetlania danych na konsoli będzie następująca: Pon Mon Wt Tue... W przypadku tablic wielowymiarowych konstrukcja Tablica.Length zwraca liczbę wszystkich elementów w tablicy. W prezentowanym przykładzie będzie to 7 2, czyli 14. Działanie pętli for na tablicach wielowymiarowych jest nieco inne. Przykładowo, poniższa pętla spowoduje wyświetlenie jedynie polskich dni tygodnia: for (int i = 0; i < Foo.Length / 2; i++) Console.WriteLine(Foo[i, 0]);
15 Rozdział 7. Tablice i kolekcje 177 Tablice tablic Mechanizm tablic jest w języku C# bardzo rozbudowany. Umożliwia nawet tworzenie tablic, które zawierają kolejne tablice. Poniższy kod prezentuje deklarację takiej tablicy: int[][] Foo = new int[2][]; Ten zapis oznacza, iż tablica Foo zawierać będzie kolejne dwie tablice o nieokreślonej jeszcze liczbie elementów. Te dwie kolejne tablice również muszą zostać utworzone: Foo[0] = new int[50]; Foo[1] = new int[1000]; Przypisywanie danych do takich tablic wygląda podobnie jak w przypadku tablic wielowymiarowych: // przypisanie wartości do elementu 26. tablicy nr 1 Foo[0][25] = 100; // przypisanie wartości do elementu tablicy drugiej Foo[1][999] = 1; Sprawa inicjalizacji tablic prezentuje się podobnie, jak to zostało zaprezentowane w trakcie omawiania bardziej podstawowych elementów. Przypisanie wartości do elementów w tablicach tego typu charakteryzuje się dość specyficzną składnią: int[][] Foo = new int[][] new int[] 1, 2, // zwróć uwagę na brak średnika! new int[] 1, 2, 3 ; // zwróć uwagę na obecność średnika! Console.WriteLine(Foo[0][1]); Moim zdaniem przejrzystszy jest skrótowy zapis powyższego kodu, również akceptowany przez kompilator C#: int[][] Foo = new int[] 1, 2, new int[] 1, 2, 3 ; Tablice struktur O strukturach i wyliczeniach powiedzieliśmy sobie w rozdziale 5. W niektórych przypadkach przydatna okazuje się możliwość deklarowania tablic struktur lub typów wyliczeniowych. Jest to sprawa dość prosta, jeżeli znasz już podstawy użycia tablic, bowiem zamiast typu dotychczas używanego (czyli int, string, char itp.) należy użyć wcześniej zadeklarowanej struktury:
16 178 Wstęp do programowania w języku C# public struct Bar public string Name; public byte Age; class Program static void Main(string[] args) Bar[] BarArr = new Bar[2]; BarArr[0].Name = "Janusz Kowalski"; BarArr[0].Age = 52; BarArr[1].Name = "Piotr Nowak"; BarArr[1].Age = 18; Parametr args w metodzie Main() Gdy w rozdziale trzecim omawiałem podstawowe elementy programu C#, wspomniałem oczywiście o metodzie Main(), lecz pominąłem znaczenie parametru args. Zrobiłem to celowo, aby nie wprowadzać zamętu, gdyż tematyka tablic czy nawet typów danych nie była wówczas poruszana. Parametr args typu tablicowego zawiera ewentualne parametry przekazane do naszej aplikacji z linii poleceń. Czyli uruchamiając program z poziomu linii komend, mogę napisać: MojaAplikacja.exe Parametr1 Parametr2 Zarówno Parametr1, jak i Parametr2 zostaną przekazane do aplikacji, każdy zostanie przypisany do odrębnego elementu tablicy. Napiszmy dla treningu prosty program. Jego zadanie będzie banalne: sortowanie argumentów przekazanych do programu. Właściwie najtrudniejszą rzeczą w programie jest sama konwersja danych z łańcucha string na wartość całkowitą int. Samo sortowanie tablicy realizuje metoda Sort() klasy Array. Całość programu prezentuje listing 7.1. Listing 7.1. Pobieranie i sortowanie argumentów programu using System; namespace FooConsole class Program static void Main(string[] args)
17 Rozdział 7. Tablice i kolekcje 179 if (args.length == 0) Console.WriteLine("Brak argumentów programu!"); return; int[] ArrInt = new int[args.length]; int count = 0; foreach (string element in args) ArrInt[count] = Int32.Parse(element); ++count; Array.Sort(ArrInt); for (int i = 0; i < ArrInt.Length; i++) Console.WriteLine("0 ", ArrInt[i]); Argumenty przekazane do aplikacji konwertujemy, a następnie zapisujemy w nowo utworzonej tablicy ArrInt. Zwróć uwagę, że do konwersji danych ze string na int użyłem metody Parse() z klasy Int32. To również jest dopuszczalny sposób, równie dobrze mogłem także użyć klasy Convert. Posortowaną tablicę prezentuję na konsoli, wyświetlając w pętli kolejne jej elementy. Element 0 wykorzystany w łańcuchu w metodzie WriteLine() zostanie zastąpiony wartością zmiennej przekazanej w tej samej metodzie. Jest to czytelny i prosty sposób formatowania łańcuchów np.: string sname = "Adam"; string slocation = "Wrocławiu"; Console.WriteLine("Mam na imię 0 i mieszkam we 1", sname, slocation); Klasa System.Array Chyba oswoiłeś się już z myślą, że całe środowisko.net oparte jest na klasach, strukturach i wyliczeniach? Nie inaczej jest w przypadku tablic. Każda tablica w języku C# dziedziczy po klasie System.Array, która dostarcza podstawowych mechanizmów do manipulacji na elementach tablicy. To dzięki metodom tej klasy możemy pobrać ilość elementów w tablicy, posortować ją czy przeszukać. Kilka najbliższych stron zostanie przeznaczonych na opisanie podstawowych elementów tej klasy.
18 180 Wstęp do programowania w języku C# Jeżeli chodzi o właściwości klasy, to najważniejszą jest Length, która zwraca aktualną liczbę elementów tablicy. Ta sama klasa udostępnia również właściwość LongLength, która zwraca 64-bitową wartość określającą rozmiar wszystkich elementów w przypadku tablic wielowymiarowych. Warto również wspomnieć o właściwości Rank, która zwraca liczbę wymiarów danej tablicy: int[,] Foo = new int[3, 2] 1, 2, 1, 2, 1, 2 ; Console.WriteLine(Foo.Rank); // tablica dwuwymiarowa (wyświetli 2) Metody klasy W trakcie omawiania klasy System.Array należy wspomnieć o paru metodach, które mogą Ci się przydać przy okazji operowania na tablicach. BinarySearch() Clear() Używając algorytmu przeszukiwania binarnego, przeglądam elementy tablicy, aby znaleźć żądaną wartość. Pierwszym parametrem tej metody musi być nazwa tablicy, na której będzie ona operować. Drugim parametrem szukany element. Oto przykład użycia tej metody: string[] Foo = new string[] "Pn", "Wt", "Śr", "Czw", "Pt" ; Console.WriteLine(Array.BinarySearch(Foo, "Śr")); Metoda zwraca numer indeksu, pod jakim znajduje się szukany element, lub 1, jeżeli nic nie zostało znalezione. W zaprezentowanym przykładzie metoda zwróci wartość 2. Metoda umożliwia wyczyszczenie tablicy. W rzeczywistości ustawia każdemu elementowi wartość 0 lub null w zależności od jego typu. Metoda przyjmuje trzy parametry. Pierwszym jest nazwa tablicy, drugim numer indeksu, od którego ma rozpocząć czyszczenie, a trzecim zasięg tego procesu. Dzięki metodzie Clear() można bowiem wyczyścić określone elementy z tablicy. Poniższy przykład prezentuje czyszczenie całej zawartości: Array.Clear(Foo, 0, Foo.Length); Metoda Clear() nie zmienia rozmiaru czyszczonej tablicy. Jeżeli czyścimy tablicę, która ma powiedzmy 5 elementów, to po przeprowadzeniu tej operacji nadal będzie ich miała tyle samo. Do elementów wyczyszczonej tablicy ponownie możemy przypisywać jakieś wartości.
19 Rozdział 7. Tablice i kolekcje 181 Słowo kluczowe null w języku C# oznacza wartość pustą. Clone() Copy() Find() Metoda Clone() zwraca kopię tablicy, z której została wywołana np.: Bar = Foo.Clone(); Od tej pory Bar będzie posiadała takie same elementy co Foo. Ponieważ metoda Clone() zwraca dane w postaci typu object, należy dokonać rzutowania na właściwy typ. Tzn. jeżeli mamy tablicę typu string, należy na niego dokonać odpowiedniego rzutowania, co prezentuje poniższy przykład: string[] Foo = new string[] "Pn", "Wt", "Śr", "Czw", "Pt" ; // tworzenie kopii string[] Bar = (string[])foo.clone(); foreach (string element in Bar) Console.WriteLine(element); Być może lepszym sposobem na utworzenie kopii tablicy będzie zastosowanie metody Copy(). Umożliwia ona dodatkowo określenie rozmiarów kopiowania, tj. ile elementów zostanie skopiowanych. Oto przykład: string[] Foo = new string[] "Pn", "Wt", "Śr", "Czw", "Pt" ; string[] Bar = new string[foo.length]; // tworzenie kopii Array.Copy(Foo, Bar, Foo.Length); Pierwszym parametrem tej metody musi być tablica źródłowa (kopiowana), drugim tablica, do której skopiowane zostaną elementy. Trzeci parametr to oczywiście ilość kopiowanych elementów. Metoda umożliwia przeszukanie całej tablicy w celu znalezienia danego elementu. Kwalifikacja danego elementu jako znaleziony lub też nie odbywa się przy pomocy zewnętrznej metody. Oto przykładowy program: Point[] points = new Point(10, 20), new Point(100, 200), new Point(400, 500) ;
20 182 Wstęp do programowania w języku C# Point first = Array.Find(points, pointfind); Console.WriteLine("Found: 0, 1", first.x, first.y); Console.Read(); private static bool pointfind(point point) if (point.x % 2 == 0) return true; else return false; Na samym początku zadeklarowałem tablicę struktur Point, które będą przeszukiwane. Program wyszukuje elementów tablicy, w której element X struktury Point jest liczbą parzystą. Po znalezieniu pierwszego metoda pointfind() zwraca true i kończy swe działanie. Struktura Point zadeklarowana jest w przestrzeni nazw System.Drawing. Nie zapomnij zadeklarować jej użycia przy pomocy słowa using oraz dołączyć odpowiedniego podzespołu (System.Drawing.dll). FindAll() Jak sama nazwa wskazuje, metoda FindAll() wyszukuje wszystkie elementy, które spełniają dane kryteria poszukiwań. Oto jak powinien wyglądać program z poprzedniego listingu, jeśli ma wyszukiwać wszystkie elementy: static void Main(string[] args) Point[] points = new Point(10, 20), new Point(100, 200), new Point(400, 500) ; Point[] find = Array.FindAll(points, pointfind); foreach (Point element in find) Console.WriteLine("Found: 0, 1", element.x, element.y); Console.Read();
21 Rozdział 7. Tablice i kolekcje 183 FindLast() private static bool pointfind(point point) if (point.x % 2 == 0) return true; else return false; Metoda ta działa podobnie jak Find(). Jedyna różnica jest taka, że FindLast() szuka ostatniego wystąpienia danego elementu; nie kończy pracy, gdy znajdzie pierwszy element pasujący do kryteriów. GetLength() Zwraca ilość elementów w tablicy. Umożliwia działanie na tablicach wielowymiarowych. W parametrze tej metody należy podać numer wymiaru, którego ilość elementów ma być pobrana. Jeżeli mamy do czynienia z tablicą jednowymiarową, w parametrze wypisujemy cyfrę 0. Klasa System.Array udostępnia również metodę GetLongLength(), która działa analogicznie do GetLength(), z tą różnicą, iż zwraca dane w postaci liczby typu long. GetLowerBund(), GetUpperBund() GetValue() Metoda GetLowerBund() zwraca numer najmniejszego indeksu w tablicy. W przeważającej części przypadków będzie to po prostu cyfra 0. Metoda GetUpperBund() zwraca natomiast największy indeks danej tablicy. Obie metody mogą działać na tablicach wielowymiarowych; wówczas należy w parametrze podać indeks wymiaru. Przykładowe użycie: int[] Foo = 1, 2, 3, 4, 5, 6 ; Console.WriteLine("Najmniejszy indeks: 0, największy: 1", Foo.GetLowerBound(0), Foo.GetUpperBound(0)); Prawdopodobnie nie będziesz zmuszony do częstego korzystania z tej metody, zwraca ona bowiem wartość danego elementu tablicy. W parametrze tej metody musisz podać indeks elementu, tak więc jej działanie jest równoznaczne z konstrukcją: Tablica[1]; // zwraca element znajdujący się pod indeksem 1
22 184 Wstęp do programowania w języku C# Initialize() IndexOf() Resize() SetValue() Chcąc wykorzystać tę metodę, kod możemy zapisać następująco: int[] Foo = 1, 2, 3, 4, 5, 6 ; Console.WriteLine(Foo.GetValue(1)); We wcześniejszych fragmentach tego rozdziału pisałem o inicjalizacji tablicy. Metoda Initialize() może to ułatwić. Jej użycie powoduje przypisanie każdemu elementowi pustej wartości (czyli może to być cyfra 0 lub np. wartość null). Jej użycie jest bardzo proste, nie wymaga podawania żadnych argumentów: Foo.Initialize(); Przydatna metoda. Zwraca numer indeksu na podstawie podanej wartości elementu. Przykład użycia: string[] Foo = "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nd" ; Console.WriteLine(Array.IndexOf(Foo, "Pt")); W powyższym przykładzie na konsoli zostanie wyświetlona cyfra 4, gdyż pod tym numerem kryje się element Pt. Metoda Resize() przydaje się wówczas, gdy musimy zmienić rozmiar danej tablicy. W pierwszym jej parametrze musimy podać nazwę tablicy poprzedzoną słowem kluczowym ref oznaczającym referencję. Drugim parametrem musi być nowy rozmiar tablicy: string[] Foo = "Pn", "Wt", "Śr", "Czw", "Pt", "So", "Nd" ; Array.Resize(ref Foo, Foo.Length + 5); Metoda SetValue() umożliwia nadanie wartości dla danego elementu tablicy. Prawdopodobnie nie będziesz korzystał z niej zbyt często, gdyż to samo działanie można zrealizować przy pomocy operatora przypisania. Gdybyś jednak miał wątpliwości, co do jej użycia, poniżej prezentuję przykład: Foo.SetValue("Weekend", 9); Taki zapis oznacza przypisanie wartości Weekend pod indeks nr 9.
23 Rozdział 7. Tablice i kolekcje 185 Słowo kluczowe params Mechanizm tablic języka C# nie umożliwia tworzenia tablic dynamicznych, tj. o zmiennym rozmiarze. Zmiana rozmiaru tablic (ilości elementów) jest nieco problematyczna, podobnie jak usuwanie elementów. Warto jednak wspomnieć o słowie kluczowym params, używanym w połączeniu z tablicami. Konkretnie z tablicowymi parametrami metod: static void Foo(params string[] args) Słowo params, które poprzedza właściwą deklarację parametru, mówi o tym, iż liczba elementów przekazywanych do metody będzie zmienna. Oto przykład takiego programu: using System; namespace FooApp class Program static void Foo(params string[] args) for (int i = 0; i < args.length; i++) Console.Write(args[i] + " "); Console.WriteLine(); static void Main(string[] args) Foo("Adam", "Paulina"); Foo("Adam", "Paulina", "Marta"); Console.Read(); Jak widzisz, możliwe jest przekazanie dowolnej liczby parametrów do metody Foo(). Każdy parametr będzie kolejnym elementem tablicy i jest to przydatna cecha języka C#. Możliwe jest przekazywanie parametrów różnego typu. Nagłówek metody musi wyglądać wówczas tak: static void Foo(params object[] args) Taką metodę można wywołać np. tak: Foo("Adam", 10, 12.2);
Wykład 3 Składnia języka C# (cz. 2)
Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest
Bardziej szczegółowoPodstawy programowania. Podstawy C# Tablice
Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej
Bardziej szczegółowoJęzyki i metodyka programowania. Język C# pętle, sterowanie, wyjątki
Język C# pętle, sterowanie, wyjątki Język C# pętle Pętle: while ( ) do { while ( ); for ( ; ; ) foreach ( in
Bardziej szczegółowoC# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści
C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop. 2016 Spis treści Spis rysunków 11 Spis tabel 13 Przedmowa 15 Wprowadzenie 17 Podziękowania 27 O autorach 29 1 Wprowadzenie
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoStrona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Bardziej szczegółowoLaboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
Bardziej szczegółowoWykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
Bardziej szczegółowoMyśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści
Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoWykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Bardziej szczegółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoProgramowanie Komputerów
Programowanie Komputerów Łukasz Kuszner pokój 209, WETI http://www.kaims.pl/ kuszner/ kuszner@eti.pg.gda.pl Wykład 30 godzin, Laboratoria 30 godzin 2012/ Strona 1 z 28 1. Tablice w C# Indeksowane od zera
Bardziej szczegółowo2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych
2. Tablice Tablica to struktura danych przechowująca elementy jednego typu (jednorodna). Dostęp do poszczególnych elementów składowych jest możliwy za pomocą indeksów. Rozróżniamy następujące typy tablic:
Bardziej szczegółowoKonstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.
Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class
Bardziej szczegółowoProgramowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop
Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop. 2010 Spis treści Wstęp 11 Część I PASCAL - wprowadzenie do programowania strukturalnego
Bardziej szczegółowoSpis treści. 1 Java T M
Spis treści 1 Java T M 1 2 Co to jest Platforma Java T M 1 3 Przygotowanie komputera 2 4 Pierwszy program 2 5 Dokumentacja 3 6 Budowa aplikacji. Klasy. 3 7 Pola i metody 4 8 Konstruktory 5 9 Inne proste
Bardziej szczegółowoNiezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.
Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą
Bardziej szczegółowoSpis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal
Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO Rozdział 1. Wybór i instalacja kompilatora języka Pascal 1.1. Współczesne wersje kompilatorów Pascala 1.2. Jak zainstalować
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoJAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak
JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard
Bardziej szczegółowoRozdzia l 3. Laboratorium 3. danych zawierajac
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
Bardziej szczegółowoKurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Bardziej szczegółowoMicrosoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści
Microsoft Visual C++ 2008 : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop. 2010 Spis treści Co znajdziesz w tej książce? 9 Rozdział 1. Podstawy środowiska Visual C++ 2008 11 Język C++ a.net Framework
Bardziej szczegółowoTOPIT Załącznik nr 3 Programowanie aplikacji internetowych
Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć
Bardziej szczegółowoPodstawy programowania. Wprowadzenie
Podstawy programowania Wprowadzenie Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania znaleźć matematyczne
Bardziej szczegółowoTablice. Jones Stygar na tropie zmiennych
Tablice Jones Stygar na tropie zmiennych Czym jest tablica? Obecnie praktycznie wszystkie języki programowania obsługują tablice. W matematyce odpowiednikiem tablicy jednowymiarowej jest ciąg (lub wektor),
Bardziej szczegółowoWprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoMicrosoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowoProgramowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Bardziej szczegółowoObiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoW powyższym kodzie utworzono wyliczenie dni tygodnia.
Typ wyliczeniowy (zwane również enumeration lub enum) jest to typ danych składający się z zestawu nazwanych wartości. Do zmiennej, która została zadeklarowana jako typ wyliczeniowy może być przypisane
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoPodstawy Programowania C++
Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:
Bardziej szczegółowoKiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja
1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,
Bardziej szczegółowoIMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Bardziej szczegółowoJęzyk JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Bardziej szczegółowoLab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Bardziej szczegółowoDeklaracja struktury w C++
Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem
Bardziej szczegółowoPHP: bloki kodu, tablice, obiekty i formularze
1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują
Bardziej szczegółowoMATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis
MATERIAŁY DO ZAJĘĆ I Podstawowe pojęcia Spis treści I. Algorytm II. Schemat blokowy III. Struktury danych IV. Program komputerowy V. Opis środowiska programistycznego VI. Obsługa wejścia wyjścia VII. Przykład
Bardziej szczegółowoMateriał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje
Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoZasady programowania Dokumentacja
Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika
Bardziej szczegółowoOperatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";
1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja
Bardziej szczegółowoProgramowanie w środowiskach graficznych. Wykład 3 Język C#
Programowanie w środowiskach graficznych Wykład 3 Język C# 1 Zagadnienia 1. Wprowadzenie 2. Przestrzenie nazw 3. Typy, parametry, konwersje 4. Klasy 5. Instrukcje sterujące 6. Właściwości 7. Interfejsy,
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoPodstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
Bardziej szczegółowoSwift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)
Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności
Bardziej szczegółowoProgram szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS
Program szkoleniowy Microsoft Excel VBA Poziom Podstawowy 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS 1. Nagrywanie makr Procedura nagrywania makra Nadanie odpowiedniej nazwy Przypisanie
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoJęzyki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Bardziej szczegółowoWykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Bardziej szczegółowoKOTLIN. Język programowania dla Androida
KOTLIN Język programowania dla Androida Historia Kotlin został opracowany przez firmę JetBrains Prace rozpoczęto w 2011 r., od 2012 r. dostępny na licencji Apache 2. Nazwa pochodzi od wyspy koło Petersburga
Bardziej szczegółowoC++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów
Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów
Bardziej szczegółowoWprowadzenie do programowania
do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009 ITA-104 do programowania Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu do programowania
Bardziej szczegółowoPHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoJAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Bardziej szczegółowoTablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Bardziej szczegółowoJęzyk ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Bardziej szczegółowo1 Atrybuty i metody klasowe
1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych
Bardziej szczegółowoLekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;
Do wyświetlania tekstu służy instrukcja echo echo Hello world ; PHP język ze słabą kontrolą typów. W języku php w przeciwieństwie do c++ nie musimy podawać typu zmiennej podczas jej deklaracji. Tworzenie
Bardziej szczegółowo1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania
1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca
Bardziej szczegółowoInstrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Bardziej szczegółowoKlasy cd. Struktury Interfejsy Wyjątki
Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury
Bardziej szczegółowoJęzyki skryptowe w programie Plans
Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów
Bardziej szczegółowoAplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Bardziej szczegółowoSmarty PHP. Leksykon kieszonkowy
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK
Bardziej szczegółowoProgramowanie MorphX Ax
Administrowanie Czym jest system ERP? do systemu Dynamics Ax Obsługa systemu Dynamics Ax Wyszukiwanie informacji, filtrowanie, sortowanie rekordów IntelliMorph : ukrywanie i pokazywanie ukrytych kolumn
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoLaboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
Bardziej szczegółowoProgramowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
Bardziej szczegółowoNarzędzia 2. dr inż. Tadeusz Jeleniewski
Kolekcje c.d. - Lista - Kolejka - Stos - Słownik Tworzenie i użycie klas "własnych" - Modyfikatory dostępu - Argumenty metod - Tworzenie obiektów - Hermetyzacja danych akcesory - Składowe statyczne - Usuwanie
Bardziej szczegółowoPodstawy 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
M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16
Bardziej szczegółowoPodstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Bardziej szczegółowoInformatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Wykład 4. Tablice. Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada
Bardziej szczegółowoMetodyka programowania. Podstawy C#
Metodyka programowania Podstawy C# Platforma.NET Platforma.NET (.NET Framework) Platforma programistyczna Microsoft, Obejmuje - środowisko uruchomieniowe CLR (Common Language Runtime) - biblioteki klas
Bardziej szczegółowoC++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU
Inicjalizacja agregatowa zmiennej tablicowej int a[5] = 1,2,3,4,5 INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU Struktury są również agregatami, dlatego: struct X double f; char c; X x1 = 1, 2.2, 'c' Ale
Bardziej szczegółowoJava EE produkcja oprogramowania
Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez
Bardziej szczegółowoPodstawy programowania (1)
Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie
Bardziej szczegółowoKurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Bardziej szczegółowoPętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=
Bardziej szczegółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoZofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1
PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,
Bardziej szczegółowoKlasy abstrakcyjne i interfejsy
Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie
Bardziej szczegółowoI - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
Bardziej szczegółowoKlasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13
Klasy Klasa to grupa obiektów, które mają wspólne właściwości, a obiekt jest instancją klasy. Klasa w języku Java może zawierać: pola - reprezentują stan obiektu (odniesienie do pola z kropką), methods
Bardziej szczegółowo