Wprowadzenie do programowania



Podobne dokumenty
Wprowadzenie do programowania

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie w języku Python. Grażyna Koba

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

1 Podstawy c++ w pigułce.

Microsoft IT Academy kurs programowania

Programowanie obiektowe zastosowanie języka Java SE

Zastanawiałeś się może, dlaczego Twój współpracownik,

Informatyka I : Tworzenie projektu

Programowanie komputerów

Definicje. Algorytm to:

Programowanie obiektowe

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Technologie informacyjne - wykład 12 -

Programowanie w języku C++ Grażyna Koba

Algorytm. a programowanie -

Zaawansowane aplikacje internetowe - laboratorium

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Język ludzki kod maszynowy

1 Podstawy c++ w pigułce.

Podstawy programowania. Wprowadzenie

Wstęp do programowania. Wykład 1

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Pracownia internetowa w szkole ZASTOSOWANIA

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

WPROWADZENIE DO JĘZYKA JAVA

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Platforma.NET. Laboratorium nr 1 Podstawy języka C#

Programowanie niskopoziomowe

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Java EE produkcja oprogramowania

ALGORYTMY I PROGRAMY

Programowanie obiektowe

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

I - Microsoft Visual Studio C++

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

WPROWADZENIE DO INFORMATYKI

MentorGraphics ModelSim

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do środowiska Qt Creator

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Platformy Programowania

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Laboratorium 1 - Programowanie proceduralne i obiektowe

Praca w środowisku Visual Studio 2008, Visual C

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Szablony funkcji i szablony klas

Układy VLSI Bramki 1.0

Podstawy Programowania

Dokument Detaliczny Projektu Temat: Księgarnia On-line Bukstor

1. Przypisy, indeks i spisy.

Podstawy Programowania 2

Programowanie Komputerów 2FD. Materiały pomocnicze do laboratorium

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Logowanie do aplikacji TETA Web. Instrukcja Użytkownika

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

CoDeSys 3 programowanie w języku CFC

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Rozdział 4 KLASY, OBIEKTY, METODY

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Podstawy Programowania Podstawowa składnia języka C++

SZYBKO ZROZUMIEĆ VISUAL BASIC 2012 Artur Niewiarowski -

Instrukcja laboratoryjna cz.3

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Przygotowanie własnej procedury... 3 Instrukcja msgbox wyświetlanie informacji w oknie... 6 Sposoby uruchamiania makra... 8

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Wprowadzenie do projektu QualitySpy

C# /.NET. Copyright by 3bird Projects 2018,

Java jako język programowania

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Korzystanie z aplikacji P-touch Transfer Manager

Programowanie w C. dr inż. Stanisław Wszelak

Programowanie Komputerów

Robert Barański, AGH, KMIW MathScript and Formula Nodes v1.0

Transkrypt:

Michał Włodarczyk Wprowadzenie do programowania ITA-104 Wersja 1 Warszawa, Wrzesień 2009

Michał Włodarczyk 2009 Michał Włodarczyk. Autor udziela prawa do bezpłatnego kopiowania i dystrybuowania wśród pracowników uczelni oraz studentów objętych programem ITAcademy. Wszelkie informacje dotyczące programu można uzyskać: pledu@microsoft.com. Wszystkie inne nazwy firm i producentów wymienione w niniejszym dokumencie mogą być znakami towarowymi zarejestrowanymi przez ich właścicieli. Inne produkty i nazwy firm używane w treści mogą być nazwami zastrzeżonymi przez ich właścicieli. Strona i-2

Michał Włodarczyk Wprowadzenie Informacje o kursie Zakres tematyczny kursu Opis kursu Kurs przeznaczony jest do prowadzenia przedmiotu Wprowadzenie do programowania na uczelniach wyższych. Skupia się na nauce podstaw programowania w języku C# w środowisku programistycznym Visual Studio 2008. Cel kursu Celem kursu jest dostarczenie studentom podstawowej wiedzy i umiejętności do tworzenia aplikacji w języku C#. Opis modułów W Tab. 1 przedstawiony został opis modułów, zawierający podział na zajęcia. Każde zajęcie jest zaplanowane na 90 minut. Wykładowca może dostosować harmonogram do swoich potrzeb. Tab. 1 Zakres tematyczny modułów Numer moduł Tytuł Moduł 1 Wprowadzenie Moduł 2 Użycie zmiennych Moduł 3 Instrukcja wyboru ifelse. Obsługa wyjątków Moduł 4 Instrukcje iteracji - pętle Moduł 5 Pozostałe instrukcje sterujące Moduł 6 Tablice Moduł 7 Operacje na tablicach Opis W tym module zostaną zaprezentowane informacje podstawowe dotyczące algorytmów, platformy.net oraz środowiska Visual Studio. W tym module dowiesz się co to są zmienne, jak je definiujemy w języku C# oraz jak nadajemy im wartość. Poznasz również podstawowe typy języka C#. Nauczysz się pobierać dane od użytkownika. Dowiesz się co to są wyrażenia oraz poznasz operatory przy pomocy których je konstruujemy. W tym module zostaną zaprezentowane informacje dotyczące instrukcji wyboru ifelse. Dodatkowo zostanie przedstawiony problem wyjątków (predefiniowane wyjątki, przechwytywanie i zgłaszanie wyjątku) W tym module zostaną zaprezentowane informacje dotyczące instrukcji iteracyjnych: while, for oraz do..while. W tym module poznasz instrukcję switch. Dowiesz się jak ją definiujemy w języku C#. Zobaczysz również jak korzystać z instrukcji goto. Nauczysz się używać instrukcji break oraz continue. W tym module poznasz strukturę danych o nazwie tablica. Dowiesz się jak ją definiujemy i korzystamy z niej w języku C#. Dodatkowo poznasz pętla foreach. W tym module zostaną przedstawione następujące operacje na tablicach: ustawianie wartości elementów tablicy (po utworzeniu tablicy), kopiowanie wartości elementów jednej tablicy do drugiej tablicy, odwracanie tablicy, ustawianie elementów tablicy w odpowiedniej kolejności sortowanie oraz sprawdzanie czy tablica zawiera element o danej wartości. Strona i-3

