Programowanie w Visual C++ 2010

Spis treści

Pierwsze kroki w Microsoft Visual Studio 2010

Czeka nas kilkunastotygodniowa przygoda z programowaniem w jednym z najbardziej popularnych języków programowania, czyli C++. Na zajęciach laboratoryjnych z AiPP będziemy korzystać ze środowiska programistycznego Microsoft Visual Studio 2010, w skrócie: VS.

W internecie dostępna jest bezpłatna (studencka) wersja tego środowiska przeznaczona dla studentów: Microsoft Visual C++ 2010 Express Edition. Mamy nadzieję, że zainstalowałeś już, drogi Czytelniku, ten program w domu. Jeśli nie, koniecznie przeczytaj, jak to się robi.
Pełna wersja środowiska VS zainstalowana w naszych laboratoriach zawiera nieco więcej zaawansowanych funkcji (z których nie będziemy korzystali na zajęciach) i umożliwia tworzenie aplikacji także w innych językach programowania, np. C#. Nie martwmy się tym jednak zbytnio – nie powinniśmy zauważyć różnicy.

Na wstępie...

Po uruchomieniu środowiska Microsoft Visual Studio 2010 powinno się pojawić okno podobne do poniższego (kliknij obrazek, aby powiększyć): Okno główne programu MS Visual Studio 2010

  1. Pasek menu – znajdują się tutaj opcje edycji pliku i projektu;
  2. Paski narzędzi – znajdują się tu nie tylko skróty do opcji edycji pliku, ale także i opcji projektu (tj. budowa, kompilacja i debugowanie programu – Brzmi strasznie? Nie ma czego się obawiać! Wszystkiego dowiemy się już za chwilę.);
  3. Praca z projektem – skróty do tworzenia i otwierania projektów;
  4. Ostatnie projekty – skróty do kilku ostatnio otwieranych projektów;
  5. Pasek zakładek – w zależności od wybranej zakładki, mamy możliwość przyjrzenia się błędom w kodzie, wynikach działania programu czy budowy projektu;
  6. Wskazówki Microsoftu – umożliwiają bliższe zapoznanie się ze środowiskiem.

Projekty w Visual Studio 2010

Tworzenie projektu

Projekt w Visual Studio to zbiór powiązanych ze sobą plików, dzięki którym można stworzyć program.

Tworzenie każdego programu w VS rozpoczynamy do stworzenia nowego, pustego projektu. Poniżej przedstawiamy instrukcję, jak to zrobić.

  1. Klikamy File | New | Project (Plik | Nowy | Projekt) albo New Project w oknie głównym;
  2. Wybieramy Win32 Console Application (aplikacja konsoli Win32) z menu.
    Uzupełniamy poniższe informacje:
    • Name (nazwa) – nazwa projektu, np. tutorial;
    • Location (lokalizacja) – ścieżka dostępu do projektu; aby ją zmienić, należy kliknąć na Browse (przeglądaj) i wybrać odpowiedni folder; przeważnie pozostawiamy domyślną wartość;
    • Solution name (nazwa rozwiązania) – powinno być takie samo, jak nazwa projektu (pole wypełni się automatycznie).
    Klikamy OK.
  3. Kolejne okno, które się pojawi, pełni rolę wyłącznie informacyjną. Klikamy Next (następny);
  4. Wyświetli się okno z opcjami projektu. Upewnijmy się, że jest zaznaczona opcja Console Application (aplikacja konsolowa). Następnie, pod Additional options (dodatkowe opcje) wybieramy Empty project (pusty projekt). Naciskamy przycisk Finish (zakończ).

Powtórzmy, KONIECZNIE trzeba wybrać Win32 Console Application (dla Visual C++, żadnego innego języka)! W przeciwnym razie będą kłopoty.

Podobnie jest z opcją Empty project.

Przez Solution (rozwiązanie) rozumiemy zbiór kilku powiązanych ze sobą projektów. My jednak zawsze będziemy pracować wyłącznie z jednym projektem (tj. jedno laboratorium = jeden projekt), więc Solution możemy utożsamić z Project.

