Programowanie w języku C# (środowisko Microsoft Visual C# Express Edition)
Przedstawienie fragmentu świata rzeczywistego w systemie komputerowym wymaga przekształcenia pewnej ilości danych wejściowych na postać zrozumiałą przez komputer. W tym celu stworzonych zostało szereg struktur danych przeznaczonych do ich przechowywania oraz operowania na nich. Niektóre z opracowanych struktur danych wykorzystywane są do gromadzenia uzyskanych wyników.
Do zapisu i odczytu struktur zrozumiałych przez komputer stosuje się specjalne języki – języki programowania. Językiem programowania nazywamy sztuczny język z określonymi regułami wykorzystania (składnią) oraz zestawem słów (instrukcje), który pozwala na przedstawienie w postaci zrozumiałej dla komputera wycinka świata rzeczywistego w celu wykonania pewnego algorytmu.
Kompilator – to program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (język wynikowym). W informatyce tym pojęciem określa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania wysokiego poziomu na język maszynowy.
Konsolidator to jeden z programów składowych kompilatora. Konsolidator w trakcie procesu konsolidacji łączy zadane pliki obiektowe i biblioteki tworząc w ten sposób plik wykonywalny.
Języki programowania wysokiego poziomu : języki pozwalające za pomocą tzw. słów kluczowych oraz prostych reguł składniowych podobnych do języka naturalnego zapisywać konkretne algorytmy.
W zakresie każdego języka wysokiego poziomu występuje grupa ściśle określonych ciągów znaków zwanych słowami kluczowymi. Wszystkie słowa kluczowe posiadają określoną pisownię. Źle napisane słowo kluczowe powoduje, że kompilator sprawdzając „pisownię” i skłądnię programu nie może tego słowa znaleźć w słowniku. Powoduje to błąd i przerwanie procesu kompilacji, a w konsekwencji także uruchomienia programu.
Podstawy języka C#
- w języku C# podobnie jak w C++ rozróżnia się duże i małe litery
- program w języku C# składa się ze zmiennych, stałych, słów kluczowych języka, operatorów oraz funkcji.
- zmienne i stałe służą do przechowywania danych w pamięci, na których program operuje przy pomocy tzw. funkcji.
- podstawową jednostką organizacyjną języka jest funkcja, czyli wydzielony fragment kodu źródłowego, o ustalonej i unikatowej nazwie realizujący ściśle określone zadanie.
- pojedyncze znaki umieszczane są w apostrofach – ‘A’.
- ciąg znaków (łańcuch) umieszczany jest w cudzysłowiu np. „łańcuch znaków”.
- w przypadku stosowania znaków specjalnych w łańcuchach należy poprzedzić je znakiem back slash.
- Wewnątrz łańcucha znaków mogą pojawić się znaki sterujące np. przejście do nowej linii itp.
- W nazwach definiowanych przez programistę nie wolno używać znaków specjalnych typu :.,”’!$%?* itp.
- Nazwy definiowane przez użytkownika (identyfikatory) nie mogą być rozdzielone znakiem spacji np. moja zmienna – źle, moja_zmienna lub MojaZmienna – dobrze.
Prosty program w C#
Using System;
class Program
{
static void Main(string[]args)
{
int x=10;
//Linia komentarza
/*
Większy obszar
komentarzy
*/
}
}
Stała to element tworzony w komórkach pamięci operacyjnej, których zawartość nie może być zmieniona w trakcie działania programu. By móc łatwiej operować stałymi trzeba nadać im nazwy – identyfikatory.
Zmienna to struktura umieszczona w pamięci operacyjnej, w której przechowuje się dane określonego typu. Zmienna identyfikowana jest w programie za pomocą nazwy (identyfikatora), a jej zawartość może się zmieniać w trakcie działania programu. Zmienne stosowane są do odwzorowania elementów opisywanego zadania np. elementy wyrażenia algebraicznego, długość obiektu, nazwisko itp. Dla każdej zmiennej określa się z góry jej typ np. liczba całkowita (int) itp.
Typ to inaczej dziedzina z jakiej może przyjmować wartość zmienna i stała. W matematyce przykładem może być zapis: R, C+, N. W systemach komputerowych określenie typu wiąże się dodatkowo z max i min wartością jaką zmienna i stała może przyjąć oraz dokładnością jej zapisu w pamięci operacyjnej.
Typy fundamentalne w C#
void brak typu (typ pusty)
TYPY CAŁKOWITE
char 8-bitowa liczba całkowita lub znak ASCII (jeden znak)
short 16-bitowa liczba całkowita
unsigned short 16-bitowa liczba całkowita nieujemna
int 32-bitowa liczba całkowita
unsigned int 32-bitowa liczba całkowita nieujemna
bool true/false (wartość logiczna) 0-false, inna-true
TYPY ZMIENNOPRZECINKOWE
float 32-bitowa liczba zmiennoprzecinkowa
double 64-bitowa liczba zmiennoprzecinkowa
long double 80-bitowa liczba zmiennoprzecinkowa
TYP ŁAŃCUCHOWY
string łańcuch znaków
Operatory arytmetyczne
+, -, *, / operatory wykonujące podstawowe działania arytmetyczne na wszystkich typach danych
++, -- operator inkrementacji i dekrementacji (i=i+1, i=i-1)
Operatory przypisania
= przypisuje wartość zmiennej
+=n, -=n zwiększa, zmniejsza zawartość zmiennej o n
*=n, /=n mnoży, dzieli zmienną przez n
Operatory porównawcze i relacyjne
==, >, <, >=, <=, !=
Operatory logiczne
&& iloczyn logiczny
|| suma logiczna
! negacja logiczna
Konwersja typów
W pamięci operacyjnej systemów komputerowych w inny sposób zapisywane są i później używane zmienne różnych typów. W związku z tym istnieje ryzyko niekompatybilności przy wykonywaniu pewnych operacji na zmiennych. W związku z tym wprowadza się specjalne metody zamiany jednego typu na drugi. Zazwyczaj nie jest to jednak możliwe bezpośrednio, a z wykorzystaniem specjalnych funkcji związanych z klasą o nazwie Convert.
Double x;
string s=”3.145”;
x=Convert.ToDouble(s);
string s=”3,ABC145”;
^
|
x=Convert.ToDouble(s);(nie da się wtedy przekonwertować. Błąd format wejściowego danych.)x=5.89;
s=Convert.ToString(x);
Tablice w C#
Definiowanie tablic jednowymiarowych
float [] tabF = New double [5]; (Indeksy wszystkich tablic zaczynają się od „0”)
char [] tabC = New char[10];
Definiowanie tablic dwuwymiarowych
float [,] tabF2D = New double [10,5];
char [,] tabC2D = New char [2,2];
Dostęp do elementów tablic
tabF2D[1,2]=100,04;
double x;
x=tabF2D[1,2];
char znak;
znak=tabC2D[2,2];
Instrukcja warunkowa w C#
Instrukcja warunkowa może mieć dwie formy:
If (wyrażenie) instrukcja1;
if (wyrażenie) instrukcja1; else instrukcja2;
Przykład:
int a=4;
intb=6;
if(a==b)
{
Console.WriteLine(“a=b”);
b=++a;
} else Console.WriteLine(“a<>b”);
Instrukcja while I do …while … w C#
Instrukcja while ma postać:
while (wyrażenie) instrukcja1;
Instrukcja do …while … ma postać:
do instrukcja1 while (wyrażenie);
Przykład:
int ilerazy=10;
Chile (ilerazy) //jeśli ilerazy<>0 to posiada wartość logiczna true
{ //zamiast (ilerazy) może być zastosowane (ilerazy>0)
Console.WriteLine („Komunikat nr „+Convert.ToString(ilerazy));
ilerazy--;//zmniejszenie o jeden zmiennej ilerazy
if (ilerazy==5) break;
};
Instrukcja pętli for w C#
Instrukcja pętli for ma postać
For (inst._init;warunek;krok) {instrukcje};
Przykłady:
int ilerazy = 10;
for (ilerazy=1;ilerazy<=10;ilerazy++)
Console.WriteLine („Komunikat nr” +Convert.ToString(ilerazy));
for (int i=1;i<=10;i++)
{
if (i>5) continue;
Console.WriteLine (“Komunikat nr”+Convert.ToString(i));
Funkcje w C#
<typ zwracany> Nazwa_Funkcji(<lista_parametrów>)
(Może być lista pusta)
{
//ciało funkcji
}
void komunikat()
{
MessageBox.Show(„Komunikat”);
}
int funkcja1 (int a, int b)
{
return a+b;
}
Definiowane w funkcji zmienne nie są poza nią widoczne. Są to zmienne lokalne.