Michał Włodarczyk Moduł 9 Funkcje - wstęp Moduł 10 Przesyłanie argumentów do metody Moduł 11 Metody - algorytmy rekurencyjne i biblioteka metod Moduł 12 Struktury Moduł 13 Rekurencyjne struktury danych Moduł 14 Dostęp do plików W tym module zostaną zaprezentowane możliwości definiowania i wykorzystywania metod w aplikacji. Przedstawiono możliwości przekazywania zmiennych do i z metody oraz mechanizm obsługi wyjątków w przypadku zgłoszenia wyjątku wewnątrz metody. W tym module zostaną zaprezentowane informacje dotyczące wywoływania metody z parametrami, wybierania odpowiedniego sposobu przesyłania argumentów, przeciążania metody oraz pobierania argumentów z linii wywołania programu. W tym module zostanie przedstawione na przykładach pojęcie rekurencji. W tym module zostanie przedstawiony typ strukturalny w języku C# oraz metody jego wykorzystania do implementacji kolejek typu FIFO i LIFO. Omówione zostanie też implementacja tych struktur w bibliotece.net Framework. W tym module zostanie przedstawiony typ referencyjny w języku C# oraz zostanie zaprezentowane jego wykorzystanie do implementacji rekurencyjnych struktur danych takich jak lista czy drzewo binarne. Pokazana zostanie też implementacja tych struktur w bibliotece.net Framework. W tym module zostaną zaprezentowane możliwości wykorzystania strumieni w języku C# oraz dokonywania operacji na strukturze systemu plików. Strona i-4

Michał Włodarczyk Moduł 1 Wersja 2 Spis treści Wprowadzenie Wprowadzenie. 1 Informacje o module. 2 Przygotowanie teoretyczne.. 3 Przykładowy problem 3 Podstawy teoretyczne 3 Przykładowe rozwiązanie.. 14 Laboratorium podstawowe. 18 Problem 1 (czas realizacji 15 minut) 18 Problem 2 (czas realizacji 30 minut) 19

Michał Włodarczyk Moduł 01 Wprowadzenie Informacje o module Opis modułu W tym module zostaną zaprezentowane informacje podstawowe dotyczące algorytmów, platformy.net oraz środowiska Visual Studio. Cel modułu Celem modułu jest wprowadzenia do Platformy.NET oraz środowiska Visual Studio oraz przedstawienia podstawowych pojęć z algorytmiki. Uzyskane kompetencje Po zrealizowaniu modułu będziesz: znał pojęcia takie jak: algorytm, program komputerowy, kompilator, interpreter, schemat blokowy wiedział co to jest Platforma.NET umiał korzystać ze środowiska Visual Studio Wymagania wstępne Przed przystąpieniem do pracy z tym modułem powinieneś: umieć obsługiwać komputer znać platformę Windows jako użytkownik potrafić korzystać z dowolnego edytora tekstu Mapa zależności modułu Rys. 1 Mapa zależności modułu Strona 2/19

Michał Włodarczyk Moduł 01 Wprowadzenie Przygotowanie teoretyczne Przykładowy problem Przed przystąpieniem do tworzenia własnego programu, po pierwsze musimy mieć pomysł - wizję, co chcemy, aby program dla nas lub za nas robił. Następnie tą wizję musimy zamienić na kolejne czynności, które prowadzą do realizacji naszego pomysłu. W ten sposób powstaje algorytm. Często zwłaszcza przy mniejszych programach sposób realizacji programu pozostaje w głowie osoby tworzącej lub jest tworzony na bieżąco w czasie pisania programu. Może to doprowadzić do licznych błędów, a co za tym idzie zwiększeniu kosztów stworzenia programu lub jego wadliwego działania. Dobrze jest więc zapisać nasz sposób realizacji w bardziej lub mniej formalny sposób. Jednym ze sposobów przedstawienia algorytmów w sposób graficzny jest schemat blokowy. Podczas analizy i projektowania algorytmu należy zwrócić uwagę na sposób organizacji informacji w komputerze, czyli jakich struktur danych będziemy używali. Ma to ogromny wpływ na nasz algorytm. Po opracowaniu algorytmu zapisujemy go w jakimś języku programowania. Następnie tłumaczymy nasz program na ciąg zer i jedynek, czyli coś co może być uruchomione i wykonane przez komputer. Tworzymy program wykonywalny. Jak pisać program będziemy poznawać na przykładzie języka C#. Język C# jest językiem zorientowanym obiektowo, z silną kontrolą typów, kompilowanym do kodu zarządzanego - tworzymy aplikacje uruchamiane na czymś co się nazywa.net Framework..NET Framework stanowi część składową pewnej idei firmy Microsoft na temat tworzenia oprogramowania, czyli Platformy.NET. Podstawy teoretyczne Wprowadzenie do algorytmiki Słowo algorytm pochodzi od przydomku al-chwarizmi arabskiego matematyka i astronoma Muhammada ibn Musa żyjącego w IX wieku. Algorytm krótko możemy powiedzieć, że oznacza przepis. W życiu codziennym spotkamy się z wieloma przykładami algorytmów. Są to np. wszystkie instrukcje obsługi telewizora, pralki, aparatu fotograficznego itp., opis czynności przy wymianie oleju, zmianie żarówki w samochodzie, wymianie bezpiecznika Chyba najczęściej podawanym jako przykład zbioru algorytmów w życiu codziennym jest książka kucharska. Spróbujmy zapisać jakiś prosty algorytm, np. przygotowanie herbaty w postaci listy kroków. 1. Nalej wodę do czajnika 2. Postaw czajnik na gaz 3. Włącz gaz 4. Zagotuj wodę 5. Wrzuć saszetkę do szklanki 6. Zalej herbatę 7. Posłódź do smaku 8. Wypij herbatę Przy analizie powyższego algorytmu nasuwają się jednak pytania. Ile wody mam nalać, co mam zrobić, gdy mam czajnik elektryczny lub, co oznacza posłódź do smaku. Zapewne każdy z nas zetknął się z jakąś instrukcją, która była niejednoznaczna, a wręcz niezrozumiała. Dzieje się tak, gdyż zadania i problemy najczęściej formułujemy w języku naturalnym, ale język naturalny nie jest jednoznaczny i precyzyjny. Sprecyzujmy pojęcie algorytmu ściślej. Strona 3/19

