Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Programování I Úvod Jan Růžička

Podobné prezentace


Prezentace na téma: "Programování I Úvod Jan Růžička"— Transkript prezentace:

1 Programování I Úvod Jan Růžička jan.ruzicka@vsb.cz

2 Studijní materiály ● http://gis.vsb.cz/ruzicka ● http://gis.vsb.cz/ruzickova

3 Cíle ● Algoritmizace ● Kódování ● Návrh software ● Testování ● Platformy, nástroje ●.NET Framework

4 Očekávání ● S pomocí – Schopni popsat algoritmem jednoduchou úlohu – Schopni tento algoritmus zapsat v programovacím jazyce ● Bez pomoci – Porozumět jednoduchému cizímu kódu

5 Proč ● Příklad 1: Šeliga ● Příklad 2: Jenks

6 Algoritmizace ● Rozděl a panuj ● Př. Točení piva

7 Jazyky ● Strojově orientované – assembler – strojový jazyk ● Vyšší – procedurální (C#, Java, Visual Basic, Pascal,...) – funkcionální (Haskel, Lisp) – analytický, matematický, ekonomický software

8 Jazyky / 2 ● Objektově orientované ● Značkovací

9 Jazyky / 3 ● Kompilované ● Interpretované – zdrojové – pseudokódové (mezikódové)

10 Kompilované Zdrojový kód v jazyku C Překlad v GNU Linuxu Překlad v Solarisu Překlad v MS Windows Program pro MS Windows Program pro Solaris Program pro GNU Linux OS MS Windows OS GNU Linux OS Solaris

11 Interpretované Zdrojový kód v jazyku Java soubor.java Překlad (javac) Bytecode soubor.class OS MS Windows OS GNU Linux OS Solaris JR E

12 Objektově orientované programování ● Třída ● Rozhraní ● Zapouzdření ● Dědičnost ● Předefinování ● Polymorfismus

13 Procedurální programování ● Proměnné ● Vstup, Výstup ● Řídící struktury (podmínky, cykly) ● Procedury

14 Aplikace ● Command Line ● GUI ● WebGUI ●...

15 Aplikace ● Stand alone ● Klient/server ● Distribuované

16 Aplikace ● Knihovny (DLL, SO,...) ● Spouštěče (EXE, SH)

17 C# ● Moderní ● Žádaný ● Relativně jednoduchý ● Objektově orientovaný ● Svázaný s platformou.NET

18 .NET Framework ● Sada knihoven, interpretu a překladače ● Dostupná na téměř všech OS MS Windows ● Dostupná omezeně pro MacOS a GNU/Linux

19 Vývojová prostředí pro C# ● V zásadě jakýkoli textový editor ● Lépe však IDE ● Reálně tři možnosti – MS Visual Studio – SharpDevelop – MonoDevelop

20 Visual Studio

21 SharpDevelop

22 MonoDevelop

23 Základy jazyka C# // Hello1.cs public class Hello1 { public static void Main() { System.Console.WriteLine("Hello, World!"); }

24 Základy jazyka C# // Hello1.cs using System; public class Hello1 { public static void Main() { Console.WriteLine("Hello, World!"); }

25 Algoritmus hledání území ● Vstupy – Podmínky – Oblast ● Možnost nenalezení výsledku – cyklus, podmínka, opakování vstupu

26 C# ● Výjimky ● Komponentové programování ● Jednoduchá dedičnost, více rozhraní ● Přidává události ● Automatická správa paměti

27 C# - Datové typy ● Objekty ● Primitivní datové typy ● Pole

28 C# - Primitivní datové typy ● bool, int, double, short, char,... bool content = true; int pocet = 150;

29 C# - Objekty ● Téměř vše ostatní Osoba karel = new Osoba(); Map mapa = new Map();

30 C# - Podmínka if (oblasti.Count < 1) { //Zmen parametry //Spust analyzu znovu }

31 C# - Podmínka / 2 if (oblasti.Count < 1) { //Zmen parametry //Spust analyzu znovu } else { //Zobraz vysledky }

32 C# - Cyklus do { SpustitAnalyzu(parametry) if (uzemi.Count < 1) { //Zmen parametry; } } while (uzemi.Count < 1);

33 C# - Komentáře /// /// Summary description. /// class Class1 { static void Main(string[] args) { // TODO: Add code }

34 .NET Framework ● Sada knihoven, interpretu a překladače ● Dostupná na téměř všech OS MS Windows ● Dostupná omezeně pro MacOS a GNU/Linux

35 Common Language Runtime

36 Assembly ● Nasazování aplikací ● Kolekce EXE, DLL, module, manifest ● Private ● Shared (př. Windows Forms)

37 C# - OOP ● Struktury – struct ● Třídy – class ● Rozhraní – interface

38 C# - Vlastnosti ● Členská data – public int vek; ● Vlastnosti private short pvek; public short Vek { get { return pvek; } set { pvek = value; }

39 C# - Metody ● Běžné procedury (funkce)

40 C# - Metody - parametry ● Hodnotou ● Odkazem (ref) ● Výstupní (out)

41 C# - Konstruktory public Osoba() { } public Osoba(string jmeno) { pjmeno = jmeno; }

42 C# - Dědičnost class Student : Osoba { }

43 C# - Výjimky try { } catch (Exception ex) { }

44 .NET - System.Object ● Základní třída ● Všechny ostattní jsou z ní odvozeny

45 .NET - Soubory ● System.IO ● StreamReader ● StreamWriter ● FileStream ● File ● Directory

46 Zápis do textového souboru using System.IO;... FileStream fs = new FileStream("soubor.txt", FileMode.Create); StreamWriter sw = new StreamWriter(fs); for(int i=0; i<text.GetLength(); i++) { sw.WriteLine(i); }... sw.Close();

47 Čtení z textového souboru... FileStream fs = new FileStream("soubor.txt"); StreamReader sr = new StreamReader(fs); while((line = sr.ReadLine()) != null) { Console.WriteLine(line); } sr.Close();...

48 Zápis do binárního souboru using System.IO;... BinaryWriter bw = new BinaryWriter(File.Create("soubor.bin")); for(int i=0; i<text.GetLength(0); i++) bw.Write(i); bw.Close();...

49 Čtení z binárního souboru using System.IO;... BinaryReader br = new BinaryReader(File.Open("soubor.bin")); try { while(true) Console.WriteLine(br.ReadInt32()); } catch (EndOfStreamException ex) {} finally { br.Close(); }

50 .NET - System.String ● IndexOf ● Replace ● Split ● Substring ● Trim ● Compare

51 Algoritmus náhrady řetězců ● Textový soubor k překladu ● Soubor s českými slovy ● Soubor s maďarskými ekvivalenty

52 Jednorozměné pole ● typ[] nazev_pole; ● int[] polecisel; ● int[] polecisel = new int[10]; ● int[] polecisel = new int[2] {1, 3};

53 Použití ● polecisel[0] = 10; ● polecisel[1] = 15; ● int x = polecisel[0] + polecisel[1];

54 Vícerozměrná pole ● int[,] pole; ● int[,] pole = new int[2,2] ; ● int[,] pole = new int[2,2] { {2, 1}, {4, 3} };

55 Kolekce ● Podobně jako pole ● Více ruzných struktur ● Lepší práce

56 Iterování ● Stejné pro všechny druhy ● Zajištěno s využitím – IEnumerable – IEnumerator

57 IEnumerable, IEnumerator public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator { bool MoveNext(); object Current {get;} void Reset(); }

58 Příklad procházení MyCollection myCollection = new MyCollection();... IEnumerator ie = myCollection.GetEnumerator(); while(ie.MoveNext()) { XXX item = (XXX) ie.Current; Console.WriteLine(item);... }

59 Příklad procházení MyCollection myCollection = new MyCollection()... foreach(XXX item in myCollection) { Console.WriteLine(item);... }

60 ICollection public interface ICollection : IEnumerable { void copyTo(Array array, int index); int Count {get;} bool IsReadOnly {get;} bool IsSynchronized {get;} object SyncRoot {get;} }

61 IList public interface IList : ICollection, IEnumerable { object this[int index] {get; set;} int Add(object o); void Clear(); bool Contains(object value); int IndexOf(object value); void Insert(int index, object value); void Remove(object value); void RemoveAt(int index); }

62 IDictionary public interface IDictionary : ICollection, IEnumerable { object this[object key] {get; set;} ICollection Keys {get;} ICollection Values {get;} void Clear(); bool Contains(object value); IDictionaryEnumerator GetEnumerator(); void Remove(object key); }

63 Existující třídy kolekcí ● Array ● ArrayList ● Hashtable ● Queue ● Stack ● SortedList

64 Vícevláknové aplikace ● Nezávislé části kódu běžící v rámci jedné aplikace “paralelně”

65 Thread ● Instance třídy Thread ● Konstruktor třídy Thread s parametrem ThreadStart ● ThreadStart je delegát ukazující na metodu kde má začít běh vlákna Thread t = new Thread(new ThreadStart(vl.Makej));

66 Spuštění ● Metoda Start třídy Thread Thread t = new Thread(new ThreadStart(vl.Makej)); t.Start();

67 Lock ● Zamezení přístupu jiného vlákna lock (this) { for(char c='a'; c<'z'; c++) { Console.Write(c); }

68 Řízení běhu ● Předání běhu jinému vláknu lock (this) { for(char c='a'; c<'z'; c++) { Console.Write(c); Monitor.Pulse(this); Monitor.Wait(this); }

69 ADO.NET ● Access Data Objects ● Connection ● DataAdapter ● DataSet ● SqlCommand ● SqlDataReader

70 ADO.NET Databáze Připojení Datový adaptér Sada dat Formulář s vázanými ovládacími prvky

71 Connection 1/5 ● Připojení k datovému zdroji ● Různé druhy zdrojů ● SqlConnection (MS SQL Server) ● OLE DB Connection (MS Access (JET), MS Excel, DBF,...) ● ODBC Connection ● Oracle Connection ●...

72 Connection 2/5 ● using System.Data; ● using System.Data.SqlClient; ● SqlConnection ● SqlConnection.ConnectionString

73 Connection 3/5 sqlConnection = new System.Data.SqlClient.SqlConnection(); sqlConnection.ConnectionString = "workstation id=GIS;packet size=4096;integrated " + "security=SSPI;data source=GIS;persist security info=False;initial catalog=master";

74 Connection 4/5 connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + _ "Data Source=D:\Pokusna.mdb;"D:\Pokusna.mdb New OleDbConnection(connectionString)

75 Connection 5/5 try { sqlConnection.Open(); } catch (Exception ex) { Console.Write(ex.Message); }

76 ADO.NET Usnadnění 1/5 ● ServerExplorer ● Průvodce vytvořením spojení ● Průvodce vytvořením adapteru ● Průvodce vytvořením datové sady

77 ADO.NET Usnadnění 2/5

78 ADO.NET Usnadnění 3/5

79 ADO.NET Usnadnění 4/5

80 ADO.NET Usnadnění 5/5

81 DataAdapter ● Prostředník mezi datovým zdrojem a datovou sadou ● Má definovány SQL dotazy – SELECT – UPDATE, INSERT, DELETE ● Metoda Fill – naplnění datové sady

82 DataSet ● I více tabulek ● Vazby ● Off line ● XSD – schéma dat ● Možnost převodu do XML

83 Přístup k datům ● V kódu ● Přes vázané ovládací prvky

84 Přístup k datům v kódu string s = dsZam.Zamestnanci[0].IDzam;

85 Přístup k datům přes prvky ● TextBox, ● ComboBox, ● ListBox, ● CheckBox, ● RadioButton, ● DataGrid ● PictureBox

86 Přístup k datům přes prvky 2

87 Přístup k datům přes prvky 3 ● Vlastnost DataBindings

88 Čtení přes SqlDataReader SqlCommand cmd = new SqlCommand("select * from Customers", conn); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { Console.WriteLine(rdr[0]); }

89 Editace ● Přes vázané ovládací prvky ● Pomocí metod a vlastností tříd DataSet a DataAdapter ● Pomocí SqlCommand

90 Změna hodnoty pole ● DataSet.Tabulka[Řádek].Sloupec = “hodnota” dsZam.Zamestnanci[0].IDzam = “ruz76”;

91 Změna dat ve zdroji ● DataAdapter.Update(DataSet); ● DataAdapter.Update(DataTable); ● DataAdapter.Update(DataRow);

92 Změna dat ve zdroji ● DataAdapter.Update(DataSet); try { OleDbDA.Update(dsZamestnanci); } catch (Exception ex) {... }

93 Pomocí SqlCommand string insertString = @" insert into Categories (CategoryName, Description) values ('Miscellaneous', 'xx')"; SqlCommand cmd = new SqlCommand(insertString, conn); cmd.ExecuteNonQuery();

94 Transakce ● Spojení poskytuje instanci transakce ● Váže se s DataAdapterem a jeho příkazy pro aktualizaci

95 Transakce 2 tr = Con.BeginTransaction(); DbDA.DeleteCommand.Transaction = tr; DbDA.InsertCommand.Transaction = tr; try { DbDA.Update(dsZamestnanci); tr.Commit(); } catch (Exception ex) { tr.Rollback(); }

96 Zdroje ● http://msdn.microsoft.com/en- us/library/aa288436(VS.71).aspx ● http://monodevelop.com/ ● http://en.wikipedia.org/wiki/Image:Microsoft_Vis ual_Studio_2008_SP1.png ● http://www.icsharpcode.net/OpenSource/SD/

97 Zdroje ● http://www.majda.cz/vyuka/2006- 2007/swi113/slajdy.html ● http://www.ceskatelevize.cz/specialy/arabela1/p ostavy/kral/01-m.jpg ● http://www.vijaymukhi.com/documents/books/vs net/content.htm ● http://service.felk.cvut.cz/courses/X36ALG/pred nasky/index.html

98 Zdroje ● http://gis.vsb.cz/ruzickova/ ● http://www.csharp-station.com/Tutorials/ ● http://www.cs.vsb.cz/behalek/vyuka/pcsharp ● http://programujte.com/index.php?rubrika=26&s ekce=139&kategorie=361


Stáhnout ppt "Programování I Úvod Jan Růžička"

Podobné prezentace


Reklamy Google