1 / 24

Wydział Elektroniki Kierunek: AiR

Wydział Elektroniki Kierunek: AiR. Zaawansowane metody programowania Wykład 1. Zaawansowane metody programowania Dane podstawowe . Wykład: 1 Laboratorium: 2. Wykład : ocena (kolokwium na ostatnim wykładzie) Laboratorium : ocena. Dr inż. Jerzy Kotowski

dom
Download Presentation

Wydział Elektroniki Kierunek: AiR

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wydział ElektronikiKierunek: AiR Zaawansowane metody programowania Wykład 1

  2. Zaawansowane metody programowaniaDane podstawowe Wykład: 1 Laboratorium: 2 Wykład: ocena (kolokwium na ostatnim wykładzie) Laboratorium: ocena Dr inż. Jerzy Kotowski Instytut Informatyki Automatyki i Robotyki Zakład Sterowania i Optymalizacji pok. 219 C-3 http://jerzy.kotowski.staff.iiar.pwr.wroc.pl

  3. Zaawansowane metody programowaniaOpis przedmiotu • Cele zajęć: • Opanowanie zaawansowanych technik programowania umożliwiających samodzielną implementację rozwiązań, praktyczne posługiwanie się narzędziami informatycznymi i biegłością w programowaniu • Krótki opis zawartości całego kursu: • Omawiane są techniki programowania umożliwiających programowanie w środowisku rozproszonym i równoległym­/sieciowym. Ponadto prezentowane są metody przyspieszania programów uwzględniające architektury wybranych systemów komputerowych. Poszczególne techniki ilustrowane są za pomocą programów w językach C++, Java i C#. • Zespół dydaktyczny: • Prof. dr hab. inż. Czesław Smutnicki • dr inż. Jerzy Kotowski • dr inż. Grzegorz Mzyk • dr inż. Przemysław Śliwiński

  4. Zaawansowane metody programowaniaZawartość tematyczna wykładu • Wprowadzenie do wybranych języków wysokiego poziomu (Java, C#, C++; Wybrane języki środowiska programowania) • Szablony, generyki a programowanie obiektowe • Kontenery, iteratory, algorytmy • Strumienie, przetwarzanie łańcuchów, wyrażenia regularne, wyszukiwanie wzorców • Obsługa wyjątków. Procesy i wątki. Komunikacja i synchronizacja zadań (Współbieżność, procesy wątki) • Wzorce projektowe. Uruchamianie programów (Testowanie oprogramowania) • Omówienie bibliotek interfejsu graficznego użytkownika, multimedialnych i sieciowych. • Zaliczenie

  5. Zaawansowane metody programowaniaLiteratura • Literatura podstawowa • B. Stroustrup, Język C++, Wydawnictwo Naukowo Techniczne, Warszawa, 2002. • B. Eckel, Thinking In Java, Wydawnictwo Helion, 2006 • S.B. Lippman, J. Lajoie, Podstawy języka C++, Wydawnictwo Naukowo Techniczne, Warszawa, 2003. • S. Meyers, Język C++ bardziej efektywny. 35 praktycznych sposobów ulepszenia programów, Wydawnictwa Naukowo-Techniczne, 1998 • H. Sutter, Wyjątkowy język C++ 47 łamigłówek, zadań programistycznych i rozwiązań, Wydawnictwa Naukowo-Techniczne, 2002 • D. Vandevoorde, N. M. Josuttis, C++ szablony. Vademecum profesjonalisty, Helion, 2003 • Literatura uzupełniająca • B. Stroustrup, Projektowanie i rozwój języka C++, Wydawnictwo Naukowo Techniczne, Warszawa, 1996. • D. Vandevoorde, Język C ++. Ćwiczenia i rozwiązania, Wydawnictwo Naukowo Techniczne, Warszawa, 2001. • D. E. Knuth, Sztuka programowania, T. I-III, Wydawnictwo Naukowo Techniczne, Warszawa, 2001. • S. Lippman, Model obiektu w C++, Wydawnictwa Naukowo-Techniczne, 1999. • Przyszłe wydania standardów ANSI C++ (http://www.boost.org). • Oficjalna strona języka Java (http://java.sun.com) • Oficjalna strona języka C# (http://msdn.microsoft.com/vcsharp/)

  6. Trochę historiiENIAC • Electronic Numerical Integrator And Computer; • Elektroniczny i Numeryczny Integrator i Komputer; • konstrukcja 1943-1945; do 1955; • kilka liczb: • masa ponad 27 ton, • około 18 000 lamp elektronowych • powierzchnia ok. 140 m2 • zapotrzebowanie na moc 180 kW • Szybkość obliczeń: 5 tysięcy dodawań liczb dziesiętnych dziesięciocyfrowych na sekundę • pluskwa – bug, debugger, debugging

  7. Trochę historiiSuperkomputer • FLOPS – FLoating point Operations Per Second • Wydajność komputera megaflops – 106 gigaflops – 109 teraflops – 1012 petaflops – 1015 eksaflops – 1018 zettaflops – 1021 jottaflops – 1024

  8. Trochę historiiRoadrunner • Posiadacz: Department of Energy USA • Gdzie: Los Alamos National Laboratory • 12960 mikroprocesorów Cell oraz 6948 dwurdzeniowych mikroprocesorów AMD. • System operacyjny: Red Hat Linux. • Koszt: 100 mln $ • Waga: 250 t • Szybkość docelowa: 1.5 PFLOPS

  9. Trochę historiiGeneracje języków programowania • W ciągu 50 lat powstały cztery generacje języków programowania. • W językachpierwszej generacji (FORTRAN 1, COBOL) charakterystyczny jest wspólny obszar danych globalnych, do którego odwołują się podprogramy. • Podstawami rozwoju drugiej generacji języków byłą taka modyfikacja podprogramów, by mogły one przekazywać między sobą parametry, być zagnieżdżane i mieć zróżnicowany zakres widoczności deklaracji stałych i zmiennych. Wymienione własności spowodowały powstanie strukturalnych metod projektowania oprogramowania. • Charakterystyczną cechą języków trzeciej generacji była modułowość. Wyodrębnienie modułów w procesie dekompozycji funkcjonalnej pozwalało na rozdzielenie pracy pomiędzy samodzielnych programistów (język ANSI C).

  10. Trochę historiiJęzyki czwartej generacji • Języki czwartej generacji, zwane językami obiektowymi (np. C++), zmieniają podejście do zagadnienia struktur danych. • Języki obiektowe rozszerzają pojęcie struktury danych o nowy element zwany obiektem (typem obiektowym). • Typ obiektowy zawiera dane i sposoby posługiwania się tymi danymi (metody obiektu, funkcje składowe). • Programowanie obiektowe jest metodą tworzenia oprogramowania, w której programy są organizowane jako kolekcje obiektów. • C++, Java, C# są językami programowania obiektowego.

  11. Trochę historiiC++ • Język C++ jest ewolucyjnym rozszerzeniem języka C • Język C++ zaprojektowano w celu: zachowania wysokiej efektywności i przenoszalności języka C, pełnej zgodności z językiem C, likwidacji wad języka C, w szczególności słabej kontroli typów danych, wyposażenia języka w nowoczesne mechanizmy ukrywania danych. • C++ powstał w Bell Labs w połowie 1980 - Bjarne Stroustrup • C++ dodaje do C koncepcję klasy - mechanizm, który pozwala wprowadzać nowe typy danych definiowane przez użytkownika abstract data types - ADT. W konsekwencji pozwala to na object oriented programmingOOP. • C is a machine level, while C++ is a problem level • C++ is an improved C

  12. Trochę historiiJava Powstanie: 1991 rok (18 miesięcy) Twórcy: James Gosling, Patrick Naughton, Chris Warth, Ed Frank, Mike Sheridan (Sun Microsystems). Potrzeba zdefiniowania języka niezależnego od platformy, do tworzenia oprogramowania wbudowanego w sprzęt elektroniczny powszechnego użytku (kuchenki mikrofalowe, pilot zdalnego sterowania). W miedzy czasie, pojawił się znacznie ważniejszy czynnik: sieć WWW. Przeniesienie uwagi projektantów Javy z elektroniki powszechnego użytku na programowanie dla Internetu. Wpierw: Oak. Zmiana w 1995 na Java.

  13. Trochę historiiC# • Projekt C# rozpoczął się w 1998 roku. • Celem projektu było opracowanie prostego, nowoczesnego i obiektowego języka programowania przeznaczonego dla nowej platformy .NET (nazwa .NET pojawiła się później). • C# został zaprojektowany przez zespół pod kierunkiem Andersa Hejlsberga dla firmy Microsoft. • Program napisany w języku C# jest kompilowany do języka Common Intermediate Language (CIL), tzn. kodu pośredniego wykonywanego w środowisku uruchomieniowym takim jak .NET Framework. • Wykonanie skompilowanego programu przez system operacyjny bez takiego środowiska nie jest możliwe.

  14. Zaawansowane metody programowania Microsoft Visual Studio 2008

  15. Microsoft Visual C# 2008 Pierwszy program • Create Project (File – New – Project) ->Other languages -> Visual C# -> Console Application -> Name: ZaMePro1 -> OK. • Zwyczajowo pliki C# mają rozszerzenie *.cs • Inaczej niż w C++ w C# (tak samo w Javie) nie jest możliwe tworzenie funkcji globalnych ani globalnych wskaźników do danych. • Każda aplikacja w C# musi posiadać klasę definiującą metodę Main(), która zostanie wykorzystana do punktu początkowego aplikacji. • Styl komentarzy w C# został zapożyczony z C++. • static - metoda statyczna w klasie ma zasięg klasy i może zostać wywołana bez tworzenia instancji obiektu.

  16. Microsoft Visual C# 2008 Pierwszy program – code using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZaMePro1 { class Program { static void Main(string[] args) { Console.WriteLine("Ala ma kota"); Console.ReadKey(); } } } 1.1

  17. Microsoft Visual C# 2008 Składowe Console Class • Console Class - Represents the standard input, output, and error streams for console applications. This class cannot be inherited. • WriteLine(String) - Writes the specified string value, followed by the current line terminator, to the standard output stream. • ReadKey() - Obtains the next character or function key pressed by the user. The pressed key is displayed in the console window. • Beep()- Plays the sound of a beep through the console speaker • Clear() - Clears the console buffer and corresponding console window of display information.

  18. Microsoft Visual C# 2008 Drugi program – code using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZaMePro1 { class Program { static void Main(string[] args) { Console.WriteLine("Ala ma kota"); Console.ReadKey(); Console.Beep(); Console.BackgroundColor = ConsoleColor.DarkBlue; Console.ForegroundColor = ConsoleColor.Yellow; Console.Clear(); Console.WriteLine("Ela ma kota"); Console.ReadKey(); Console.Beep(); } } } 1.2

  19. Microsoft Visual C# 2008 Argumenty funkcji main using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZaMePro1 { class Program { static void Main(string[] args) { Console.WriteLine("Ala ma kota"); Console.WriteLine(); // argumenty funkcji Main for (int x = 0; x < args.Length; x++) Console.WriteLine("Argument {0}: {1} ", x, args[x]); Console.WriteLine("\nKoniec"); Console.ReadKey(); } } } 1.3

  20. Microsoft Visual C# 2008 Konstruktory • Klasa Program ma trzy konstruktory • Nie ma destruktora • Garbage collection • Klasa ma składowe typu dane • Metoda klasy tworzy instancje obiektów swojego typu class Program { public Program() // konstruktor bez argumentów { Console.WriteLine("Ala ma kota"); } public Program(string text) // Konstruktor z argumentem { Console.WriteLine(text); } public Program(int x) // Konstruktor z argumentem { X = x; Console.WriteLine("Cena programu: {0} $", X); } int X; // Klasa Program ma składowe typu dane static void Main(string[] args) { // p1, p2, p3, p4 - tworzone wewnątrz klasy Program p1 = new Program(); // Konstrukcja obiektu Program p2; // Tylko referencja p2 = new Program("Jest i Pies!"); Program p3 = new Program(125); Program p4 = new Program(1024); Console.ReadKey(); } } 1.4

  21. Microsoft Visual C# 2008 Wszystko jest obiektem - Everything is an Object • Podstawowa różnica pomiędzy C++ i C#: • w C# wszystko jest obiektem (nawet liczba) • istnieje garbage collector (tzn. że nie musimy, a nawet nie możemy usuwać samemu niepotrzebnych obiektów) • C# został stworzony dla Microsoftu (?). • The object type is an alias for Object in the .NET Framework. In the unified type system of C#, all types, predefined and user-defined, reference types and value types, inherit directly or indirectly from Object. • You can assign values of any type to variables of type object. • When a variable of a value type is converted to object, it is said to be boxed. (pakowanie, paczka) • When a variable of type object is converted to a value type, it is said to be unboxed. (rozpakowywanie)

  22. Microsoft Visual C# 2008 Everything is an Object using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZaMePro1 { class Program { static void Main(string[] args) { object A1 = 3; // pakowanie object A2 = "Ala ma kota"; // pakowanie int A3 = (int)A1; // rozpakowywanie string A4 = (string)A2; // rozpakowywanie Console.WriteLine("A1: {0} \t\t typ: {1}", A1, A1.GetType()); Console.WriteLine("A2: {0} typ: {1}", A2, A2.GetType()); Console.WriteLine("A3: {0} \t\t typ: {1}", A3, A3.GetType()); Console.WriteLine("A4: {0} typ: {1}", A4, A4.GetType()); Console.ReadKey(); } } } 1.5

  23. Struktura programu w języku C# Klasa stos – plik Program.cs • Podstawowe pojęcia organizacyjne: • Programy • Przestrzenie nazw • Typy • Składowe • Podzespoły (assemblies). • Programy C# składają się z jednego lub kilku plików źródłowych • W języku C# nie ma potrzeby używania dyrektywy #include i plików nagłówkowych. namespace ZaMePro_2 { class Program { static void Main() { Stack s=new Stack(); s.push(1); s.push("Ala ma kota"); s.push(3.14); Console.WriteLine(s.Pop()); Console.WriteLine(s.Pop()); Console.WriteLine(s.Pop()); Console.ReadKey(); } } } 1.6

  24. Struktura programu w języku C# Klasa stos – plik Stack.cs namespace ZaMePro_2 { class Stack { Element top; // obiekt na szczycie stosu public void push(object dane) // składanie na stosie { top = new Element(top, dane); } public object Pop() // pobieranie ze stosu { if (top == null) throw new InvalidOperationException(); object result = top.dane; top = top.next; return result; } class Element // klasa zagnieżdżona { public Element next; // następny element public object dane; // element na stosie public Element(Element next, object dane) // konstruktor { this.next = next; this.dane = dane; } } } } 1.6

More Related