Michał Włodarczyk Moduł 01 Wprowadzenie Algorytm - jest to kończony i uporządkowany zbiór jasno zdefiniowanych czynności, który prowadzi do rozwiązania jakiegoś problemu w ograniczonej liczbie kroków. Naukę zajmującą się badaniem algorytmów nazywamy algorytmiką. Z powyższej definicji możemy wyprowadzić następujące właściwości algorytmu: skończoność - rozwiązuje problem w ograniczonej liczbie kroków, musi mieć swój koniec określoność - zarówno kolejność wykonywania poszczególnych kroków, jak i zbiór dostępnych instrukcji oraz ich znaczenie powinny być ściśle zdefiniowane nie zostawiając miejsca na dowolność interpretacji Przy opisie algorytmu należy podać warunki początkowe - dane wejściowe dla naszego algorytmu oraz warunki końcowe - czyli to, co chcemy osiągnąć. W przypadku przepisów kulinarnych warunkami początkowymi są potrzebne produkty oraz urządzenia konieczne do wykonania przepisu, warunkiem końcowym uzyskanie żądanej potrawy. Podanie zbioru właściwości (warunków) początkowych oraz zabioru warunków (właściwości) końcowych nazywamy specyfikacją algorytmu. Mając określone warunki początkowe oraz warunki końcowe, algorytm możemy zdefiniować jako skończony ciąg kroków, przekształcający stan początkowy (dane wejściowe) w stan końcowy (dane wyjściowe). W powyższym opisie pojawia się pojęcie dana. Przez dane będziemy określać to, co przetwarza (na czym pracuje) algorytm i co możemy otrzymać po skończeniu działania algorytmu. Algorytm oczywiście możemy ocenić. Oceniając algorytm bierzemy pod uwagę następujące jego właściwości: poprawność - czy algorytm działa zgodnie z naszymi oczekiwaniami. Przy ocenie poprawności możemy wyróżnić: Algorytm całkowicie poprawny - dla wszystkich danych spełniających warunek początkowy, algorytm zatrzymuje się i daje wyniki spełniające warunek końcowy Algorytm częściowo poprawny - dla wszystkich danych spełniających warunek początkowy, jeżeli algorytm zatrzyma się, to uzyskane wyniki spełniają warunek końcowy efektywność - koszt algorytmu. W przypadku algorytmów implementowanych na komputerze do porównania efektywności algorytmu wprowadzono pojęcie złożoności obliczeniowej, którą definiujemy jako ilość zasobów wymaganych przez dany algorytm. Główne zasoby to: pamięć - ilość miejsca potrzebna dla danych czas - wbrew nazwie nie określmy to jako o ilość czasu mierzona w sekundach (lub innych jednostkach czasu) od rozpoczęcia wykonywania algorytmu do jego zakończenia, gdyż ocena w dużym stopniu zależałaby od komputera na którym zaimplementowany algorytm został uruchomiony. Zamiast tego stosujemy liczbę operacji (instrukcji) podstawowych wykonanych w czasie realizacji algorytmu. ogólność - czy algorytm odnosi się do konkretnego, szczególnego przypadku (bardzo ograniczone dane wejściowe) lub odnosi się do pewnej klasy zadań czytelność - czy algorytm jest zrozumiały prostota - czy algorytm jest krótki (prosty), stopień skomplikowania długość kodu - łatwość implementacji algorytmu w danym języku programowania Podsumowując możemy powiedzieć, że dobry algorytm to taki, który jest prosty, łatwy do zaimplementowania, łatwo go zrozumieć, liczy szybko, nie wymaga dużo miejsca w pamięci i zawsze daje poprawne wyniki. Sam algorytm możemy przedstawić na kilka sposobów: w postaci słownego opisu, listy kroków, drzewa decyzyjnego, schematu blokowego. Strona 4/19

Michał Włodarczyk Moduł 01 Wprowadzenie Schemat blokowy Schemat blokowy - diagram, graficzny sposób przedstawienia działania algorytmu. Składa się z figur, zwanych skrzynkami lub blokami, które połączone są odcinkami, które nazywamy ścieżkami sterującymi. W schemacie blokowym stosujemy następujące symbole graficzne: Ścieżka sterująca. Przy pomocy strzałki określamy kierunek przepływu danych lub kolejność wykonywania działań Start Stop Skrzynka oznaczająca wejście (początek) algorytmu. Posiada tylko jedną ścieżkę wyjściową. Schemat blokowy może mieć tylko pojedynczy blok oznaczający początek algorytmu. Skrzynka oznaczająca wyjście (koniec) algorytmu. Posiada tylko jedną ścieżkę wejściową. Schemat blokowy może mieć dowolną ilość bloków oznaczających koniec algorytmu. Blok wprowadzanie lub wyprowadzania danych. Posiada jedno wejście i jedno wyjście. Skrzynka operacji. Oznacza wykonanie instrukcji elementarnej (-ych), w efekcie której zmienią się wartości, postać lub miejsce zapisu danych. Posiada jedno wejście i jedno wyjście. Skrzynka decyzyjna - przedstawia wybór jednego z dwóch wariantów wykonywania programu na podstawie sprawdzenia warunku wpisanego do wnętrza bloku. Posiada jedno wejście i dwa wyjście. Skrzynka wywołania podprogramu - część naszego algorytmu, która stanowi odrębną całość i jest zdefiniowana poza bieżącym schematem blokowym.. Posiada jedno wejście i jedno wyjście. Łącznik wewnętrzny (stronicowy) - służy do połączenia części schematu blokowego znajdujących się na tej samej stronie. Powiązane ze sobą łączniki oznaczone są tym samym napisem lub numerem. Łącznik zewnętrzny (międzystronicowy) - służy do połączenia części schematu blokowego znajdujących się na różnych stronach. Skrzynka komentarza - pozwala wprowadzić opis wyjaśniający poszczególne części schematu, co ułatwia zrozumienie go czytającemu Struktury danych Struktura danych to sposób organizacji danych w komputerze. Określa ona relacje między danymi i zbiór dostępnych operacji oraz właściwości tych operacji. Wybór odpowiedniej struktury danych ma ogromny wpływ na efektywność algorytmu. Poszczególne typy struktur danych zostaną omówione dokładniej w dalszej części kursu, tutaj tylko je wymienimy: Strona 5/19

