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