MATERIAŁY POMOCNICZE NR DO PRACOWNII Z PRZEMIOTU INFORMATYKA 1 Micrsft Visual Studi: zintegrwane śrdwisk prgramistyczne (IDE), umżliwia twrzenie samdzielnych aplikacji, aplikacji sieciwych, usług sieciwych raz serwisów internetwych, prducent: Micrsft, licencja: kmercyjna / freeware, ficjalna strna Visual Studi: http://msdn.micrsft.cm/pl-pl/vstudi w skład śrdwiska wchdzą następujące narzędzia: Micrsft Visual C# (d wersji 00) Micrsft Visual C++ Micrsft Visual Basic Micrsft Visual J# (wersje 00-005) Micrsft Visual Web Develper ASP.NET (d wersji 005) Micrsft Visual F# (d wersji 010) śrdwisk dstępne jest w następujących edycjach: Micrsft Visual Studi Express Micrsft Visual Studi Standard Micrsft Visual Studi Prfessinal Micrsft Visual Studi Team System wersja wykrzystywana na zajęciach: Micrsft Visual Studi 008 Prfessinal wersja pisana w materiałach pmcniczych: Micrsft Visual Studi 008 Express Editin aktualna wersja stabilna: Visual Studi 010 Service Pack 1 (Visual Studi 10) premiera: 03.03.011 aktualna wersja testwa: Visual Studi 11 Develper Preview premiera: 9.0.01 Micrsft Visual Studi 008 Express Editin: dstępne bezpłatnie, zawiera uprszczne wersje prgramów dstępnych w płatnych wersjach, przeznaczne głównie dla studentów i hbbystów, licencja pzwala na twrzenie prgramów kmercyjnych, dstępne języki: Visual Basic 008 Express Editin Visual C++ 008 Express Editin Visual C# 008 Express Editin Visual Web Develper 008 Express Editin zawiera uprszczną wersję MSDN - MSDN Express Library, instalacja: instalatr sieciwy (,3 MB + ) ISO Image File (749 MB) - DVD MSDN Express Library (361 MB) Wspierane systemy peracyjne: Windws XP Service Pack r abve Windws Server 003 Service Pack 1 r abve Windws Server 003 R r abve Windws Vista Windws Server 008 Wymagania sprzętwe: Minimum: 1.6 GHz CPU, 384 MB RAM, 104x768 display, 5400 RPM hard disk Recmmended:. GHz r higher CPU, 104 MB r mre RAM, 180x104 display, 700 RPM r higher hard disk On Windws Vista:.4 GHz CPU, 768 MB RAM Infrmatyka 1 - Pracwnia Strna 1 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna z 15 01 Jarsław Frenc
Okn główne prgramu: 1 3 Wybranie nweg prjektu pwduje wyświetlenie pniższeg kna przeznaczneg d kreślenia szablnu twrznej aplikacji (Template). 6 4 5 7 Elementy kna główneg prgramu: 1 - Menu główne - Pasek narzędziwy 3 - Start Page - strna startwa 4 - Recent Prjects - skróty d statni twieranych prjektów raz mżliwść twarcia istniejąceg prjektu lub utwrzenia nweg 5 - Getting Started - łącza d dkumentacji pzwalającej zapznać się z pracą w Visual C++ 008 6 - Micrsft Visual C++ Express - najnwsze infrmacje dtyczące śrdwiska 7 - Output - kn wyświetlające wyniki działania prgramu Utwrzenie nweg prjektu w Visual C++ 008: Rzpczęcie pracy ze śrdwiskiem Visual C++ 008 wymaga utwrzenia nweg prjektu. Nwy prjekt mżna utwrzyć na kilka spsbów: Wybierając w menu głównym File New Prject. Używając klawisza skrótu Ctrl + Shift + N. Klikając iknkę na pasku narzędziwym (pierwsza d lewej strny). Klikając na karcie Start Page Recent Prjects pcję Create: Prject Infrmatyka 1 - Pracwnia Strna 3 z 15 01 Jarsław Frenc Szablny zebrane są w trzy grupy: CLR - szablny prjektów przeznacznych dla platfrmy.net. Win3 - szablny prjektów pzwalających twrzyć kd natywny Windws (wykrzystujący WinAPI). General - inne szablny. Grupa CLR zawiera następujące szablny: Class Library - szabln przeznaczny d twrzenia biblitek klas, które mgą być wykrzystane w innych prjektach. CLR Cnsle Applicatin - szabln przeznaczny d twrzenia aplikacji knsli systemu Windws. CLR Empty Prject - szabln przeznaczny d generwania pusteg prjektu. Windws Frms Applicatin - szabln przeznaczny d twrzenia aplikacji kienkwych (z graficznym interfejsem użytkwnika). Infrmatyka 1 - Pracwnia Strna 4 z 15 01 Jarsław Frenc
--- Grupa Win3 zawiera następujące szablny: Win3 Cnsle Applicatin - szabln przeznaczny d twrzenia prstych aplikacji uruchamianych z Wiersza plecenia. Win3 Prject - szabln przeznaczny d twrzenia aplikacji systemu Windws z wykrzystaniem WinAPI. Grupa General zawiera następujące szablny: Empty Prject - szabln przeznaczny d twrzenia dwlnych aplikacji. Makefile Prject - szabln przeznaczny d twrzenia aplikacji wykrzystujących przy kmpilacji plik makefile. Uwaga: Wszystkie prgramy pisane na zajęciach będą twrzne w parciu szabln Win3 Cnsle Applicatin. P naciśnięciu przycisku Next > przechdzi się d drugieg krku kreatra. W drugim krku, Applicatin Settings, mżna: Zmienić typ aplikacji (Applicatin type). Ddać pliki nagłówkwe (Add cmmn header files fr). Zmienić ddatkwe pcje (Additinal ptins). P wybraniu typu szablnu (prjektu) należy wprwadzić: Nazwę prjektu (Name), będzie na jedncześnie nazwą pliku wynikweg exe. Płżenie plików prjektu (Lcatin). Nazwę przestrzeni rbczej (Slutin Name). Przestrzeń rbcza (Slutin - rzwiązanie, slucja) mże składać się z wielu prjektów. Każdy taki prjekt jest samdzielnym prgramem. Wszystkie prjekty wchdzące w skład przestrzeni rbczej mgą być skmpilwane p wybraniu tylk jedneg plecenia. Zazwyczaj prjekty wchdzące w skład przestrzeni rbczej są ze sbą w pewien spsób pwiązane, np. rzwiązują ten sam prblem, ale różnymi metdami. P wybraniu typu prjektu uruchamiany jest Kreatr prjektu (Win3 Applicatin Wizard) składający się z dwóch krków: Overview. Applicatin Settings. Pierwszy krk, Overview, ma charakter tylk infrmacyjny. Zaznaczamy pcję Empty Prject. Infrmatyka 1 - Pracwnia Strna 5 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna 6 z 15 01 Jarsław Frenc
P naciśnięciu przycisku Finish zstanie utwrzny nwy, pusty prjekt. Wpisanie kdu prgramu wymaga ddania d prjektu nweg pliku. Mżna t zrbić na kilka spsbów: Wybierając z menu główneg: File New File. Używając klawisza skrótu: Ctrl + N. Klikając prawym klawiszem myszki w knie Slutin Explrer na Surce Files i wybierając Add New Item Prgram w języku C Prgram w języku C jest t niesfrmatwany plik tekstwy dpwiedniej składni mający rzszerzenie.c. Najprstszy prgram ma następującą pstać: Przykład nr.1 #include <stdi.h> int main() { printf("witaj swiecie\n"); return 0; } Omówienie prgramu dyrektywa preprcesra nazwa pliku nagłówkweg Jak typ pliku (Templates) zaznaczamy C++ File (.cpp), a następnie wprwadzamy nazwę pliku (Name) i ewentualnie jeg płżenie (Lcatin): Wciśnięcie przycisku Add spwduje utwrzenie pusteg pliku i jeg twarcie w edytrze kdu. typ wartści zwracanej przez funkcję #include <stdi.h> int main() { } nazwa funkcji lista argumentów przekazywanych d funkcji printf( Witaj swiecie\n ); return (0); wartść zwracana przez funkcję instrukcja instrukcja nagłówek funkcji ciał funkcji Prgram w języku C składa się z funkcji i zmiennych. Funkcje zawierają instrukcje kreślające wyknywane peracje, zaś zmienne przechwują wartści wykrzystywane pdczas tych peracji. Pwyższy prgram składa się z jednej funkcji (main), nie ma w nim natmiast zmiennych. Funkcja main składa się z dwóch instrukcji: printf i return. Każda instrukcja zakńczna jest średnikiem. W prgramie mże być zdefiniwanych więcej funkcji, ale zawsze musi istnieć funkcja nazwie main, gdyż pełni na szczególna rlę w prgramie - d pczątku tej funkcji rzpczyna się wyknanie całeg prgramu. Funkcja w języku C rzpczyna się d nagłówka funkcji (pierwszy wiersz). Zawartść funkcji graniczna jest nawiasami klamrwymi: {, } i nazywana jest ciałem funkcji. Nagłówek funkcji i ciał funkcji twrzą definicję funkcji. Język C rzróżnia wielkść liter, zatem nazwę funkcji main nie mżemy zapisać jak, np. Main lub MAIN. Pdbnie jest z nazwami pzstałych funkcji i słów kluczwych języka C. Zazwyczaj w prgramie pza funkcją main występują inne funkcje - mgą t być funkcje napisane przez nas lub funkcje pchdzące z biblitek. W pwyższym prgramie d wyświetlenia tekstu wykrzystywana jest funkcja nazwie printf. Skrzystanie z tej Infrmatyka 1 - Pracwnia Strna 7 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna 8 z 15 01 Jarsław Frenc
funkcji wymaga dłączenia d naszeg prgramu infrmacji biblitece, w której funkcja ta zstała zdefiniwana. Służy d teg pierwsza linia prgramu: #include <stdi.h>. stdi.h jest t standardwa bibliteka wejścia/wyjścia (ang. standard input/utput library). Funkcję wywłuje się pdając jej nazwę (printf) i (w nawiasach zwykłych) listę argumentów przekazywanych d funkcji ( Witaj swiecie\n ). W pwyższym przykładzie d funkcji main nie są przekazywane żadne argumenty, infrmują tym puste nawiasy w jej nagłówku - ( ). Ciąg znaków ujęty w cudzysłów nazywa się stałą napiswą (napisem, łańcuchem znaków). W pwyższym łańcuchu znaków na samym jeg kńcu występuje sekwencja \n - reprezentuje na znak nweg wiersza (jest t jeden znak). Inaczej mówiąc pwduje na przerwanie wypisywania tekstu w bieżącym wierszu i wznwienie wypisywania d leweg marginesu w następnym wierszu. Kmpilacja i uruchmienie prgramu w śrdwisku Visual C++ Pdczas kmpilacji prgramu twrzny jest plik wynikwy exe. D kmpilacji prgramu mżna wybrać jedną z pzycji znajdujących się w menu głównym Build. Prject Only - pdmenu zawierające pzycje przeznaczne d budwania (Build Only MyApp), przebudwania (Rebuild Only MyApp), czyszczenia (Clean Only MyApp) i linkwania (Link Only MyApp) tylk aktualneg prjektu, Batch Build - twiera kn budwania wsadweg, Cnfiguratin Manager - twiera kn menadżera knfiguracji prjektu, Cmpile (Ctrl + F7) - kmpiluje edytwany plik z kdem źródłwym. Jeśli w przestrzeni rbczej znajduje się tylk jeden prjekt t najprstszym jest wybranie pzycji Build Slutin, gdyż mżna wtedy użyć klawisza skrótu F7. Skmpilwany prgram mżna uruchmić pprzez wybieranie pzycji Start Withut Debugging z menu główneg Debug lub wciśnięcie klawisza skrótu Ctrl + F5. Uruchmienie prgramu dbywa się autmatycznie w knie Wiersza plecenia. Przed uruchmieniem prgramu system peracyjny twrzy takie kn, a następnie uruchamia w nim prgram. Prgram wyświetla tekst Witaj swiecie. Ddatkw śrdwisk Visual C++ zatrzymuje na kniec prgram i wyświetla tekst: Aby kntynuwać, naciśnij dwlny klawisz. P naciśnięciu dwlneg klawisza kn Wiersza plecenia jest zamykane. Jeśli uruchmimy skmpilwany prgram z pzimu systemu peracyjneg, t nie zbaczymy efektów jeg działania. System peracyjny utwrzy kn, uruchmi w nim prgram, prgram zakńczy się i kn zstanie natychmiast zamknięte. Aby zabserwwać wyniki działania prgramu należy zatrzymać g przed zakńczeniem działania. Mżna t zrbić na kilka spsbów. Metda pierwsza - przed instrukcją return, wywłujemy plecenie systemwe pause. kd prgramu: #include <stdi.h> #include <stdlib.h> Pszczególne pzycje wyknują następujące peracje: Build Slutin (F7) - buduje wszystkie prjekty znajdujące się w przestrzeni rbczej, Rebuild Slutin (Ctrl + Alt + F7) - przebudwuje wszystkie prjekty znajdujące się w przestrzeni rbczej (nrmalnie kmpilwane są tylk te pliki, które uległy zmianie d czasu statniej kmpilacji), Clean Slutin - usuwa wszystkie pliki będące wynikiem budwania prjektów wchdzących w skład przestrzeni rbczej, Build MyApp - buduje aktywny prjekt ( nazwie MyApp), Rebuild MyApp - przebudwuje aktywny prjekt, Clean MyApp - usuwa wszystkie pliki będące wynikiem budwania aktywneg prjektu, int main() { printf("witaj swiecie\n"); } system("pause"); return 0; funkcja system() uruchamia plecenie nazwie (ujętej w cudzysłów) przekazanej d niej jak argument, plecenie pause zawiesza wyknywanie prgramu i wyświetla kmunikat: Aby kntynuwać, naciśnij dwlny klawisz... użycie w prgramie funkcji system() wymaga dłączenia pliku nagłówkweg stdlib.h, p wyświetleniu kmunikatu, naciśnięcie dwlneg klawisza spwduje zakńczenie prgramu i zamknięcie kna. Infrmatyka 1 - Pracwnia Strna 9 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna 10 z 15 01 Jarsław Frenc
Metda druga - przed instrukcją return, wywłujemy funkcję getch(). kd prgramu: #include <stdi.h> #include <cni.h> int main() { printf("witaj swiecie\n"); } getch(); return 0; funkcja getch() zatrzymuje wyknywanie prgramu i czeka na wciśnięcie dwlneg klawisza, użycie w prgramie funkcji getch() wymaga dłączenia pliku nagłówkweg cni.h. Spsób zapisu kdu prgramu: Spsób zapisu kdu prgramu wpływa tylk na jeg przejrzystść, a nie na wyknanie. W tym celu w prgramie z Przykładu nr.1 występują ddatkwe spacje przed funkcją printf() i słwem kluczwym return. Pwyższy prgram mżna zapisać także tak: #include <stdi.h> int main(){printf("witaj swiecie\n");return 0;} Śrdwisk Micrsft Visual Studi umżliwia autmatyczne frmatwanie kdu prgramu. W tym celu należy zaznaczyć kd prgramu (np. Ctrl + A), a następnie wcisnąć kmbinację klawiszy Ctrl + K+ F. printf("witaj "); printf("swiecie"); printf("\n"); Witaj swiecie _ W języku C istnieje kilka znaków, które pełnią specjalną funkcję w łańcuchu znaków. Znaki te zstały przedstawine w pniższej tabeli: Opis znaku Zapis w printf() Przejście d nweg wiersza \n Tabulacja pzima (dstęp) \t Alarm (głśniczek wydaje dźwięk) \a Backspace \b CR - Carriage Return (pwrót na pczątek wiersza) \r Istnieją także znaki, które pełnią specjalną funkcję w kdzie źródłwym i nie mżna ich wyświetlić w tradycyjny spsób. Znaki te raz spsób ich zapisu w łańcuchu znaków zstały przedstawine w pniższej tabeli: Opis znaku Znak Zapis w printf() Cudzysłów " \" Apstrf ' \' Ukśnik (ang. backslash) \\ \\ Prcent % %% Najczęściej ppełniane błędy i reakcje kmpilatra: W pczątkwej fazie nauki prgramwania większść ppełnianych błędów są t literówki raz błędy składni. Puczającym mże być samdzielne zrbienie błędów i zabserwwanie reakcji kmpilatra na te błędy. Pniżej przedstawine są wyniki kmpilacji prgramów zawierających błędy. Wyświetlanie tekstu przy zastswaniu funkcji printf(): Jak już wcześniej wspmnian, występująca w łańcuchu znaków sekwencja \n pwduje przerwanie wypisywania tekstu w bieżącym wierszu i wznwienie wypisywania d leweg marginesu w następnym wierszu. Sekwencja \n mże występwać w dwlnym miejscu łańcucha znaków: 1 #include <studi.h> 3 int main() 5 printf("witaj swiecie\n"); 7 } - błędna nazwa pliku nagłówkweg - zamiast stdi.h jest studi.h printf("witaj swiecie\n"); printf("witaj\nswiecie\n"); Witaj swiecie _ Witaj swiecie _ 1>------ Build started: Prject: MyApp, Cnfiguratin: Debug Win3 ------ 1>Cmpiling... 1>d:\myapp\myapp\myapp.cpp(1) : fatal errr C1083: Cannt pen include file: 'studi.h': N such file r directry 1>Build lg was saved at "file://d:\myapp\myapp\debug\buildlg.htm" 1>MyApp - 1 errr(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-t-date, 0 skipped ========== Infrmatyka 1 - Pracwnia Strna 11 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna 1 z 15 01 Jarsław Frenc
Liczba w nawiasie p nazwie pliku: d:\myapp\myapp\myapp.cpp(1) znacza numer wiersza, w którym wystąpił błąd. 1 #include <stdi.h> 3 int main() 5 printf("witaj swiecie\n") 7 } 1>------ Build started: Prject: MyApp, Cnfiguratin: Debug Win3 ------ 1>Cmpiling... 1>d:\myapp\myapp\myapp.cpp(6) : errr C143: syntax errr : missing ';' befre 'return' 1>Build lg was saved at "file://d:\myapp\myapp\debug\buildlg.htm" 1>MyApp - 1 errr(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-t-date, 0 skipped ========== Prszę zwrócić uwagę, że Visual C++ znaczył jak błędny następny wiersz p tym, w którym brakuje średnika. 1 #include <stdi.h> 3 int main() 5 printf("witaj swiecie\n"); 7 - brak średnika na kńcu wiersza - brak nawiasu klamrweg kńcząceg prgram 1>------ Build started: Prject: MyApp, Cnfiguratin: Debug Win3 ------ 1>Cmpiling... 1>d:\myapp\myapp\myapp.cpp(7) : fatal errr C1075: end f file fund befre the left brace '{' at 'd:\myapp\myapp\myapp.cpp(4)' was matched 1>Build lg was saved at "file://d:\myapp\myapp\debug\buildlg.htm" 1>MyApp - 1 errr(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-t-date, 0 skipped ========== 1 #include <stdi.h> 3 int main() 5 printf("witaj swiecie\n); 7 } 1>------ Build started: Prject: MyApp, Cnfiguratin: Debug Win3 ------ 1>Cmpiling... 1>d:\myapp\myapp\myapp.cpp(5) : errr C001: newline in cnstant 1>d:\myapp\myapp\myapp.cpp(6) : errr C143: syntax errr : missing ')' befre 'return' 1>Build lg was saved at "file://d:\myapp\myapp\debug\buildlg.htm" 1>MyApp - errr(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-t-date, 0 skipped ========== 1 #include <stdi.h> 3 int Main() 5 printf("witaj swiecie\n); 7 } - brak cudzysłwu kńcząceg łańcuch znaków - nazwa funkcji main() pisana wielką literą 1>------ Build started: Prject: MyApp, Cnfiguratin: Debug Win3 ------ 1>Cmpiling... 1>Linking... 1>MSVCRTD.lib(crtexe.bj) : errr LNK019: unreslved external symbl _main referenced in functin tmaincrtstartup 1>D:\MyApp\Debug\MyApp.exe : fatal errr LNK110: 1 unreslved externals 1>Build lg was saved at "file://d:\myapp\myapp\debug\buildlg.htm" 1>MyApp - errr(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-t-date, 0 skipped ========== Infrmatyka 1 - Pracwnia Strna 13 z 15 01 Jarsław Frenc Infrmatyka 1 - Pracwnia Strna 14 z 15 01 Jarsław Frenc
Tłumaczenia kmunikatów kmpilatra: W pniższej tabeli zestawin wybrane kmunikaty kmpilatra i ich tłumaczenia na język plski. Kmunikat fatal errr C1083: Cannt pen include file: 'studi.h': N such file r directry errr C143: syntax errr : missing ';' befre 'return' fatal errr C1075: end f file fund befre the left brace '{' at 'MyApp.cpp(4)' was matched errr C001: newline in cnstant errr C143: syntax errr : missing ')' befre 'return' errr C3861: 'Printf': identifier nt fund errr C470: 'main' : lks like a functin definitin, but there is n parameter list; skipping apparent bdy errr C065: 'return0' : undeclared identifier Tłumaczenie błąd krytyczny C1083: Nie mżna twrzyć dłączaneg pliku 'studi.h': Nie ma takieg pliku lub katalgu (błędna nazwa pliku nagłówkweg) błąd C143: błąd składni: brakujący ';' przed 'return' (na kńcu wiersza pwyżej return brakuje średnika) błąd krytyczny C1075: naptkan kniec pliku przed dpaswaniem nawiasu d leweg nawiasu '{' w 'MyApp.cpp(4)' (brakuje nawiasu zamykająceg na kńcu pliku) błąd C001: nwa linia w stałej błąd C143: błąd składni: brakujący ')' przed 'return' (kmunikaty mgą być niezrzumiałe - w rzeczywistści brakwał cudzysłwu kńcząceg łańcuch znaków) błąd C3861: 'Printf': nie znalezin identyfikatra (nazwa funkcji napisana wielką literą - pwinn być 'printf') błąd C470: 'main': wygląda jak definicja funkcji ale brakuje listy parametrów; mijam pzrne ciał (funkcji) (p nazwie funkcji 'main' zabrakł nawiasów: '(' i ')') błąd C065: 'return0': niezadeklarwany identyfikatr (brak spacji pmiędzy 'return' i '0') Infrmatyka 1 - Pracwnia Strna 15 z 15 01 Jarsław Frenc