Michał Włodarczyk Moduł 01 Wprowadzenie tablica rekord lista stos kolejka drzewo graf (niestety poza zakresem tego kursu) Program komputerowy Algorytm piszemy (rysujemy) po to, aby móc utworzyć program komputerowy. Tworząc program, zamieniamy więc pojęcia naszego języka (tym którym mówimy) lub symbole graficzne schematu blokowego na instrukcje zrozumiane przez komputer. Możemy powiedzieć, że program komputerowy jest to algorytm zapisany w "języku komputera". Komputery niestety przetwarzają tylko ciągi zer i jedynek. Każda operacja, instrukcja jest zakodowana w postaci pewnej liczby dwójkowej. Ludzie nie są przystosowani do pracy z liczbami, zwłaszcza dwójkowymi. Wprowadzono więc pewne symbole, które zastępowały kody poszczególnych instrukcji i utworzono programy które zamieniały symbole na odpowiadające im kody instrukcji. Język, którego symbole odpowiadają dokładnie instrukcją procesora nazywamy Asemblerem. Wraz z rozwojem informatyki, powstało zapotrzebowanie na coraz bardziej skomplikowane i zawansowane oprogramowanie. Aby ułatwić tworzenie bardziej skomplikowanego oprogramowania, zaczęto tworzyć pewne symbole, które ułatwiały tworzenie oprogramowanie, ale nie miały bezpośredniego odwzorowania na instrukcje procesora. Program tłumaczący (zmieniający symbole na odpowiednie kody instrukcji), zwany translatorem, musi potrafić zamienić te "skomplikowane" symbole na ciąg instrukcji danego procesora. Tak powstały języki programowania wysokiego poziomu. Zbiór symboli, które translator potrafi rozpoznać i zamienić na kody instrukcji danego procesora nazywamy słowami kluczowymi. Słowa kluczowe zostaną dokładniej omówione w następnym rozdziale. Program komputerowy jest to ciąg instrukcji, które mają być wykonywane przez komputer. Z rozważań powyższych wynika, że mogą być dwie postacie zapisu tych instrukcji. Pierwszy sposób to bezpośredni zapis w kodzie dwójkowym kodów instrukcji danego procesora. Postać taką nazywamy programem wykonywalnym. Postać wykonywalna jest przechowywana najczęściej w plikach z rozszerzeniem exe lub dll. Drugi sposób to zapis instrukcji przeznaczonych do wykonania przez komputer w postaci bardziej czytelnej dla człowieka. Postać tą nazywamy postacią źródłową i do jej utworzenia używamy tzw. języków wysokiego poziomu. Postać źródłowa jest przechowywana w plikach testowych, z rozszerzeniem zależnym od zastosowanego języka programowania wysokiego poziomu. I tak programy napisane w języku C# posiadają rozszerzenie cs, w języku C++ cpp oraz h, w języku Visual Basic vb itd. Proces zamiany postaci źródłowej na postać wykonywalną nazywamy translacją. Translacja wykonywana jest przez program, jak już wcześniej wspominano, zwanym translatorem. Translator może przetłumaczyć fragment kodu lub nawet pojedynczą instrukcję i przekazać przetłumaczony kod od razu do wykonania przez komputer. Tak działający translator nazywamy interpreterem. Proces tłumaczenia zaś interpretacją kodu. Na zasadzie interpretacji kodu działają wszystkie języki skryptowe (PHP, JavaScript, VBScript). Innym sposobem działania jest najpierw przetłumaczenie całego programu (postać źródłowa) do postaci maszynowej. Dopiero gdy mamy przetłumaczony cały program, może zostać on wykonany na danej maszynie. Translatory działające w ten sposób nazywamy kompilatorami, proces translacji natomiast kompilacją. Programy napisane w językach programowania takich jak Pascal, C/C++, Fortran są najczęściej kompilowane. Sam proces kompilacji możemy podzielić na kilka etapów: Strona 6/19

Michał Włodarczyk Moduł 01 Wprowadzenie prekompilacja - polega na stworzeniu ostatecznego tekstu źródłowego programu, usunięcie formatowania tekstu (spacje), opcjonalne usunięcie komentarzy, rozwinięcie dyrektyw preprocesora (różne operacje na tekście programu - wstawianie, usuwanie, zamiana tekstu) kompilacja - przetworzenie tekstu źródłowego w kod maszynowy. Często tekst źródłowy przetwarzany jest najpierw do kodu asemblera (kompilacja), następnie kod asemblera jest optymalizowany (optymalizacja), po czym zoptymalizowany kod asemblera zamieniany jest na kod maszynowy (asemblacja). konsolidacja (linkowanie) - łączy wybrane pliki obiektowe (plik powstały po kompilacji pojedynczego pliku źródłowego) i biblioteki statyczne w program wykonywalny. Uaga: Często w praktyce kompilator i linker stanowią oddzielne programy. Interpretacja kodu jest wolniejsza niż uruchamianie skompilowanego kodu, ponieważ interpreter musi przeanalizować oraz przetłumaczyć każdą instrukcję i dopiero następnie wykonać akcję, a w przypadku kodu skompilowanego, komputer jedynie wykonuje już przetłumaczone instrukcje. Wykonanie powtórnie tego samego fragmentu kodu przez interpreter wymaga powtórnej jego analizy. Sam jednak cykl edycja (modyfikacja postaci źródłowej) - interpretacja (uruchomienie) może często być znacznie krótszy niż cykl edycja - kompilacja-uruchomienie. Platforma.NET Platforma.NET jest to zbiór technologii i pewnych usług, które ułatwią programiście tworzenie aplikacji, ze zwróceniem szczególnej uwagi na Internet i technologie oraz standardy z nim związane (XML, HTML, SOAP). Tworzenie aplikacji spróbujmy porównać do budowy domu i przy okazji omówić poszczególne komponenty platformy.net. NET Framework Gdy budujemy dom musimy stosować się do praw fizyki i przestrzegać prawa budowlanego. Stawiamy dom w określonym środowisku przyrodniczym i prawnym. Środowisko to w pewien sposób nas ogranicza. Ograniczenia te jednak powodują, że nasz dom jest bezpieczny zarówno dla użytkowników jak i środowiska, funkcjonalny i nie koliduje z otoczeniem i innymi domami. Podstawą, tym środowiskiem, do budowy i w którym będziemy uruchamiali nasze programy jest coś co się nazywa.net Framework.. Jeżeli chcemy uruchomić nasz program napisany w języku C#, musimy na danym komputerze mieć zainstalowane środowisko w którym będzie on wykonywany, czyli mieć.net Framework..NET Framework ver. 2.0 obsługuje następujące systemy: Windows 2000, Windows 98, Windows ME, Windows Server 2003, Windows XP. Dokładny opis obsługiwanych systemów wraz z wersjami można znaleźć w MSDN pod tematem "System Requirements for Version 2.0". Istnieją również implementacje.net Framework na inny systemy (nie "Windowsowe"). Możemy wymienić choćby projekt Rotor, zawierający implementację.net Framework na FreeBSD, czy projekt MONO implementacja środowiska na systemy Linux-owe..NET Framework zawiera dwa komponenty: środowisko uruchomieniowe oraz bibliotekę klas. Środowisko uruchomieniowe (common language runtime - CLR) zarządza wykonaniem naszego kodu i dostarcza pewnych serwisów, które ułatwiają programiście tworzenie oprogramowania. Kod uruchamiany pod kontrolą CLR-a nazywamy kodem zarządzanym (managed code). Kod zarządzany nie wywołuje funkcji sytemu operacyjnego bezpośredni, ale za pośrednictwem środowiska uruchomieniowego. Prócz roli pośredniczącej CLR również dostarcza szereg serwisów np.: automatyczne zwalnianie pamięci (Garbage collector - GC), zarządzanie wykonaniem kodu (Code manager), zarządzanie wyjątkami (Exception manager), sprawdzanie typów (Type checker), zarządzanie bezpieczeństwem kodu (Security engine). Gdy rozpoczynamy budowę domu, na działce mamy materiały, z których możemy wybudować dom, np. Strona 7/19