Rzut oka na zawartość projektu

Jeżeli poprawnie wykonaliśmy powyższe kroki, powinniśmy uzyskać następujący wynik: Widok na Solution Explorer

W lewej (przeważnie) stronie okna znajduje się Solution Explorer (eksplorator rozwiązań), w którym umieszczane będą m.in. pliki źródłowe wchodzące w skład projektu. Gdy tworzymy nowy projekt zgodnie z powyższą instrukcją, każdy katalog powinien być pusty.

Poniżej przedstawiamy opis widocznych elementów:

  • External Dependencies (zależności zewnętrzne) – ten katalog służy zaawansowanym programistom; nam nie będzie przydatny
  • Header Files (pliki nagłówkowe) – umieszczamy tu pliki z rozszerzeniem .h;
  • Resource Files (pliki zasobów) – zazwyczaj umieszcza się tu dodatkowe pliki, takie jak obrazki; nie będziemy z niego korzystać;
  • Source Files (pliki źródłowe) – umieszczamy tu pliki z rozszerzeniem .cpp.

Pliki .cpp są plikami źródłowymi dla języka C++ (c-plus-plus). To głównie w nich znajduje się kod programu. Na początku będziemy trzymać się zasady, że jeden program = jeden plik .cpp. Za jakiś czas (tzn. po poznaniu pojęć deklaracji i definicji funkcji) okaże się, że na jeden program może składać się kilka plików .cpp.

Z kolei pliki .h (header) to tzw. pliki nagłówkowe. O nich też się nauczymy na jednym z kolejnych wykładów.

Początkującym adeptom sztuki programowania zdarza się przypadkowo zamknąć panel Solution Explorer. Aby go z powrotem przywołać, klikamy View | Solution Explorer (Widok | Eksplorator rozwiązań).

Dodawanie plików źródłowych do projektu

Dodajmy teraz nowy plik .cpp do naszego projektu.

  1. Klikamy prawym przyciskiem myszy na katalog Source Files w Solution Explorer. Wybieramy kolejno Add | New Item (Dodaj | Nowy Element);
  2. Zaznaczamy pozycję C++ File (.cpp), w polu Name ustalamy nazwę pliku i klikamy Add.

Jeśli wszystko wykonaliśmy poprawnie, powinniśmy uzyskać następujący wynik: Plik źródłowy w Solution Explorer i miejsce do pisania kodu

Fizycznie pliki .cpp i .h będą zapisane na dysku w katalogu ścieżka_do_projektów_VS2010\nazwa_projektu\nazwa_projektu. Dla przykładu, jeśli aktualnie otwarty projekt nazywa się tutorial, to w naszych pracowniach komputerowych będzie to H:\Visual Studio 2010\Projects\tutorial\tutorial (Autorka niniejszego samouczka może podziwiać tworzone przez siebie pliki w katalogu C:\Users\Kasia\Documents\Visual Studio 2010\Projects\tutorial\tutorial).

Zauważmy, że w ścieżce dostępu nazwa projektu występuje DWA RAZY!

Jeśli przerabiasz ten samouczek w zaciszu domowych, spróbuj teraz odnaleźć stworzony właśnie plik .cpp na dysku swojego komputera. Wielokrotnie przyda Ci się to w przyszłości!
Czasami będziemy musieli dodać do projektu już istniejące pliki. Wtedy, zamiast New Item, klikamy Existing Item (istniejący element) i wybieramy odpowiednie elementy. Zwróćmy uwagę, że dodawane pliki muszą znajdywać się w katalogu ścieżka_do_projektów_VS2010\nazwa_projektu\nazwa_projektu (a nie np. na pulpicie). Wcześniej więc należy je skopiować w odpowiednie miejsce za pomocą np. Eksploratora systemu Windows.

Programowanie w Visual Studio 2010

Pierwszy program

