Europejskie Informatyczne Studium Certyfikacyjne EITCA e-Learning
Informatyka Biznesowa (EITCA-B)
Kurs: „Podstawy programowania i
wykorzystanie technologii OpenSource”
Wykład 6: Programowanie w C# na
platformie Microsoft .NET (cz.3)
Materiał obejmuje zakres programowy
1 godziny lekcyjnej
Europejskie Informatyczne Studium Certyfikacyjne EITCA e-Learning
Studium prowadzone w ramach programu szkoleniowego Europejskiej Akademii Certyfikacji IT
EITCI European IT Certification Academy (EITCA)
Krajowy Przedstawiciel Konsorcjum Realizującego:
Centrum Szkoleniowe IT CompLearn, CompSecur IT Solutions:
ul. Piłsudskiego 74, 50-020 Wrocław, tel. +48 71 722 8038, fax. +48 71 722 8039
NIP: 897-173-92-49, REGON: 020713664, e-mail: info@complearn.pl; strona www: www.complearn.pl Niniejszy dokument stanowi część materiałów dydaktycznych opracowywanych przez krajowe konsorcjum naukowo-przemysłowe będące realizatorem Europejskiego Informatycznego Studium Certyfikacyjnego w ramach programu EITCA (Europejska Akademia Certyfikacji IT), a także przez inne jednostki naukowo-dydaktyczne działające na rzecz poprawy poziomu kształcenia informatycznego w Polsce (m.in. uczelnie wyższe: Politechnikę Wrocławską oraz konsorcjum uczelni wyższych: Uniwersytetu
Jagiellońskiego,
Uniwersytetu
Warszawskiego,
Politechniki
Warszawskiej,
Politechniki
Poznańskiej
udostępniających materiały dydaktyczne w ramach projektu „Opracowanie programów nauczania na odległość na kierunku studiów wyższych – Informatyka”, zakwalifikowanego przez Ministerstwo Edukacji Narodowej w ramach Sektorowego Programu Operacyjnego: Rozwój Zasobów Ludzkich 2006, finansowanego ze środków Unii Europejskiej).
4. Składnia i semantyka języka C# c.d.
4.5. Imperatywne struktury sterowania przepływem
Instrukcja warunkowa
Instrukcja warunkowa ma w języku C# następującą postać:
if (warunek_logiczny) instrukcja;
if (warunek_logiczny) instrukcja1 else instrukcja2;
// zamiast pojedynczej instrukcji można w obu miejscach użyć bloku
instrukcji zamkniętego w nawiasy klamrowe:
if (warunek_logiczny) {
instrukcja1;
..
instrukcjaN;
} else {
instrukcjaM;
..
instrukcjaK;
}
Jeśli spełniony jest warunek logiczny wykonywane są instrukcje w ramach bloku znajdują-
cego się zaraz za warunkiem. W przeciwnym wypadku wykonywany jest blok znajdujący się po opcjonalnym słowie kluczowym else.
Instrukcja wyboru
switch (wyrażenie)
{
case wartość1,wartość2:
// tu instrukcje dla tego przypadku
break;
case inna_wartość:
// tu instrukcje dla tego przypadku
break;
case jeszcze_inna_wartość:
// tu instrukcje dla tego przypadku
break;
default:
// tu instrukcje dla wartości domyślnej
}
Instrukcja break powoduje wyjście z bloku switch po wykonaniu ciągu instrukcji dla danego przypadku. Gdybyśmy jej nie użyli, program kontynuowałby wykonywanie przechodząc do kolejnej instrukcji w ramach bloku switch.
2
Pętle warunkowe
- Pętla WHILE
while (warunek_logiczny) instrukcja;
// lub
while (warunek_logiczny) {
instrukcja1;
..
instrukcjaN;
}
W konstrukcji tej tak długo, jak spełniony jest warunek logiczny, wykonywany będzie ciąg instrukcji wewnątrz bloku, przy czym warunek logiczny sprawdzany jest przed wejściem do bloku.
- Pętla DO..WHILE
do instrukcja while (warunek_logiczny);
// lub
do {
instrukcja1;
..
instrukcjaN;
} while (warunek_logiczny);
Konstrukcja ta działa analogicznie do poprzedniej, z tą różnicą, że warunek logiczny sprawdzany jest PO wykonaniu instrukcji zawartych wewnątrz bloku. Oznacza to, że instrukcje te zawsze zostaną wykonane co najmniej raz.
Pętla FOR
Pętla FOR ma w języku C# dosyć złożoną postać, która wygląda następująco:
for (<lista_wyrażeń_inicjujących>; <wyrażenie_warunkowe>;
<lista_iteracji>) {
<instrukcje>
}
Pętla FOR wykonywana jest w następujący sposób:
1. najpierw wykonywane są polecenia inicjujące, służące do nadania początkowych
wartości zmiennym iteracyjnym
2. sprawdzane jest wyrażenie warunkowe i jeśli jest spełnione, wykonywane są
instrukcje wewnątrz bloku (w przeciwnym wypadku pętla zostaje zakończona)
3. wykonywane są instrukcje z listy iteracji, służące z założenia do modyfikacji wartości zmiennych iteracyjnych
4. następuje powrót do punktu 2
3
Działanie to najlepiej wytłumaczyć na prostym przykładzie:
for (int i=1;i<11;i++) {
Console.Write("{0} ", i); // wypisanie na ekranie bieżącej wartości
zmiennej i
}
W powyższym przypadku zmienna i zainicjowana zostanie wartością 1 i będzie zwiększana o 1 po każdym przebiegu pętli, aż do osiągnięcia wartości 11. W efekcie pętla wykona się 10
razy i spowoduje wypisanie na ekranie ciągu liczb od 1 do 10. Ponieważ zmienna i została zadeklarowana w ramach listy wyrażeń inicjujących pętli, jest ona zmienną lokalną pętli widoczna tylko w jej obrębie.
W ramach pętli FOR możliwe jest stosowanie następujących instrukcji specjalnych:
- break;
- powoduje natychmiastowe przerwanie wykonywania pętli
- continue; - powoduje natychmiastowe przejście do kolejnej iteracji pętli
Pętla FOR w języku C# daje dużo więcej możliwości niż modelowa pętla FOR i pozwala na konstruowanie różnorodnych struktur sterowania, częstokroć nie mających nic wspólnego z tą ostatnią.
Iterator FOREACH
FOREACH jest rodzajem pętli wykonującej się dla każdego elementu listy (kolekcji): foreach (<typ> <nazwa_zmiennej_reprezentującej_element_listy> in
<lista>) {
<instrukcje>
}
Działanie tej konstrukcji znowu najlepiej rozpatrzeć na przykładzie:
// deklaracja tablicy zawierającej imiona
string[] imiona = {"Adam", "Jakub", "Zygmunt", "Piotr"}; foreach (string osoba in imiona)
{
Console.WriteLine("{0} ", osoba);
}
Powyższy kod spowoduje wykonanie instrukcji wypisania na ekranie wartości zmiennej osoba, która to wartość w każdym przebiegu pętli będzie przechodziła po kolejnych elementach tablicy imiona.
4
5. Tworzenie aplikacji konsolowych
Najprostszym przykładem programów w środowisku Microsoft® Windows® są tzw. aplikacje konsolowe, tzn. wykorzystujące do komunikacji z użytkownikiem interfejs czysto tekstowy.
Przykładem jest systemowa aplikacja ipconfig.exe służąca do wyświetlania
różnorodnych informacji związanych z siecią komputerową w środowisku Windows®.
Środowiskiem uruchomieniowym dla aplikacji konsolowych jest wiersz poleceń systemu Windows® uruchamiany przez wpisanie cmd w oknie „Uruchom...”. Aby teraz
uruchomić wspomnianą aplikację, należy w wierszu poleceń wpisać ipconfig i nacisnąć ENTER. W wyniku tego wypisane zostaną odpowiednie informacje:
Aplikacje konsolowe umożliwiają oczywiście także pobieranie danych od użytkownika. Jako przykład można w wierszu poleceń wpisać comp w celu uruchomienia aplikacji służącej do porównywania zawartości plików.
5.1. Tworzenie nowej aplikacji konsolowej
Po uruchomieniu programu Visual C# 2005 Express ukaże się ekran powitalny. W celu utworzenia nowej aplikacji konsolowej należy wybrać „New project...” z menu
„File”, a następnie w oknie, które się pojawi wybrać „Console Application” i wpisać nazwę dla nowej aplikacji. Po kliknięciu przycisku OK ukaże się ekran edycji głównego pliku aplikacji.
Nowa pusta aplikacja konsolowa utworzona w Visual Studio 2005 wygląda następująco: 5
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
Domyślnie zadeklarowane jest użycie trzech podstawowych przestrzeni nazw, będących podprzestrzeniami przestrzeni System. Parametr args metody Main zawiera natomiast argumenty uruchomienia aplikacji podawane po nazwie pliku wykonywalnego. Jest to jeden ze sposobów pobierania danych wejściowych od użytkownika. Na przykład, jeśli uruchamiając naszą aplikację z linii poleceń wpiszemy:
<nazwa_pliku>.exe Jan Kowalski 13
to tablica args zawierać będzie 3 łańcuchy znaków – „Jan”, „Kowalski” oraz „13”.
Dodatkowo, główna klasa programu domyślnie umieszczona została w obrębie nowej przestrzeni nazw, której nazwa odpowiada nazwie projektu. Konstrukcja ta nie jest konieczna dla poprawnego działania aplikacji, jednak stanowi dobrą praktykę, pozwalając między innymi na wykorzystanie raz utworzonego kodu w obrębie innych aplikacji czy modułów.
Przestrzenie nazw nie są powiązane w żaden sposób z nazwami plików czy katalogów.
5.2. Zapisywanie aplikacji
Aplikacje w środowisku Visual Studio organizowane są w formie tzw. projektów, na które może składać się wiele różnych plików. Nawet w przypadku pustej aplikacji konsolowej na projekt oprócz głównego pliku programu składa się wiele innych plików przechowujących różne ustawienia projektu.
Aby zapisać projekt na dysku, należy wybrać opcję ”Save all” z menu ”File”, a następnie w oknie które się pojawi wprowadzić nazwę aplikacji oraz lokalizację na dysku w której projekt ma zostać zapisany (domyślnie ”C:\Documents and Settings\
wojtek\Moje dokumenty\Visual Studio 2005\Projects”). Po potwier-
dzeniu w wybranym katalogu utworzony zostanie podkatalog, w którym zapisane zostaną wszystkie pliki projektu łącznie z głównym plikiem źródłowym programu (domyślnie program.cs).
Zapisany projekt można potem ponownie przywołać poprzez wybranie „Open
project...” z menu ”File”, i wskazanie pliku <nazwa_projektu>.csproj w katalogu projektu.
6
5.3. Kompilacja i uruchamianie aplikacji
Aby uruchomić aplikację, należy zapisać pliki projektu w wybranej lokalizacji na dysku (CTRL+S), a następnie wybrać z menu „Debug” opcję „Start without debuging”
(lub nacisnąć kombinacje klawiszy CTRL+F5).
Po tej czynności utworzony zostanie plik wykonywalny aplikacji (<nazwa_projektu>
.exe) w podkatalogu „bin\Release\” katalogu projektu, i aplikacja zostanie automatycznie uruchomiona. Po utworzeniu pliku wykonywalnego możliwe jest
uruchamianie aplikacji bezpośrednio za jego pośrednictwem.
5.4. Wyświetlanie i pobieranie danych z konsoli
Wyświetlanie danych
Do wypisywania danych w oknie konsoli służą metody Write oraz WriteLine klasy Console, znajdującej się w przestrzeni nazw System. Obie metody działają niemal identycznie, z tą różnicą, że WriteLine powoduje po wypisaniu tekstu przejście do następnej linii.
Działanie tych metod najlepiej będzie rozpatrzeć na przykładach, nie wymagających dalszego komentarza:
// wypisanie statycznego ciągu znaków
Console.Write(“Statyczny tekst”);
// wypisanie tekstu w skład którego wchodzi wartość zmiennej
int dlugosc=10;
Console.Write(“Dlugość wynosi: {0} metrów”,liczba);
// w miejscu {0} wstawiona zostanie wartość zmiennej
// wypisanie tekstu w skład którego wchodzi kilka wartości zmiennych
int liczba=7;
string tekst=”Przykładowy tekst”;
char znak=’a’;
Console.Write(“Wartość liczby: {0}, Tekst: {1}, Znak: {2}”, liczba,
tekst, znak);
// w miejsca {0}, {1} i {2} wstawione zostaną wartości kolejnych
podanych zmiennych
Pobieranie danych
Do pobierania danych od użytkownika za pośrednictwem służy metoda ReadLine klasy Console, powodująca oczekiwanie na wprowadzenie ciągu znaków i zwracająca w wyniku wprowadzony ciąg, jako wartość typu string:
7
// pobranie ciągu znaków od użytkownika
string tekst;
Console.Write(“Wprowadź tekst: ”);
tekst=Console.ReadLine();
8