Michał Włodarczyk Moduł 01 Wprowadzenie piasek, kamienie, drzewo. Podobnie z.net Framework dostajemy bibliotekę klas, z tym że bibliotekę klas można bardziej porównać jakby na działce były gotowe elementy (półfabrykaty ) do budowy domy, a zadaniem programisty jest to tylko je poskładać, niczym dziecięce klocki. Serwery (The.NET Enterprise Servers) Wyposażając nasz dom, musi kupić szafy, pralkę, lodówkę, kuchenkę itd. Oczywiście możemy spróbować te rzeczy wykonać samodzielnie. Koszt jednak wykonania (czas i materiały) może znacznie przekroczyć cenę zakupu. Jakoś i zgodność ze standardami prawdopodobnie będzie też gorsza. Podobnie jest z oprogramowaniem. Możemy napisać własny serwer bazy danych lub możemy użyć gotowego serwera, zwłaszcza że istnieją wersje darmowe (MS SQL Express, MySQL). Firma Microsoft dostarcza szereg różnych serwerów: Microsoft SQL Server, Microsoft BizTalk Server, Microsoft Exchange Server, Microsoft SharePoint Portal Server, Microsoft Internet Security and Acceleration Server, itd. Usługi XML Web Services Chcąc mieć w pełni funkcjonalny i nowoczesny trzeba podłączyć prąd, wodę, kanalizację, telefon, telewizję kablową, Internet. Możemy oczywiście wykopać studnie głębinową, czy postawić wiatrak na podwórku, ale w większości przypadków taniej będzie skorzystać z usług odpowiedniego zakładu, wodociągowego czy energetycznego. Podobnie w przypadku oprogramowania, zamiast przetwarzać wszystko lokalnie, lepiej wysłać zlecenie do odpowiedniego serwisu i odebrać wyniki w postaci dokumentu XML. Przykładowym serwisem dostarczanym przez firmę Microsoft jest Microsoft Passport. Narzędzia programistyczne Prócz wcześniej wymienionych komponentów, do tworzenia oprogramowania niezbędne są narzędzia programistyczne: Microsoft dostarcza produkt o nazwie Microsoft.NET Framework Software Development Kit. Zawiera on szereg narzędzi do kompilacji, konfiguracji, wdrażania, debugowania, zabezpieczania itp. Oczywiście również mamy do dyspozycji Visual Studio - zintegrowane środowisko programistyczne. Microsoft udostępnia za darmo, również do celów komercyjnych, wersję Express. Jak już wspominano wcześniej, programista tworzy kod źródłowy w języku programowania wysokiego poziomu. W przypadku tworzenia oprogramowania uruchamianego pod kontrolą.net Framework mamy do wyboru szereg różnych języków. Microsoft dostarcza Visual Basic, Visual C++, Microsoft Visual C#, Visual J# i Microsoft JScript. Inni producenci dostarczają kompilatorów dla innych języków. Warto tu wspomnieć choćby o języku funkcyjnym Emerle, którego twórcami są naukowcy Uniwersytetu Wrocławskiego. Język w którym piszemy kod zarządzany musi być zgodny ze specyfikacją CLS (common language specification). Po napisaniu kodu źródłowego następuje proces kompilacji. Wynikiem tego procesu nie jest jednak kod maszynowy danego procesora, tylko tak zwany kod języka pośredniego (Microsoft Intermediate Language). Dopiero gdy program będzie uruchamiany, zostanie on skompilowany do kodu maszynowego danej platformy przez kompilator bezpośredni (just-in-time comiler) i następnie wykonany. Zastosowanie języka pośredniego daje przenośność kodu na różne platformy. Skompilowane obrazy kodu natywnego programów zarządzanych przechowywane są w obszarze zwanym native image cache. Do zarządzania tym obszarem służy program Ngen. Więcej informacji na temat programu Ngen można znaleźć w MSDN Library. Język pośredni ma swój asembler. Do dezasemblacji kodu służy narzędzie o nazwie Ildasm. Na temat Ildasm informacje można znaleźć również w MSDN Library. Strona 8/19