Mamy już wiedzę dotyczącą tworzenia projektów. Pora zacząć programować!

Każdy program w C++ musi zawierać funkcję main() (czym jest funkcja, dowiemy się później). Najprostszy kod może wyglądać w ten sposób:

int main()
{
	return 0;
}

Ten program nic nadzwyczajnego nie robi (a właściwie nie robi nic). Aby go uruchomić, klikamy na Debug | Start Without Debugging (Uruchamianie | Uruchom bez debugowania). Ujrzymy okienko z pytaniem , czy chcemy skompilować projekt. Klikamy Yes. Jeżeli wszystko się powiodło, pojawi się następujące okno konsoli: Okno konsoli ze standardowym, systemowym komunikatem

Jeśli został zgłoszony błąd, upewnij się, że wprowadzony przez Ciebie kod jest dokładnie taki sam jak powyżej, a projekt utworzony w opisany powyżej sposób!

Uwaga: Komunikat LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt jest generowany przez błąd w samym Visual Studio 2010. Jeśli takowy wystąpi, możesz go naprawić zmieniając ustawienia projektu na następujące (niestety trzeba to robić będzie dla każdego projektu):

Project Properties
   -> Configuration Properties
       -> Linker (General)
          -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
Przez termin debug rozumiemy czynności prowadzące do wykrycia i usunięcia błędów (czyli bugów) w kodzie (semantycznych, nie składniowych).
Nazwa bug (pluskwa, robak) znalazła się w słownictwie komputerowym już w 1945 roku, kiedy to za przyczyną awarii komputera MARK II stała ta oto z pozoru niewinna ćma.

Proces tworzenia programu

Jak to się stało, że ze zwykłego pliku tekstowego "utworzył się" program? Proces, który został wykonany po kliknięciu Debug | Start Without Debugging, składa się z trzech etapów:

  1. Kompilacja – tłumaczenie kodu źródłowego na tzw. kod maszynowy, czyli na postać zrozumiałą dla komputera;
  2. Linkowanie (zwane również konsolidacją czy też łączeniem) – połączenie skompilowanych części programu w plik wykonywalny;
  3. Uruchomienie pliku wykonywalnego.
Wywołanie Build Solution (kompiluj rozwiązanie) z menu Build (kompiluj) uruchamia wyłącznie kompilację i linkowanie, bez uruchamiania programu. Czasami warto korzystać z tej możliwości, np. gdy chcemy sprawdzić, czy napisany przez nas program pozbawiony jest błędów składniowych.

Witaj, świecie!

Czas rozbudować nieco nasz kod:

#include <iostream>
using namespace std;

int main()
{
	cout << "Hello World!" << endl;
	return 0;
}

Spróbujmy uruchomić ponownie program. Tym razem w oknie konsoli pojawił się dodatkowo napis Hello World!. Oto opis wyróżnionych linijek:

  • Dyrektywa #include w wierszu #1 umożliwia dołączanie bibliotek (czyli zestawu gotowych funkcji) i plików nagłówkowych do programu. W bibliotece iostream (input/output streamstrumień wejścia/wyjścia) znajdują się m.in. funkcje do wyświetlania i wczytywania napisów oraz liczb w konsoli.
  • Dzięki instrukcji w wierszu #2 będziemy mogli korzystać ze standardowej przestrzeni nazw std. Bez tego, w linijce #6 musielibyśmy pisać std::cout zamiast po prostu cout. Nie zapominajmy o tym!
  • Dzięki instrukcji #6 możemy wyświetlać na ekranie różnego rodzaju komunikaty. Jak się okaże, za jej pomocą można będzie wypisywać także zawartość zmiennych (o tym już niedługo). endl to specjalna funkcja (tzw. manipulator), powodująca przejście do nowej linii.
Sprawdź, jaki będzie wynik działania programu, jeżeli linijkę #6 zastąpisz instrukcją:
cout << "Hello " << "World!" << endl;

Przydatne sztuczki

Aby nie znikało okienko konsoli...

