Język programowania
Algorytm
Elementy języka programowania
Przydział pamięci
Zmienne i stałe
Instrukcje
Typy danych
O
peratory i wyrażenia (wstępnie)
Kompilacja i konsolidacja
Wyk
Wyk
ł
ł
ad
ad
: J
: J
ę
ę
zyk programowania
zyk programowania
Język programowania dostarcza abstrakcji pozwalającej
modelować problem (opisać byty w nim uczestniczące oraz
sposób ich przetworzenia tak, aby otrzymać rozwiązanie
problemu)
Czym jest programowanie
Czym jest programowanie
„
Programowanie …
”
Sposób reprezentowania problemu prowadzi programistę do
wyboru:
• Zbliżyć się do maszyny (język asemblera: szybki, nieczytelny,
nieelastyczny)
• Zbliżyć się do człowieka (opis słowny: wysoki poziom abstrakcji,
elastyczny)
Ostatecznym celem programowania jest utworzenie
programu rozwiązującego określony problem (zapisanie
algorytmu rozwiązania w języku programowania)
Definicja j
Definicja j
ę
ę
zyka programowania
zyka programowania
Język programowania to system notacji (sposób)
przekazywania komputerowi poleceń do wykonania.
Język programowania pozwala na precyzyjny zapis
algorytmów
oraz innych zadań, jakie komputer ma
wykonać.
Język programowania składa się ze zbioru reguł
syntaktycznych oraz semantycznych, które opisują, jak
należy budować poprawne wyrażenia oraz jak komputer
ma je rozumieć.
Imperatywne języki programowania definiują proces wykonywania jako
sekwencję instrukcji zmieniających stan programu. Programy składają się z
ciągu komend do wykonania przez komputer.
J
J
ę
ę
zyki programowania
zyki programowania
strukturalne ↔ obiektowe
kompilowane ↔ interpretowane
maszynowe (asemblerowe) ↔ wysokiego poziomu
imperatywne ↔ deklaratywne
uniwersalne ↔ dedykowane dla dziedziny
„stacjonarne” ↔ skryptowe
C++
C#
Java
Basic
Delphi
PHP
ASP
Ruby
Perl
Python
Lisp
Prolog
Fortran
Modula
Algorytm
Algorytm
Algorytm jest ściśle określoną procedurą obliczeniową,
generującą dla właściwych danych wejściowych
żądane dane wyjściowe → wynik działania algorytmu.
Algorytm jest ściśle określoną procedurą obliczeniową,
generującą dla właściwych danych wejściowych
żądane dane wyjściowe → wynik działania algorytmu.
Algorytm jest poprawny, gdy dla każdego
egzemplarza problemu algorytm zatrzymuje się
(kończy się) o daje dobry wynik.
Algorytm jest uniwersalny, gdy rozwiązuje „szerszy”
zakres problemów.
Algorytm jest efektywny jeśli ma odpowiednią do
problemu
złożoność obliczeniową
.
http://pl.wikipedia.org/wiki/Algorytm
Elementy j
Elementy j
ę
ę
zyka programowania
zyka programowania
void Main()
{
float zm = 12.07;
int x = 10.31 * Math.Log(zm);
Console.WriteLine(„Wynik = {0}”, x);
}
stała
zmienna
typ wartości
funkcja standardowa
10.31 * Math.Log(zm);
Wyrażenie:
int x = 10.31 * Math.Log(zm);
Instrukcja:
Kurs C# on-line: http://www.tibik.nazwa.pl/
Przydzia
Przydzia
ł
ł
pami
pami
ę
ę
ci w programie dla danych
ci w programie dla danych
Rejestry
(
najszybsza forma pamięci, ich liczba jest mocno
ograniczona → procesor)
Stos
(umieszczony w pamięci RAM, bezpośrednio
obsługiwany przez procesor poprzez wskaźnik stosu
(szybki), kompilator musi znać dokładny rozmiar i czas
życia danych przechowywanych na stosie)
Sterta
(w pamięci RAM, kompilator nie musi znać rozmiaru
danych ani wiedzieć jak długo dane będą zajmowały
obszar na stercie, operator new, elastyczne i
czasochłonne rozwiązanie)
Obszar stałych
(najczęściej umieszczone bezpośrednio w
kodzie, przez co są zabezpieczone przed zmianami)
Dane typów
referencyjnych
Dane typów
skalarnych
Program. Kompilacja. Uruchomienie
Program. Kompilacja. Uruchomienie
Kompilacja
- kod źródłowy jest tłumaczony do postaci
kodu maszynowego, czyli sekwencji elementarnych
operacji gotowych do bezpośredniego przetworzenia
przez procesor komputera. Jeżeli dany język
programowania podlega kompilacji, określany jest
mianem
kompilowanego języka programowania
.
Interpretacja
- kod źródłowy (linia po linii) jest na
bieżąco tłumaczony i wykonywany przez dodatkowy
program zwany interpreterem.
Kod bajtowy
– rozwiązanie polegające na kompilacji
programów do postaci pośredniej (ang.
byte code
). Jest
ona wykonywana przez wirtualne maszyny tłumaczące
elementarne rozkazy byte-code'u na rozkazy procesora.
Kompilacja do kodu maszynowego zapewnia najwyższą wydajność programom, lecz zabiera
ona bardzo dużo czasu, zaś wygenerowany kod jest ściśle powiązany z platformą sprzętową.
Program
Program
–
–
kod
kod
ź
ź
r
r
ó
ó
d
d
ł
ł
owy, kod wykonywalny
owy, kod wykonywalny
Program źródłowy
(zapisany w notacji języka
programowania)
Postać skompilowana
(program zapisany jako
instrukcje procesora)
Postać wykonywalna - konsolidacja
(linkowanie od ang.
link
-
łączyć
) to proces
polegający na połączeniu skompilowanych
modułów (plików zawierających kod obiektowy
i/lub plików bibliotek statycznych) i utworzeniu
pliku wykonywalnego
Identyfikatory
Identyfikatory
Konwencja wielbłądzia: nazwy zaczynają się małą
literą lub podkreśleniem
normalnaTemperatura = 36.6;
Konwencja Pascalowa: nazwy zaczynają się dużą
literą
NormalnaTemperatura = 36.6;
Konwencja węgierska:
iNormalnaTemperatura = 36.6;
Identyfikatory to nazwy nadawane typom, funkcjom (metodom),
zmiennym, stałym, obiektom i innym jednostkom programu
Identyfikatory to nazwy nadawane typom, funkcjom (metodom),
zmiennym, stałym, obiektom i innym jednostkom programu
Znaki specjalne
Znaki specjalne
\’ (apostrof)
\” (cudzysłów)
\\ (odwrócony ukośnik = backslash)
\0 (null)
\a (alarm)
\b (znak cofania)
\n (nowy wiersz)
\r (powrót karetki)
\t (tabulacja)
\v (tabulacja pionowa)
napis = „To jest napis z cudzysłowem \” i coś”;
Sta
Sta
ł
ł
e
e
Literały
x = 7;
a = "Ala";
c = 'A';
Stałe symboliczne
const float normalnaTemp = 36.6;
Wyliczenia
enum Rozmiar: int
{ M = 30, S = 40, L = 50, XL = 60}
Wartości, które nie mogą zostać zmienione
Wbudowane typy warto
Wbudowane typy warto
ś
ś
ci
ci
Liczby całkowite bez znaku.
Wartości: 0 .. 65535
UInt32
2
ushort
Liczby całkowite ze znakiem.
Wartości: -32768 .. 32767
Int16
2
short
Liczby całkowite ze znakiem.
Wartości: -128 .. 127
SByte
1
sbyte
Wartości logiczne
true
lub
false
Boolean
1
bool
Znaki w formacie Unicode
Char
1
char
Liczby bez znaku. Wartości 0..255
Byte
1
byte
Opis
Typ
CLS
Rozmiar
Typ
CLS = Common Language Specification
Wbudowane typy warto
Wbudowane typy warto
ś
ś
ci (2)
ci (2)
Liczba całkowita ze znakiem. Wartości -
2147483648 .. 2147483647
Int32
4
int
Liczba całkowita ze znakiem. Wartości:
0 .. 0xffffffffffffffff
UInt64
8
ulong
Liczba całkowita ze znakiem. Wartości:
-
9223372036854775808 .. 9223372036854775807
Int64
8
long
Liczby zmiennoprzecinkowe.
Decimal
16
decimal
Liczby zmiennoprzecinkowe.
Double
8
double
Liczby zmiennoprzecinkowe. Wartości: ±
1,5*10
-45
.. ± 3,4*10
38
Single
4
float
Liczby całkowite bez znaku. Wartości: 0 ..
4294967295
UInt32
4
uint
Opis
Typ
CLS
Rozmia
r
Typ
http://pl.wikipedia.org/wiki/C_Sharp
Zmienne
Zmienne
Wszystkie zmienne w języku C# są traktowane jako
obiekty (a zatem każdy typ jest klasą)
Każdy obiekt posiada własną pamięć (i adres)
Każdy obiekt posiada swój typ (jest instancją
określonej klasy), co określa jakie czynności można
na nim wykonać
Obiekt ma stan, zachowanie i tożsamość
(Grady Booch)
Może posiadać dane wewnętrzne (określające jego stan),
metody/funkcje (określające jego zachowanie) i można go
odróżnić od pozostałych (poprzez adres)
int x;
int y = 5;