Michał Włodarczyk Moduł 01 Wprowadzenie Na platformie.net używa się nowej jednostki opakowania, zamiast pliku, zwanej podzespołem (assembly). Cały kod zarządzany musi znajdować się w podzespole. Podzespół składa się z jednego lub większej ilości plików EXE lub DLL, które zawierają kod IL oraz zasoby aplikacji. Powiązanie między plikami podzespołu jest logiczne (system operacyjny nic nie wie o powiązaniu między plikami stanowiącymi podzespół). Podzespół zawiera również manifest, który zawiera metadane opisujące podzespół. Manifest zawiera: Nazwę podzespołu (może to być nazwa silna) Numer wersji podzespołu (wspólny i taki sam dla wszystkich modułów, które stanowią podzespół). Numer wersji składa się z czterech licz: numeru głównego (major), numeru drugorzędnego (minor), numeru kompilacji (build) oraz z numeru korekty (revision). Informacje na temat kultury (lub języka) obsługiwanej przez podzespół Listę wszystkich plików, które stanowią podzespół, wraz z ich sumami kontrolnymi Listę innych wymaganych do pracy podzespołów wraz z numerami ich wersji. Atrybuty dodane przez użytkownika. Podzespół może być prywatny dla danej aplikacji, pliki podzespołu muszą znajdować się w katalogu aplikacji lub jego podkatalogach i jest używany tylko przez tą aplikację..net Framework umożliwia współużytkowanie podzespołów. Podzespoły współużytkowane należy umieszczać w globalnej pamięci podręcznej podzespołów (global assembly cache - GAC) - pseudo podkatalog WINDIR\assembly. Podzespoły współużytkowane muszą posiadać silną nazwę. Do zarządzania podzespołem, dodawania i usuwania plików do/z podzespołu, służy program AL.exe (Assembly Generation Utility). Struktura programu w C# Program w języku C# rozpoczyna się od metody Main, czyli od miejsca w pliku źródłowym: lub static void Main(string[] args) static void Main() Przed wyrazem static może wystąpić jeszcze słowo public. Co to jest metoda i znaczenie słowa void zostanie wyjaśnione dokładnie w rozdziale ósmym "Funkcje - wstęp". Znaczenie słów static i public jest dokładnie omówione w kursie "Programowanie obiektowe". Na obecnym etapie kursu, można przyjąć że metoda jest to pewne polecenie, które nie jest bezpośrednio instrukcją danego języka, ale kompilator potrafi zamienić to na ciąg instrukcji. Uwaga: Dopuszczalna jest również następująca definicja metody Main, jako punktu startowego: lub static int Main(string[] args) static int Main() Poszczególne instrukcje programu umieszcza się między dwoma nawiasami klamrowymi, tymi bezpośrednio za metodą Main: Nawiasy klamrowe określają blok kodu - pewną logiczną całość. static void Main(string[] args) instrukcja1; instrukcja2; instrukcjan; Strona 9/19

Michał Włodarczyk Moduł 01 Wprowadzenie Instrukcje są wykonywane jedna po drugiej w kolejności ich zapisania. Program w języku C# kończy się po wykonaniu instrukcji tuż przed nawiasem klamrowym zamykającym blok kodu metody Main. Innym sposobem zakończenia programu jest wywołanie instrukcji return wewnątrz bloku kodu metody Main. Słowo return dokładnie zostanie omówione w rozdziałach poświęconym metodom - rozdział ósmy. Metoda jest zawsze składową kasy. Program w języku C# to tak naprawdę kolekcja jednej lub więcej klas (w C# nie ma funkcji globalnych). Metodę Main dlatego zawsze trzeba umieścić w bloku kodu definiującym klasę. Pojęcie klasy zostanie przybliżone w dalszej części kursu, a dokładnie omówione w kursie "Programowanie obiektowe". class Program static void Main(string[] args) Nazwa Program, która w powyższym przykładzie stanowi nazwę klasy, jest nieobowiązkowa. Można ją zastąpić dowolnym inny identyfikatorem. Jakie są dopuszczalne identyfikatory zostanie dokładnie omówione w następnym rozdziale. Powyższy kod pokazuje najprostszy program napisany w języku C#. Program nic nie robi - jest pusty, ponieważ blok kodu metody Main nie zawiera żadnej instrukcji. Uwaga: Program w języku C# może zawierać kilka klas, Każda z klas może zawierać metodę Main. Punkt startowy programu jest określany przez nazwę klasy przy pomocy opcji kompilatora /main. W Visual Studio możemy ustawić to przy pomocy okna "Właściwości projektu" (menu Project/Nazwa Projektu Properties), zakładka Application, lista rozwijana Startup object:. Najczęściej klasy umieszczane są w pewnych logicznych pudełkach na nazwy, które określane są jako przestrzeń nazw. Przestrzeń nazw definiuje się przy pomocy słowa namespace, po którym umieszcza się nazwę "pudełka" i blok kodu określający, co zawiera dana przestrzeń nazw. namespace PierwszyProgram class Program static void Main(string[] args) Klasa w powyższym przykładzie ma teraz nazwę: PierwszyProgram.Program czyli składa się z nazwy przestrzeni nazw, znaku kropki oraz nazwy "właściwej" klasy. Jest to nazwa w pełni kwalifikowana. W programie można stosować nazwy skrócone - bez podawania nazwy przestrzeni nazw i znaku kropki. Umożliwia się to przez pokazanie na samej górze pliku źródłowego, które przestrzenie nazw kompilator powinien przeszukać w celu odnalezienia danej nazwy. Uzyskujemy to przy pomocy wyrazu using. Linijka using System; oznacza, że jeżeli kompilator nie rozpoznaje jakiejś nazwy w bieżącym kontekście, powinie sprawdzić przestrzeń nazw System. Strona 10/19

Michał Włodarczyk Moduł 01 Wprowadzenie Jeden podzespół może zawierać kilka przestrzeni nazw. Przestrzeń nazw danej nazwie może występować w kilku podzespołach. Wewnątrz metody Main umieszcza się ciąg instrukcji. Każdą instrukcję kończy się znakiem średnika - ;. Przy pisaniu programu w C#, w odróżnieniu od takich języków jak Pascal czy Visual Basic, należy zwracać uwagę na wielkość liter. Na przykład, jeżeli zostanie użyta nazwa main zamiast Main, kompilator zgłosi błąd, że nie odnalazł punku startowego programu. Dla kompilatora nie ma znaczenia jak będzie rozmieszczony kod - białe znaki (spacje, tabulatory, znak przejścia do nowej linii) są ignorowane. Obowiązuje jednak pewien styl formatowania kodu. Każdą instrukcję umieszcza się w oddzielnej linii. Instrukcje będące w tym samy bloku kodu powinny mięć tę samą odległość od lewego marginesu - to samo wcięcie. Instrukcje w bloku kodu zagnieżdżonego powinny mieć większe wcięcie. instrukcja_bloku_głównego1 instrukcja_bloku_głównego2 instrukcja_bloku_zagnieżdżonego1 instrukcja_bloku_zagnieżdżonego2 instrukcja_bloku_głównego1 Visual Studio automatycznie formatuje wcięcia. Otwarcie nowego bloku przez wstawienie znaku nawiasu klamrowego otwierającego i naciśnięciu klawisza ENTER powoduje automatyczne zwiększenie lewego wcięcia. Wstawienie w nowej linii znaku nawiasu klamrowego zamykającego powoduje automatycznie zmniejszenie lewego wcięcia. Visual Studio również bardzo ułatwia pisanie kodu dzięki automatycznemu uzupełnianiu nazw (IntelliSense). W czasie pisanie Visual Studio podpowiada, jakie nazwy są dostępne wyświetlając menu kontekstowe. Można również wymusić pojawienie się menu kontekstowego przez naciśnięcie kombinacji klawiszy CTRL+SPACJA. Spójne stosowanie wcięć może znacznie uprzyjemnić czytanie i zrozumienie programu. Innym czynnikiem wpływającym na czytelność programu są komentarze. Komentarze są tekstami zupełnie ignorowanymi przez kompilator i mogą zwierać dowolny ciąg znaków. Zawierają najczęściej uwagi na temat szczegółów działania programu. W języku C# wyróżniamy dwa rodzaje komentarzy: komentarz rozpoczynający się od dwóch ukośników // i rozciągający się do końca wiersza. Komentarz ten można umieścić na początku wiersz lub za instrukcją: //to jest komentarz instrukacja; //komentarz po instrukcji komentarz rozpoczynający się od znaków /*, a który kończy się znakami */. Komentarz ten może rozciągać się przez wiele linijek. Komentarze tego typu nie mogą być w sobie zagnieżdżone. instrukacja; /* tu się zaczyna komentarz tu nadal trwa tu się kończy*/ Strona 11/19