A teraz dla odmiany włączmy nasz program w innym trybie. Klikamy Debug | Start Debugging (Uruchamianie | Uruchom z odpluskwianiem).

Ojej! A cóż to się stało? Czyżby okienko pojawiło się i po chwili zniknęło? Nie ma się czego obawiać, jest na to rada. Wystarczy dopisać system("pause") w jednej z ostatnich linijek:

#include <iostream>
using namespace std;

int main()
{
   cout << "Hello World!" << endl;
   system("pause"); //jako przedostatnia instrukcja
   return 0;
}

Warto zapamiętać tę sztuczkę, ponieważ już w niedalekiej przyszłości będziemy korzystać z tego trybu. Ponadto, przydaje się ona, gdy coś się nagle popsuje. :-)

Pamiętajmy, że praca z produktami firmy Microsoft przynosi dużo dobrej zabawy. :-)

Komentarze

Czasami chcemy opisać działanie poszczególnych instrukcji albo zostawić notatkę, np. informującą co jeszcze zostało do zrobienia w naszym programie. Umożliwiają to komentarze, których są dwa rodzaje:

// komentarz jednolinijkowy:
// wszystko aż do końca wiersza jest ignorowane przez kompilator

/* komentarz wielo-
   linij-
   kowy */
Dzięki komentarzom możemy także oznaczyć te części programu, których na razie nie chcemy kompilować. Przydaje się to, kiedy coś nie działa albo nie skończyliśmy danej części programu. Kompilator po prostu ignoruje tego rodzaju kod.

Gdy zepsuje się projekt – odtwarzanie projektu z zapisanych plików

Dosyć częstym problemem podczas laboratoriów jest niestabilna praca Visual Studio (co, jak wyżej wspomnieliśmy, dostarcza wspaniałej rozrywki), przez co możemy doświadczyć problemów z kompilacją projektu. Wtedy często jedynym ratunkiem jest utworzenie projektu od nowa (zgodnie z instrukcją podaną wyżej).

Po utworzeniu projektu musimy skopiować pliki do odpowiedniego katalogu. Przykładowo, stworzyliśmy nowy projekt o nazwie tutorial2. Pliki źródłowe z poprzedniego projektu znajdują się np. w katalogu H:\Visual Studio 2010\Projects\tutorial\tutorial. Kopiujemy wszystkie pliki z rozszerzeniem .cpp oraz .h (jeśli takowe stworzyliśmy) do katalogu H:\Visual Studio 2010\Projects\tutorial2\tutorial2.

Teraz należy dodać te pliki do naszego projektu. Żeby dołączyć już gotowe pliki, musimy kliknąć prawym przyciskiem myszy na Source Files w Solution Explorer, a następnie Add | Existing Item. W okienku wybieramy ścieżkę dostępu do przekopiowanych! plików (patrz wyżej).

Powyższe instrukcje możemy zastosować również wtedy, kiedy chcemy skończyć program w domu. Wiemy już, że na naszym komputerze domowym ścieżka dostępu do projektu jest z pewnością inna.
Pamiętajmy, aby pliki z rozszerzeniem .h dodawać do folderu Header Files. Robi się to analogicznie do przypadku dołączania plików .cpp do Source Files.
Dla ćwiczenia utwórz drugi projekt w Visual Studio i przekopiuj do niego utworzony plik wyświetlający napis Hello World!. Jeśli już teraz nabierzesz wprawy, unikniesz frustracji podczas laboratoriów punktowanych. :-)

Podsumowanie

Nauczyliśmy się podstawowych reguł tworzenia programu w środowisku Microsoft Visual Studio 2010. Będzie to nam przydatne przez cały kurs programowania na pierwszym semestrze, dlatego warto nauczyć się tego, co zostało tutaj opisane. Praktyka czyni mistrza!

CC By 3.0
Copyright © 2011-2016 by Katarzyna Fokow [Last update: 2017-02-01 17:16:58]
This work is licensed under a Creative Commons Attribution 3.0 Unported License