Podstawy programowania obiektowego
Transkrypt
Podstawy programowania obiektowego
Podstawy programowania obiektowego email: [email protected] strona: http://aragorn.pb.bialystok.pl/~tabedzki/ Marek Tabędzki 1/23 Wymagania wstępne: Wskazana byłaby znajomość podstaw programowania strukturalnego (w dowolnym języku). Tematy zajęć: 1. Pojecie programu. Zmienne, typy zmiennych, instrukcje przypisania, operatory, instrukcje wejścia/ wyjścia. Instrukcje warunkowe. 2. Instrukcje iteracyjne. Operatory logiczne. 3. Typy tablicowe. Algorytmy dotyczące tablic (sortowanie, wyszukiwanie). 4. Wyodrębnianie kodu w postaci funkcji. Wywoływanie funkcji. Parametry funkcji. 5. Pojecie klasy i obiektu. Składowe klasy: pola i metody. Tworzenie i usuwanie obiektów. 6. Pojecie interfejsu i implementacji. Hermetyzacja. Kompozycja - korzystanie z gotowych klas. 7. Dziedziczenie. Wywołania konstruktorów w dziedziczeniu. Rzutowanie w górę i w dół. Nadpisywanie metod - polimorfizm. 8. Typy interfejsowe. Korzystanie z mechanizmu wyjątków. Klasy generyczne. Literatura i oprogramowanie: 1. Microsoft Visual Studio (może być w wersji Express) lub MonoDevelop (dla środowiska Linux) 2. Marcin Lis: C#. Praktyczny kurs (Helion) 3. Adam Boduch: Wstęp do programowania w języku C# (Helion) 4. ...czy jedna z wielu innych książek dotyczących podstaw programowania w C# 5. Materiały dostępne w Internecie, np.: • http://www.csharp-station.com/ • http://ivlo.neostrada.pl/cs_lekcje/index.htm Zaliczenie: Brak odrębnej oceny za wykład. Ocena łączna z zajęć z tego przedmiotu na podstawie Pracowni Specjalistycznej. 2/23 Programowanie: Proces projektowania i tworzenia kodu źródłowego programów komputerowych. PROBLEM → ALGORYTM algorytmizacja → PROGRAM kodowanie P R O G R A M O WA N I E Algorytm: Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego rodzaju zadań. Przepis podający w skończonej liczbie kroków rozwiązanie określonego problemu. Algorytm można zapisać w dowolnym języku (np. język polski). Inne sposoby zapisu algorytmu: schematy blokowe, pseudokod. 3/23 Przykład: wyświetl napis powitalny wczytaj liczbę jeśli liczba jest ujemna zamień ją na dodatnią wyciągnij pierwiastek z liczby wypisz wynik zakończ program START wyświetl „podaj liczbę” wczytaj x TAK x = -x Console.Write("Podaj liczbę "); double x; x = double.Parse(Console.ReadLine()); if (x < 0) x = -x; double wynik = Math.Sqrt(x); Console.WriteLine(wynik); Console.ReadKey(); x<0 ? NIE wynik = sqrt(x) wypisz wynik END 4/23 przykładowy program w C#: // Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; program: ciąg znaków - rozmiar znaków ma znaczenie składniki: - słowa kluczowe - identyfikatory - stałe i napisy - operatory - separatory namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Hello!"); Console.ReadKey(); } } } 5/23 static void Main(string[] args) { // tu umieszczamy nasz kod Console.WriteLine("cześć!"); Console.Write("2 + 2 = "); Console.WriteLine(2 + 2); /* ten fragment zostanie zignorowany Console.WriteLine("3 / 2 = "); */ Console.WriteLine("A jak wypisać \"cudzysłów\"?"); Console.WriteLine("Jak w takim razie wypisać znak \\?"); Console.WriteLine("2 + 2 = " + 4); Console.WriteLine("2 + 2 = {0}", 4); Console.ReadKey(); } efekt: cześć! 2 + 2 = 4 A jak wypisać "cudzysłów"? Jak w takim razie wypisać znak \? 2 + 2 = 4 2 + 2 = 4 6/23 co to jest zmienna? static void Main(string[] args) { int a; a int b, c; b c } 7/23 co to jest zmienna? static void Main(string[] args) { int a; a int b, c; 2 a = 2; b c } 8/23 co to jest zmienna? static void Main(string[] args) { int a; a int b, c; 2 a = 2; b = 3; b c 3 } 9/23 co to jest zmienna? static void Main(string[] args) { int a; a c b int b, c; 2 5 3 a = 2; b = 3; c = a + b; Console.WriteLine("wynik wynosi " + c); Console.WriteLine("{0} + {1} = {2}", a, b, c); } wynik wynosi 5 2 + 3 = 5 10/23 static void Main(string[] args) { int a; a c b int b, c; 2 5 3 a = 2; b = 3; c = a + b; Console.WriteLine("wynik wynosi " + c); Console.WriteLine("{0} + {1} = {2}", a, b, c); Console.WriteLine(a); // wartość zmiennej a Console.WriteLine("a"); // napis "a" int e; Console.WriteLine(e); // błąd! e = 100; Console.WriteLine(e); // ok Console.ReadKey(); } 11/23 static void Main(string[] args) { // typ zmiennej // całkowity int a; // również long, short, byte a = 2; double x; // również float, decimal x = 2.5; bool b; b = true; // lub false char z; z = '@'; // nie mylić z "@" 2 2,5 True @ dzień dobry string txt; txt = "dzień dobry"; Console.WriteLine("{0}\n{1}\n{2}\n{3}\n{4}",a,x,b,z,txt); Console.ReadKey(); } 12/23 static void Main(string[] args) { // podstawienie a int a = 2, b, c; b c a b c 2 2 a b 10 2 a b c 10 2 12 2 a = b; b = a; 10 = a; a = 10; a + b = c c = a + b; } // błąd // ok // błąd // ok c // błąd // ok 13/23 static void Main(string[] args) { // zamiana dwóch zmiennych int a, b; a = 2; b = 3; Console.WriteLine("a={0}, b={1}", a, b); // złe rozwiązanie a = b; b = a; Console.WriteLine("a={0}, b={1}", a, b); Console.ReadKey(); } a=2, b=3 a=3, b=3 a b 2 3 a b 3 3 a b 3 3 14/23 static void Main(string[] args) { // zamiana dwóch zmiennych int a, b; a = 2; a b = 3; Console.WriteLine("a={0}, b={1}", a, b);2 } // dobre rozwiązanie int c; a c = a; a = b; 2 b = c; Console.WriteLine("a={0}, b={1}", a, b); Console.ReadKey(); a a=2, b=3 a=3, b=2 b c 3 b c 3 2 b c 3 3 2 a b c 3 2 2 15/23 static void Main(string[] args) { int a = 5, b = 2, c; c = 5 / 2; // wynik: 2 c = 5 % 2; // reszta z dzielenia c = 2 + 3 / 2 - 3 * 5 + 11 % 3; c = (2 + 3) / 2 - 3 * (5 + 11 % 3); c += b; // c = c + b; c++; c--; // c = c + 1; // c = c - 1; double x = 2, y; y y y y y = = = = = Math.Sqrt(x); Math.Pow(2, 3); Math.Abs(-1.5); Math.Sin(Math.PI / 6); Math.Round(Math.E); // // // // // pierwiastek kwadratowy potęga wartość bezwzględna sinus zaokrąglenie } 16/23 static void Main(string[] args) { // konwersja typów int x; double y; x = 5 / 2; // wynik: 2 y = 5 / 2; // wynik: 2 y = 5.0 / 2; // wynik: 2.5 y = (double)5 / 2; // wynik: 2.5 y = 1.0 + 5 / 2; y = 1 + 5 / 2.0; // wynik: 3 // wynik: 3.5 y = x; // ok x = y; // błąd! x = (int)y; // ok (obcięcie części ułamkowej) } 17/23 funkcje wejścia/ wyjścia: static void Main(string[] args) { // pobieranie wartości z konsoli Console.Write("Jak masz na imię? "); string imie; imie = Console.ReadLine(); Console.WriteLine("{0} to bardzo ładne imię", imie); // pobieranie wartości liczbowej Console.Write("Ile masz lat? "); string wiek; wiek = Console.ReadLine(); Console.WriteLine("Naprawdę? A ja {0}!", wiek * 2 + 7); int w = int.Parse(wiek); Console.WriteLine("Naprawdę? A ja {0}!", w * 2 + 7); Console.ReadKey(); } 18/23 static void Main(string[] args) { // znak '.' jako miejsce dziesiętne przy wczytywaniu // i wypisywaniu liczb rzeczywistych System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); Console.Write("Podaj napis > "); string napis = Console.ReadLine(); Console.Write("Podaj liczbę całkowitą > "); int a = int.Parse(Console.ReadLine()); Console.Write("Podaj liczbę rzeczywistą > "); double b = double.Parse(Console.ReadLine()); Console.WriteLine("podałeś: {0}, {1}, {2}", napis, a, b); Console.ReadKey(); } 19/23 przeliczanie walut: static void Main(string[] args) { Console.Write("Podaj kwotę w euro: "); double euro = double.Parse(Console.ReadLine()); const double przelicznik = 3.97; double zł = Math.Round(euro / przelicznik, 2); Console.WriteLine("{0} euro = {1} zł", euro, zł); Console.ReadKey(); } inne rozwiązanie: double zł = euro / przelicznik; Console.WriteLine("{0} euro = {1:F2} zł", euro, zł); 20/23 pole trójkąta static void Main(string[] args) { Console.WriteLine("Program oblicza pole trójkąta"); Console.Write("Podaj długość podstawy: "); double a = double.Parse(Console.ReadLine()); Console.Write("Podaj wysokość: "); double h = double.Parse(Console.ReadLine()); double pole = a * h / 2; Console.WriteLine("Pole trójkąta wynosi {0}", pole); Console.ReadKey(); } 21/23 przeliczanie minut na godziny: static void Main(string[] args) { Console.WriteLine("Podaj czas w minutach"); int minuty = int.Parse(Console.ReadLine()); int godziny = minuty / 60; minuty %= 60; godziny %= 24; Console.WriteLine("{0}:{1:00}", godziny, minuty); Console.ReadKey(); } 22/23 pierwiastki równania kwadratowego: static void Main(string[] args) { Console.WriteLine("Pierwiastki równania kwadratowego."); Console.Write("Podaj a: "); double a = double.Parse(Console.ReadLine()); Console.Write("Podaj b: "); double b = double.Parse(Console.ReadLine()); Console.Write("Podaj c: "); double c = double.Parse(Console.ReadLine()); double delta = b * b - 4 * a * c; double x1 = (-b - Math.Sqrt(delta)) / (2 * a); double x2 = (-b + Math.Sqrt(delta)) / (2 * a); Console.WriteLine("x1 = {0}\nx2 = {1}", x1, x2); Console.ReadKey(); } 23/23