Michał Włodarczyk Moduł 01 Wprowadzenie W środowisku programistyczny Visual Studio specjalne znaczenie mają trzy ukośniki ///. Rozpoczynają komentarz, w którym umieszczamy znaczki XML-owe. Znaczniki określają cel komentarza i na ich podstawie może być wygenerowana dokumentacja. Visual Studio używa ich również przy wyświetlaniu podpowiedzi. Wykonanie programu komputerowego polega często na wprowadzeniu danych, wykonaniu poszczególnych instrukcji programu oraz wyprowadzeniu uzyskanych wyników. Do wyprowadzenia uzyskanych wyników najczęściej służy ekran monitora, natomiast do wprowadzenia danych klawiatura. Urządzenia te często nazywane konsolą. Język C#, podobnie jak większość języków nie posiada bezpośrednio instrukcji współpracujących z konsolą. W bibliotece mscorlib.dll, w przestrzeni nazw System, zawarta jest klasa Console, która zawiera szereg metod służących do współpracy z konsolą. Podzespół mscorlib jest domyślnie dodawany do każdego programu napisanego w języku C#. Do wypisywania tekstu na ekranie służy metoda Write. Stosuje się ją w następujący sposób: System.Console.Write("Tekst do wypisania"); czyli trzeba podać pełną ścieżkę gdzie znajduje się metoda, następnie otworzyć nawias okrągły i wewnątrz znaków cudzysłów podać tekst do wypisania na ekranie. Nie wolno zapomnieć o zamknięciu nawiasu okrągłego i postawieniu średnika. Stosując dyrektywę using, można pozbyć się nazwy przestrzeni nazw, czyli skorzystać z nazwy skróconej. Nazwy klasy nie można pominąć. using System Console.Write("Tekst do wypisania"); Inną metodą klasy Console wyprowadzającą tekst na ekran jest WriteLine. Metoda WriteLine po wypisaniu tekstu na ekranie dodatkowo powoduje przejście do nowej linii. Do wczytania znaków z klawiatury służą odpowiednio metody klasy Console: Read i ReadLine. Metody te zatrzymują działanie programu dopóki użytkownik nie naciśnie klawisza <Enter>. Dokładniej operacje wejścia - wyjścia zostaną omówione w następnym rozdziale. Uwaga: Również do wczytania znaku służy metoda klasy Console.ReadKey. W tym przypadku program czeka tylko do mementu naciśnięcia dowolnego znaku - użytkownik nie musi naciskać klawisza <Enter>. Jeżeli nie chcemy, aby naciskany znak pojawił się na ekranie (wyłączmy echo), metodę tą należy wywołać w następujący sposób: Console.ReadKey(true); Korzystanie z Visual Studio W środowisku Visual Studio nie można pracować na pojedynczym pliku źródłowym. Trzeba utworzyć coś, co się nazywa projektem. Projekt jest logicznym pojemnikiem na wszystkie elementy, który służą do budowy aplikacji. Fizycznie projekt jest reprezentowany przez plik XML z rozszerzeniem csproj. Opisuje on pliki źródłowe oraz inne elementy wchodzące w skład projektu, ich właściwości oraz właściwości samego projektu, np. czy produktem finalnym jest plik wykonywalny exe albo biblioteka dll. Projekt jest osadzony w innym kontenerze, który nazywany rozwiązaniem (solution). Rozwiązanie łączy ze sobą kilka projektów oraz zawiera pliki i metadane, które ułatwiają definiowanie rozwiązania jako spójnej całości. Obecnie tworzone oprogramowanie nie można zamknąć w jednym projekcie. Można wymienić choćby aplikację w architekturze klient-serwer, czy choćby aplikacja składająca się z pliku wykonywalnego oraz kilku bibliotek dll. Dzięki rozwiązaniu otrzymano łatwy sposób dostępu do wszystkich projektów, które są realizowane w trakcie budowy programu. Strona 12/19

Michał Włodarczyk Moduł 01 Wprowadzenie Dostęp ten jest możliwy z pojedynczej uruchomionej instancji Visual Studio. Plik reprezentujący rozwiązanie ma rozszerzenie sln. Zawiera on informacje na temat projektów wchodzących w skład rozwiązania, odwołanie do dodatkowych elementów niezwiązanych z żadnym projektem oraz pewne ustawienia konfiguracyjne używane przy budowaniu poszczególnych typów projektu. Drugim plikiem związanym z rozwiązaniem jest plik z rozszerzeniem suo (Solution User Options). Jest to plik ukryty i specyficzny dla konkretnego użytkownika. Zawiera on pewne ustawienia dostosowujące rozwiązanie do użytkownika. Rozwiązanie jest często utożsamiane z folderem, w którym znajdują się pliki sln i suo oraz podkatalogi poszczególnych projektów. Gdy rozpoczyna się prace w Visual Studio nad nowym projektem musimy wybrać szablon aplikacji. Szablon aplikacji lub szablon projektu dostarcza kolekcję plików koniecznych do rozpoczęcia pracy nad danym typem projektu wraz z szablonem kodu oraz odpowiednią strukturą i ustawieniami projektu. Strona 13/19

