II. Języki programowania
Transkrypt
II. Języki programowania
1 II. Języki programowania 2 Proces: algorytm => program Człowiek: –tworzy algorytm –zapisuje algorytm w postaci programu (postać źródłowa) Komputer: –tłumaczy program do kodu maszynowego (postać wykonywalna) –wykonuje program 3 A w praktyce… 4 Etapy programowania Etap projektowania – – – – defnicja i analiza problemu specyfikacja rozwiązania problemu układanie i zapis algorytmu sprawdzenie poprawności rozwiązania (zgodności ze specyfikacją) Etap implementacji – kodowanie (tłumaczenie algorytmu na język programowania) – translacja (do kodu maszynowego) – testowanie i usuwanie błędów (z pomocą komputera) Etap instalacji na docelowym komputerze Etap użytkowania i pielęgnacji 5 Ważne Dokumentacja –algorytm –dokumentacja techniczna –dokumentacja użytkowa –komentarze Błędy w programie (ale nie na sprawdzianie…) –Koszty błędów na poszczególnych etapach –Rola testowania i uruchamiania –Błędy kompilacji, wykonania, algorytmu – będzie wykład! 6 Rozwój języków programowania Generacje języków: – Układ przełączników i przekaźników (ENIAC) – 1 GL (język maszynowy) 1 – 1 GL (język maszynowy) – 2 GL (assembler, translator) – 3 GL FLOW-MATIC - 1952 Grace Hopper; FORTRAN (IBM, 1954÷57) C, C++, Pascal, Java, Delphi, C#, … – 4 GL (języki zapytań, generatory raportów, przetwarzanie danych, analiza i raportowanie) SQL, FOCUS, PL/SQL, NATURAL, Progress 4GL,… BuildProfessional, GEMBase, IDL-PV/WAVE, LINC, NATURAL, … Clarion, Ab Initio, ABAP, Aubit-4GL, Informix-4GL, … – 5 GL – Prolog, Lisp 7 Od źródła do kodu Pojęcie translatora –interpreter –kompilator –kompilator skrośny (cross-compiler – inna platforma) kod pośredni (pre-kod) środowisko uruchomieniowe Java, .NET Zintegrowane środowisko programistyczne (Integrated Development Environment, IDE) - aplikacja do: –tworzenia, modyfikowania, testowania –konserwacji oprogramowania. 8 Dydaktyka-Pascal Algol Pascal (Blaise Pascal), Niklausa Wirtha, 1970 – The programming language Pascal, Acta Informatica 1/1971 – The programming language Pascal (Revised Report), Bericht der Fachrgruppe Computer – Wissenschaften 5/1972 – pierwszy podręcznik: Jensen, Wirth, Pascal, User Manual and Report 1974. Pierwotnie: do nauki programowania strukturalnego. Szczyt popularności: lata 80, początek 90 – Borland International – Turbo Pascal – dialekt obiektowy: – Object Pascal (w Delphi, Kyliksie – Borland). Wolne: kompilator- Free Pascal, środowisko IDE- Lazarus. Ciekawe linki: www.freepascal.org - darmowy, 32-bitowy kompilator Pascala www.pascal.eu.org - kurs programowania w Pascalu dla początkujących http://turbopascal.helion.pl - Turbo Pascal. Programowanie, Helion, dostępne w internecie www.centrumpascal.republika.pl - kursy i artykuły dot. TP 9 Od C do C#... AT&T Bell Laboratories, Dennis Ritchie, 1972 roku. 1973 - jądro UNIXa zostało przepisane w C. 1978 Brian Kernigham i Dennis Ritchie –książka C Programming Language, (biblia) 1989 Amerykański Narodowy Instytut Standaryzacji –standard języka C (ANSI C). 80: B. Stroustrup, AT&T Bell Laboratories: C++ (obiektowo) 2 80: B. Stroustrup, AT&T Bell Laboratories: C++ (obiektowo) 1999 Anders Hejlsberg (TurboPascal, Delphi, Visuala J++, C#): # - to hash; ale C# to C-sharp Struktura programu 10 Program zrozumiany przez komputer (możliwy do przetłumaczenia) –napisany zgodnie ze sztywnymi regułami –używanie jedynie specjalnych kombinacji wybranych symboli i tzw. słów kluczowych. – Zestaw takich reguł to –składnia języka programowania. Struktura programu 11 (uproszczona) 1 Pascal program nazwaProgramu; sekcja deklaracji begin sekcja programu: pierwsza instrukcja; druga instrukcja; ... ostatnia instrukcja end. 2 C# class Hello { static void Main() { pierwsza instrukcja; druga instrukcja; ... ostatnia instrukcja } } 12 Punkt startowy Od metody Main, czyli w pliku źródłowym: static void Main(string[] args) lub static void Main() – też: public static pojęcia: metoda, void – Programowanie Obiektowe można przyjąć że metoda to pewne polecenie (funkcja, procedura) 3 można przyjąć że metoda to pewne polecenie (funkcja, procedura) – nie jest bezpośrednio instrukcją danego języka – kompilator potrafi zamienić to na ciąg instrukcji. Za metodą Main - blok kodu – pewna logiczna całość, – złożony z instrukcji programu, – zamknięty nawiasami klamrowymi. Program: kolekcja klas 13 Przestrzeń nazw Klasy umieszczane są w pewnych logicznych „pudełkach na nazwy” - namespace namespace PierwszyProgram { class Program { static void Main(string[] args) {… } } } Jeżeli tylko jedna przestrzeń – nie trzeba definiować 14 Nazwy Nazwa kwalifikowana (bezwzględna) klasy: PierwszyProgram.Program –skrócona (w programie): Program –także „sięgnięcie” do innej przestrzeni nazw: using np. using System; oznacza, że jeżeli kompilator nie rozpoznaje jakiejś nazwy w bieżącym kontekście, powinien sprawdzić przestrzeń nazw System. 15 Ogólne zasady formatowania kodu Każdą instrukcję kończ znakiem średnika „;” Uważaj na wielkość liter! main <> Main Używaj wcięć, różnicuj bloki zagnieżdżone Stosuj komentarze – komentarz w linii //treść komentarza – komentarz blokowy /* treść komentarza */ Dla kogo komentarz? Wykorzystuj IntelliSense – pomoc środowiska Visual Studio – automatycznie uzupełnia i formatuje nazwy 16 Zasady dot. nazw 4 Identyfikator to ciąg znaków –a-z, A-Z (duże i małe litery są rozróżniane) –0-9, znak podkreślenia _ Pierwszym znakiem musi być litera lub ”_”! –dobrze: x, Xmax, Xk_10, zm5, ZM5, _ (!!!) –źle: 6, 2zmienna, class, ile dni, ile-dni –konwencja nazwa – dla programisty –źle: x1, x2, z50, z34 –dobrze: ileDni, pensjaPracownika, saldoKonta zwyczajowo: –całkowite: i, j, k, l, m, n 17 Operacje In/Out Operacja Out –wypisanie tekstu na ekranie Console.WriteLine("Tekst do wypisania"); Console.Write("Tekst do wypisania"); Operacja In –pobranie danych z klawiatury Console.ReadLine(); Console.Read(); W przestrzeni nazw System System.Console.WriteLine("Tekst…"); using System lub using System.Console 18 Pierwszy przykład program hello; begin writeln(’Hello world’) end. słowo kluczowe, instrukcja Co „potrafi” komputer? – dziedzina algorytmiczna 19 Dziedzina algorytmiczna Dziedziną algorytmiczną nazywamy system gdzie: A pewien niepusty zbiór, tzw. nośnik r1,…, rk relacje określone na elementach tego zbioru, f1,…, fl operacje (funkcje) określone na elementach ze zbioru A i dające 5 f1,…, fl operacje (funkcje) określone na elementach ze zbioru A i dające wynik w zbiorze A, – funkcje nie muszą być całkowite (określone dla każdego zestawu argumentów) – Ten zestaw operacji i relacji, którymi dysponujemy decyduje o możliwości opisywania algorytmów służy do określenia tzw. złożoności algorytmu – jest to miara służąca do porównywania różnych algorytmów 20 Przykłady dziedzin algorytmicznych Arytmetyka 4 (?) klasa SP –zbiór: liczby R, –operacje: +, -, *, / –relacje: <, >, , , = NWD(a, b) (Euklides1 – np. 72 i 20) –zbiór: liczby N, –operacje: -, zamień –relacje: =, <, NWW (a, b) = a*b/NWD(a, b) ? Dziedzina dla równania kwadratowego? 21 W języku programowania Na czym wykonywane są operacje? Jakie operacje są dostępne? dozwolone? –dziedzina algorytmiczna to typ danych Typy danych w C# –wartościowe (prosty, wyliczeniowy, struktura) bezpośrednio zawierają wartości dane –referencyjne (klasa, interfejs, delegacja, tablica) zawierają referencję do właściwej danej – 22 Typy wartościowe (wybrane) 23 Pozostałe (wybrane) 24 Literały Stałe logiczne (bool) – true; false; Stałe całkowite (int, sbyte, short, long, byte…) – dziesiętne: 0; 12; -234; – szesnastkowe: 0xFF; -0xAF; Stałe rzeczywiste (float, double, decimal…) – 2.3; 2.3e2; .23; 4f; -2.3e-10; 6 Stałe znakowe (chr) – 'a'; 'X'; '1'; '\''; '\\'; '\x004d'; '\xc' Stałe napisowe (string) – "Napis"; "\"Pan Tadeusz\""; @"C:\Kurs\"; Stałe nazwane (const) – const double PI = 3.14159265; 25 Zmienne Pole koła to: r2 (dla dowolnego koła o promienmiu r) Program: dla dowolnych (…) danych – deklaracja zmiennych (raz w bloku!) – inicjalizacja zmiennych (opcja) – przeznaczone do przechowywania danych określonego typu Przykład: int wys; // deklaracja zmiennej typu int o nazwie wys double pole; // dekl. zmiennej typu double o nazwie pole string s; //sekwencja znaków – kilka zmiennych tego samego typu: int wys, szer, dl, obj; int n, m, r; char litera1, litera2; 26 Zmienne, identyfikatory typ nazwa[=wyrażenie] [,nazwa_n[=wyrażenie_n] ]; int x; int a = 10, b = 20, c; Nazwa - identyfikator: –składa się z liter, cyfr i znaku podkreślenia –nie może zaczynać się od cyfry –nie może być słowem kluczowym abstract, event, new, struct, as, explicit, null, … –musi być unikalna w bloku kodu! – wielkość liter!!! 27 Konwencje Nieprzestrzeganie nie powoduje błędów, ale: – świadczy o dobrym stylu – ułatwia późniejszą analizę. Zasady: – stosuj identyfikatory mówiące, do czego służy zmienna; nazwa powinna mieć konkretne znaczenie, – używaj formatu PascalCase lub formatu camelCase PascalCase: WriteLine, ReadLine, Console, SByte – formatu używamy dla nazw typów, stałych nazwanych, właściwości, przestrzeni nazw. camelCase: loopCountMax – formatu używamy dla nazw zmiennych lokalnych, parametrów funkcji. – – – – – unikaj znaku podkreślenia, nie używaj notacji węgierskiej (prefiks - informacja o typie zmiennej), unikaj skrótów i akronimów (jeżeli, to powszechnie znane i rozumiane), stosuj w miarę możliwości nazwy anglojęzyczne (szczególnie przy tworzeniu bibliotek), nie mieszaj języków (np. w nazwach słów angielskich i polskich) 7 nie mieszaj języków (np. w nazwach słów angielskich i polskich) http://home.comcast.net/~lancehunt/CSharp_Coding_Standards.pdf, http://www.idesign.net/idesign/download/Idesign Csharp Coding Standard.zip 28 Korzystanie z Visual Studio Pojęcie projektu (Project) to logiczny „pojemnik” na wszystkie elementy, który służą do budowy aplikacji. plik *.csproj Pojęcie rozwiązania (Solution) „kontener”, w którym osadzony jest projekt zawiera projekty, pliki i metadane, które ułatwiają definiowanie rozwiązania jako spójnej całości. przykład: baza danych + lokalny interfejs administratora + zdalny (www) interfejs użytkowników plik *.sln Szablon projektu dostarcza kolekcję plików, szablon kodu, właściwości projektu 29 Wybór szablonu 30 Interfejs graficzny środowiska Zarządzanie projektem –okno Solution Explorer –okno programu Kompilacja, budowa i poprawa błędów – Uruchamianie programu 31 Interfejs środowiska 8