Michał Włodarczyk Moduł 01 Wprowadzenie Przykładowe rozwiązanie Tworzenie schematów blokowych Naszym zadaniem jest utworzenie schemat blokowego algorytmu, który sprawdza czy podana liczba jest parzysta. Przykładowe rozwiązanie jest podane na poniższym rysunku. Start Podaj wartość liczby a: a - liczba całkowita % - reszta z dzielenia Nie Czy a % 2 = = 0 Tak = = - porównanie Wypisz: "Podałeś liczbę nieparzystą" Wypisz: "Podałeś liczbę parzystą" Stop Pierwszy program w C# W demonstracji zostanie pokazany sposób kompilacji programu z linii poleceń: 1. Uruchom program Notatnik lub WordPad. 2. Otwórz plik Kurs\Demo\Modul1\Program1.cs, gdzie katalog Kurs jest katalogiem gdzie zostały skopiowane pliki kursu. 3. Przeanalizuj kod programu. 4. Naciśnij przycisk Start systemu Windows, wybierz Wszystkie Programy następnie Microsoft Visual Studio 2005/Visual Studio Tools/Visual Studio 2005 Command Prompt. Uruchomienie w ten sposób wiersza poleceń zapewnia odpowiednie ustawienie zmiennych środowiskowych, miedzy innymi ścieżki dostępu do kompilatora języka C# (csc.exe). 5. W wierszu poleceń zmień bieżący katalog na: Kurs\Demo\Modul01 6. Skompiluj program następującym poleceniem: csc /out:test.exe Program1.cs 7. Opcji kompilatora /out używamy, gdy chcemy utworzyć plik exe o innej nazwie niż plik źródłowy. Dokładny opis opcji kompilatora można znaleźć w MSDN Library pod tematem " C# Compiler Options". 8. Uruchom program przez napisanie w wierszu poleceń: Test.exe 9. Omów działanie program z szczególnym zwróceniem uwagi na metody Write oraz WriteLine. Strona 14/19

Michał Włodarczyk Moduł 01 Wprowadzenie Korzystanie z Visual Studio 1. Uruchom Visual Studio. W tym celu naciśnij przycisk Start systemu Windows, wybierz Wszystkie Programy następnie Microsoft Visual Studio 2005/ Microsoft Visual Studio 2005. 2. Utwórz nowy projekt a) Z menu File wybierz New/Project lub W oknie Start Page wybierz Create: Project. Okno Start Page zawiera również szereg odsyłaczy do najnowszych informacji związanych z środowiskiem Visual Studio jak i całą Platformą.NET. b) W oknie dialogowy New Project Rys. 2 Okno dialogowe "New Project" W drzewie Project types: rozwiń gałąź Visual C# i wybierz element Windows. W liście Templates: wybierz szablon Console Application. W polu edycyjnym Name: podaj nazwę projektu: Program1. W polu edycyjnym Location: wybierz miejsce na dysku gdzie będzie utworzony projekt przy pomocy przycisku Browse: Moje Dokumenty\Visual Studio 2005\Projects. Zaznacz pole wyboru Create directory for solution. Zaznaczenie tego pola wyboru powoduje, że zostanie utworzony katalog dla rozwiązania, w którym zostaną umieszczone pliki rozwiązania (sln i suo) oraz w którym zostanie utworzony katalog projektu. Gdy pole jest niezaznaczone folder projektu jest również katalogiem rozwiązania. Można utworzyć również puste rozwiązanie, bez projektu. W tym celu w drzewie Project types: rozwiń gałąź Other Projects Types i wybierz element Visual Studio Solutions, a następnie w liście Templates: wybierz szablon Blank Solution. W polu edycyjnym Solution Name: podaj nazwę rozwiązania: Demo2. Naciśnij przycisk OK. 3. Uruchom Eksplorator Windows i pokaż, jakie pliki i katalogi zostały utworzone w systemie plików po utworzeniu aplikacji. a) Demo2 - katalog rozwiązania b) Demo2.sln - plik rozwiązania c) Demo2.suo - plik zawierający opcje skojarzone z rozwiązaniem d) Program1 - katalog projektu e) Program1.csproj - plik projektu- Program.cs - plik zawierający kod programu f) Properties - katalog zwierający plik AssemblyInfo.cs g) AssemblyInfo.cs - plik służący do ustawienia właściwości podzespołu Strona 15/19

Michał Włodarczyk Moduł 01 Wprowadzenie h) bin i obj - katalogi wykorzystywane przez środowisko w czasie procesu kompilacji. Zawierają również skompilowany kod. W większości przypadków Visual Studio potrafi automatycznie odtworzyć ich zawartość, więc podczas archiwizacji kodu można je skasować. 4. Zamknij okno programu Eksplorator Windows i przełącz się do programu Visual Studio. 5. Opisz główne okna środowiska Visual Studio Code Properties Solution Explorer Rys. 1.2 Graficzny interfejs środowiska programistycznego Visual Studio. a) Okno kodu (Code) - służy do pisania kodu źródłowego. Edytor kodu dostarcza szereg właściwości ułatwiających tworzenie kodu takich jak: kolorowanie kodu, - ukrywanie bloków kodu (dyrektywa #region i #endregion), automatyczne uzupełnianie i generowanie kodu (Code Snippets), automatyczne przedefiniowanie kodu (Refactoring), podpowiedzi, przeglądanie metadanych jako kodu źródłowego (metadata as source) b) Solution Explorer - umożliwia przeglądanie elementów wchodzących w skład poszczególnych projektów jak i rozwiązania. Daje również możliwość zarządzania (usuwanie elementu, dodawanie elementu, tworzenie struktury) zarówno pojedynczym projektem jak i całym rozwiązaniem przy pomocy menu kontekstowego. Ułatwia również poruszanie się po kodzie. Dwukrotne kliknięcie na plik w Solution Explorer powoduje pokazanie jego zawartości w oknie edytora kodu. c) Properties - okno pokazujące właściwości wybranego aktualnie elementu. Zaznaczając np. element reprezentujący rozwiązanie lub projekt w oknie Solution Explorer, możemy sprawdzić lokalizację pliku rozwiązania i projektu na dysku. 6. Pokaż jak można ukrywać, pokazywać, zmieniać położenie okien. Dowolne okno można pokazać za pomocą odpowiedniej pozycji z menu View. Dotyczy to oczywiście również pasków narzędziowych.. Dowolne okno dokowalne (dockable) można zadokować (przytwierdzić) do dowolnej krawędzi okna głównego. Można je również połączyć w grupy. Gdy chcemy zmienić pozycję okna wystarczy je przeciągnąć za pasek tytułowy. W przypadku gdy chcemy oddzielić okno od grupy, "łapiemy" je za zakładkę (tab). W Visual Studio wprowadzono dodatkowe ikony, które pojawiają się w momencie gdy zaczynamy przeciągać Strona 16/19