Dr inż. Dariusz JĘDRZEJCZYK. Informacje organizacyjne, Wprowadzenie do programowanie w języku C++. Spotkanie 1

Podobne dokumenty
Część 4 życie programu

I - Microsoft Visual Studio C++

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

Podstawy programowania skrót z wykładów:

C++ wprowadzanie zmiennych

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Programowanie komputerowe. Zajęcia 1

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

Języki i metodyka programowania. Wprowadzenie do języka C

1 Podstawy c++ w pigułce.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Wstęp do Programowania, laboratorium 02

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Pytania sprawdzające wiedzę z programowania C++

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Struktura pliku projektu Console Application

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Programowanie - wykład 4

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

Wstęp do programowania. Wykład 1

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

1 Podstawy c++ w pigułce.

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

Podstawy Programowania

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy i języki programowania

Podstawy Programowania Obiektowego

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Wstęp do programowania

Język C++ Różnice między C a C++

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Zmienne, stałe i operatory

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wstęp do informatyki- wykład 7

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie w języku Python. Grażyna Koba

2 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Programowanie strukturalne i obiektowe

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Programowania. Wykład 1

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Struktury Struktura polami struct struct struct struct

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Wprowadzenie do programowania i programowanie obiektowe

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Język C zajęcia nr 11. Funkcje

Argumenty wywołania programu, operacje na plikach

Podstawy programowania w C++

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie w języku C++

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wstęp do programowania

Wskaźniki. Informatyka

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

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

Obsługa wyjątków. Język C++ WW12

Transkrypt:

Informacje organizacyjne, Wprowadzenie do programowanie w języku C++. Spotkanie 1 Dr inż. Dariusz JĘDRZEJCZYK 11/3/2016 Katedra Informatyki Stosowanej i Modelowania 2 W ramach przedmiotu przedstawione zostaną zagadnienia programowania proceduralnego w języku C++ dotyczące: zmiennych i tablic instrukcji warunkowych pętli wskaźników funkcji Dr inż. Dariusz JĘDRZEJCZYK pok. 409, pawilon B5, IV piętro tel. 012 617 41 80 djedrzej@agh.edu.pl home.agh.edu.pl/~djedrzej 11/3/2016 Katedra Informatyki Stosowanej i Modelowania 3 1

Z zakresu wiedzy: Zna zasady poprawnego budowania aplikacji z wykorzystaniem modelu programowania strukturalnego. Zna zasady budowania funkcji oraz posługiwania się nimi. Zna paradygmat programowania strukturalnego Z zakresu umiejętności: Potrafi samodzielnie zaprojektować aplikację z wykorzystaniem paradygmatu programowania strukturalnego. Potrafi poprawnie przeprowadzić analizę kodu źródłowego i wyeliminować ewentualne błędy. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 4 Na zajęciach będzie sprawdzana lista obecności W przypadku nieobecności na konkretnym spotkaniu nie jest możliwe oddanie projektu przewidzianego na te właśnie zajęcia. W przypadku nieobecności na konkretnym spotkaniu nie jest możliwe odrobienie zajęć z inną grupą. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 5 Projekty z zajęć są oceniane w zależności od stopnia zrealizowania przykładu na danych zajęciach. Projekty są oceniane w skali 0-3 punkty. W przypadku nieobecności na ćwiczeniu z danej tematyki - nie jest możliwe oddanie projektu przewidzianego na te zajęcia. Brak możliwości podejścia do terminów poprawkowych: Sumaryczna liczba punktów jest mniejsza niż 25% maksymalnej liczby punktów możliwej do zdobycia w ramach ćwiczeń. Liczba nieobecności jest mniejsza niż połowa zajęć (zaokrąglenie w górę). 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 6 2

Oceny będą ustalane według poniższego algorytmu (wyciąg z regulaminu studiów AGH). Przedstawione procenty należy określać względem maksymalnej liczby punktów, jaką można zdobyć na zajęciach: poniżej 50% - 2,0 (niedostateczny), od 50% - 3,0 (dostateczny), od 61% - 3,5 (plus dostateczny), od 71% - 4,0 (dobry), od 81% - 4,5 (plus dobry), od 91% - 5,0 (bardzo dobry) 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 7 http:// home.agh.edu.pl/~djedrzej 11/3/2016 Katedra Informatyki Stosowanej i Modelowania 8 Wykład nie jest oparty tylko i wyłącznie na jednym podręczniku. W związku z tym dopuszczalne są wszystkie książki o tematyce programowania obiektowego. Mogą to być np. pozycje przedstawione obok. Jednak ze względu na mnogość informacji umieszczonych na stronach internetowych jak najbardziej polecam nie tylko książki, ale również jako źródło wiedzy Internet. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 9 3

11/3/2016 Katedra Informatyki Stosowanej i Modelowania 10 Programowanie liniowe Programowanie strukturalne Model programowania Programowanie zdarzeniowe Programowanie obiektowe 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 11 Proces tworzenia programu rozpoczyna się od jego ogólnego opisu, przechodząc następnie do szczegółów. W programowaniu strukturalnym zaleca się wykorzystanie tylko kilku najważniejszych struktur sterujących: Iteracja - powtarzanie instrukcji w pętli do momentu, w którym zostanie spełniony warunek iteracyjny Wybór - realizacja poszczególnych instrukcji programu (przypisania, wprowadzania/wyprowadzania danych, warunkowa, wyboru, złożona, procedury) w zależności od jego stanu Sekwencja - wykonanie poszczególnych instrukcji w kolejności Podprogram 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 12 4

Zadanie Algorytm Kod źródłowy programu Opracowanie kodu Unit1.cpp Unit2.cpp Unit1.h Unit2.h źródłowego (stworzony na Kompilator podstawie wcześniej wymyślonego algorytmu, czyli sposobu rozwiązania Unit1.obj Unit2.obj danego zadania) Konsolidator Plik.lib Generowanie kodu Plik.exe wynikowego 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 13 Cechą charakterystyczną języka C++ (jak wielu innych) jest możliwość programu z wielu modułów. Modułem może być każdy plik zawierający poprawny kod źródłowy. Programy buduje się z wykorzystaniem funkcji. Każda funkcja może posiadać (lecz nie musi) argumenty i może zwracać dany typ. W celu wygenerowania pliku wynikowego programu w jednym i tylko jednym module programu musi znaleźć się funkcja o nazwie main(). Od funkcji main() rozpoczyna się wykonywanie programu. Moduł, który zawiera funkcję main() jest modułem głównym. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 14 Standard C++ //int main(int argc, char** argv) int main(int argc, char *argv[]) { return 0; } Rozwiązanie Microsoft int _tmain(int argc, _TCHAR *argv[]) { return 0; } 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 15 5

argc - liczba elementów w tablicy argv argv[] - tablica z elementami podanymi podczas uruchamiania programu Podczas uruchomienia programu bez dodatkowych parametrów wówczas: argc = 1, natomiast w tablicy argv jest nazwa programu W przypadku urochomienia programu w sposób poniżej:./program boo foo hii wówczas argc = 4, natomiast w tablicy argv są umieszczone kolejno program, boo, foo, hii 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 16 01. main(... ){ 02.... 03. } 01. main(... ) 02. { 03.... 04. } 01. main(... ) 02. { 03.... 04. } stosować wcięcia, otwierać i zamykać nawiasy a później pisać zawartość w przypadku wykonywania np. pętli bez użycia nawiasów klamrowych wykona się tylko pierwsza instrukcja poniżej pętli 01. main(... ) 02. { 03. { 04.... 05. } 06. } 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 17 Deklaracja Definicja Inicjalizacja Sposób nazywania zmiennych Zasięg zmiennych Klasy pamięci - modyfikatory deklaracji zmiennych i stałych 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 18 6

zmienna - to obiekt w programowaniu, który przechowuje różnego rodzaju dane niezbędne do działania programu. Zmienna podczas działania programu może zmieniać swoje wartości (jak wskazuje nazwa). Tworząc zmienną musimy nadać jej nazwę oraz typ, który określa co nasza zmienna będzie przechowywać. <modyfikator> <typ> nazwazmiennej; 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 19 char - zmienna przechowuje znaki (litery, cyfry, znaki interpunkcyjne). Za pomącą tego typu zmiennej można także przechowywać niewielkie liczby. int - zmienna służy do przechowywania liczb całkowitych. bool - zmienna służy do przechowywania wartości logicznych true/false (prawda/fałsz). float - zmienna przechowuje liczby rzeczywiste (zmiennoprzecinkowe - do 7 cyfr po przecinku). double - zmienna przechowuje liczby rzeczywiste podobnie jak powyższy typ ale posiada dużo większą dokładność (do 15 miejsc po przecinku). void - to dane "niezdefiniowane". Można im przypisywać wartość tylko po określeniu rozmiaru i przydzieleniu pamięci. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 20 C++ pozwala także na użycie pewnych kwalifikatorów przed typem zmiennej: signed - zmienna może przechowywać wartości dodatnie i ujemne (zmienna posiada znak +/-). unsigned - zmienna może przechowywać tylko wartości dodatnie. short - zmienna jest typu krótkiego - wpływa na długość zajmowanej pamięci (a więc również na zakres zmiennej). long - zmienna jest typu długiego. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 21 7

Nazwa Długość Zakres Opis unsigned char 1 bajt 0 do 255 char lub signed char 1 bajt -128 do 127 Liczby całkowite lub znaki unsigned int 2 bajty 0 do 65 535 int lub signed int 2 bajty -32 768 do 32 767 short int 2 bajty -32 768 do 32 767 unsigned long 4 bajty 0 do 4 294 967 295 Liczby całkowite long lub signed long 4 bajty -2 147 483 648 do 2 147 483 647 Liczby double 8 bajtów 1.7 * 10-308 do 1.7 * 10 +308 rzeczywiste long double 10 bajtów 3.4 * 10-4932 do 1.1 * 10 +4932 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 22 register; oznacza, że zmienna ma być trzymana w rejestrze procesora, a nie w pamięci. Co prawda i tak zdecyduje o tym kompilator, ale jest to już pewna podpowiedź. const; oznacza, że obiekt jest stały. W konsekwencji istnieje obowiązek zainicjalizowania go i nie wolno później zmieniać jego wartości volatile; oznacza, że nie ma się wyłączności do podanego obiektu (tzn. może być to rejestr sprzętowy komputera albo zmienna używana przez inny wątek). Oznacza to, że kompilatorowi nie wolno używać w celach optymalizacyjnych wartości odczytanej we wcześniejszej operacji; musi on za każdym odczytem jej wartości dokonać jej fizycznego odczytu 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 23 static; w ogólności oznacza, że obiekt taki istnieje przez cały czas, niezależnie od zasięgu, który go używa. Dla funkcji oraz zmiennych globalnych oznacza z kolei zniesienie zewnętrznego symbolu obiektu lub funkcji (tzn. poza bieżącą jednostką kompilacji, czyli plikiem, nic nie może z tego korzystać) extern; oznacza, że następująca deklaracja nie jest fizyczną deklaracją, lecz zaimportowaniem owej deklaracji z innej jednostki kompilacji auto - przydział miejsca w pamięci dla zmiennej następuje dynamicznie (na stosie) w czasie wykonywania bloku, w którym zmienna została zadeklarowana. Po zakończeniu wykonywania instrukcji z danego bloku pamięć po zmiennej zostaje zwolniona. Jest to domyślna klasa zmiennych. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 24 8

Deklaracja - to informacja dla kompilatora dotycząca tego czym jest tworzony obiekt. w jednym zakresie może istnieć wiele deklaracji tej samej zmiennej. Wykorzystanie modyfikatora extern. extern <typ> nazwazmiennej; 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 25 Definicja - jest zarówno deklaracją, ale dodatkowo rezerwuje pamięć dla tworzonego obiektu. w jednym zakresie może istnieć tylko jedna definicja zmiennej o tej samej zmiennej. <typ> nazwazmiennej; int a; - definicja zmiennej o nazwie "a" do przechowywania liczb całkowitych (typu int) char b; - zmienna o nazwie "b" do przechowywania znaków (typ char). 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 26 Inicjalizacja jest to nadawanie początkowej wartości zmiennej w chwili jej tworzenia. char znak = 'w'; //stworzenie zmiennej znakowej o nazwie "znak" // i przypisanie do niej znaku "w". int b = 8; //stworzenie zmiennej typu całkowitego o nazwie "b" // i nadanie jej wartości 8. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 27 9

Nadając zmiennej nazwę należy trzymać się następujących reguł: zmienna jest jednym ciągiem znaków bez spacji np. nazwa_zmiennej, nazwazmiennej, nazwa zmiennej, nie zaczynamy nazwy od cyfry np. zmienna12, 12zmienna, nie używamy polskich liter takich jak: ą, ę, itp. nazwa zmiennej powinna kojarzyć się z przeznaczeniem tej zmiennej np. poleokregu nazwa nie może być słowem kluczowym języka programowania np. auto, for, int, short, class, itp. camelcase, PascalCase, notacja węgierska 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 28 Zmienne lokalne Zmienne tego typy "widoczne" są tylko w określonym bloku. bloki ograniczone nawiasami klamrowymi zakres bloku funkcji - zakres dotyczący wszystkich funkcji definiowanych w programie. zakres obszaru klasy - zasięg określony przez zakres tworzonej klasy i dotyczy danych składowych oraz funkcji składowych klasy. zakres obszaru przestrzeni nazw - zasięg dotyczący obszaru przestrzeni nazw. Pojęcie to niedawno zostało wprowadzone do języka C++. Można dzięki niemu wprowadzić jakiś porządek wśród nazw - poprzez zgrupowanie ich w rodziny. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 29 Zmienne globalne Zmienne tego typu widoczne są w każdym "zakątku" programu. Oznacza to, że można z niej korzystać w każdym miejscu programu. Trzeba jedna zwrócić uwagę, że przy tworzeniu tego typu zmiennych, istnieje niebezpieczeństwo przypadkowego nadpisania jej wartości, co może spowodować nieprawidłowe działanie programu. Dlatego zaleca się korzystanie ze zmiennych lokalnych. Zmienne globalne deklaruje się przed blokiem funkcji main() Zmienne globalne są domyślnie inicjowane zerem. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 30 10

Rzutowanie typów polega na konwersji jednego typu na drugi. float a = 3.34; // sposób pierwszy int b = (int) a; // rzutowanie zmiennej rzeczywistej na typ // całkowity - zmienna "b" przyjmie wartość 3 int c = int (a); // zauważmy, że rzutowanie wykonujemy poprzez // wpisanie w nawiasie zmiennej, a przed nią // typ, na który rzutujemy char znak = 'q'; cout<<znak<<": "<<(int)znak; //wyświetlenie kodu ASCII znaku q 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 31 Komentarze jedno-liniowe // #include <iostream.h> // biblioteka wejścia-wyjścia Komentarze wielo-liniowe (blokowe) /* */ /* początek komentarza blokowego #include <iostream.h> Koniec komentarza blokowego */ Komentarze zagnieżdżone /* początek komentarza blokowego #include <iostream.h> // komentarz jedno-liniowy Koniec komentarza blokowego */ 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 32 Dyrektywa include nakazuje wstawić plik nagłówkowy. Plik, podany jako argument, umieszczamy, w zależności od jego lokalizacji, w <> lub "". Plik podany w <> jest wyszukiwany w katalogu, który jest zarejestrowany przez kompilator jako katalog z plikami nagłówkowymi #include <nazwa_pliku> Plik podany w "" jest szukany w bieżącym katalogu lub w podanej ścieżce dostępu. #include "nazwa_pliku" 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 33 11

Biblioteka iostream (input/output stream) jest standardową biblioteką wejścia/wyjścia w C++. Pozwala na: Wyświetlanie tekstu i zmiennych na ekranie (konsoli) za pomocą obiektu cout i operatora "<<" cout<< "Podaj liczbe calkowita:"; pobieranie danych z klawiatury i zapisywanie do zmiennych za pomocą obiektu cin i operatora ">>" cin>> zmiennadoliczbcalkowitych; // zmienna o nazwie zmiennadoliczbcalkowitych musi być wcześniej zdefiniowana Dodawania znaku nowej linii cout<< endl; 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 34 Dyrektywa using namespace musi być użyta w przypadku, gdy zamiast pliku iostream.h, będzie użyta iostream, w celu udostępnienia definicji zawartej w tym pliku. Jest w tym przypadku używana, aby nie pisać za każdym razem wywołanie obiektu cout czy cin z przedrostkiem std::. using namespace std; cout<< "Podaj nazwę"<< endl; Bez użycia przestrzeni nazw powyższy zapis przedstawia się następująco: std::cout<< "Podaj nazwę"<< std::endl; 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 35 Przykład odczytania podanych podczas uruchomienia programu dodatkowych parametrów funkcji głównej main(): 1. #include <iostream> 2. using namespace std; 3. int main(int argc, char* argv[]) { 4. cout << "argc = " << argc << endl; 5. for(int i = 0; i < argc; i++) 6. cout << "argv[" << i << "] = " << argv[i] << endl; 7. system("pause"); 8. return 0; 9. } 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 36 12

1. #include <iostream> 2. #include <cstdlib> 3. using namespace std; 4. int main(int argc, char* argv[]) { 5. for(int i = 1; i < argc; i++) 6. cout << atoi(argv[i]) << endl; 7. return 0; 8. } atoi( ) funkcja do konwersji znaków ASCII na zmienne typu int 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 37 1. #include <iostream> 2. using namespace std; 3. int a = 0; // zmienna globalna 4. int main( void ) 5. { 6. int a = 1; // zmienna lokalna 7. cout<< "Zmienna globalna a = "<<::a << endl; 8. cout<< "Zmienna lokalna a = "<< a << endl; 9. cout<< "\nkoniec programu..."; 10. return 0; 11. } 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 38 cin.get(); #include <iostream> using namespace std; cin.sync(); //kasowanie zbędnych znaków z bufora cin.get(); //oczekiwanie na wciśnięcie klawisza getchar(); #include <cstdio> using namespace std; getchar(); //oczekiwanie na wciśnięcie klawisza system("pause"); #include <cstdlib> using namespace std; system("pause"); //działa tylko w systemie Windows! 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 39 13

Windows Microsoft Visual Studio (Microsoft DreamSpark) Dev-C++ (http://orwelldevcpp.blogspot.com/) Windows/Linux/Mac OSX Eclipse (https://eclipse.org/) NetBeans (https://netbeans.org/) Code::Blocks (http://www.codeblocks.org/) Linux Geany KDevelop (https://www.kdevelop.org/) Mac OSX XCode 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 40 Tworzenie projektu z wykorzystaniem kompilatora Micorosoft Visual Studio. Napisanie prostego przykładu na wczytywanie i wypisywanie danych wprowadzonych przez użytkownika. 11/3/2016 Katedra Informatyki Stosowanej i Modelowania 41 Dziękuję za uwagę i zapraszam na 15 minut przerwy. W dalszej części ćwiczenia do samodzielnego wykonania. 11/3/2016 Katedra Informatyki Stosowanej i Modelowania 42 14

Zadanie 1 Stwórz projekt w Microsoft Visual Studio typu: Win32 Console Application Empty Project. W zbudowanych projektach należy wypisać dowolny tekst oraz przeprowadzić kompilację, budowanie oraz uruchomienie programu. Obie aplikacje powinny zatrzymać się po wypisaniu zadanego tekstu. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 43 Zadanie 2 Napisz program pozwalający na wczytywanie i wypisywanie wprowadzonych przez użytkownika danych takich jak np.: Imię Nazwisko Wiek Wzrost Waga itp.. Aplikacja powinna zatrzymać się po wypisaniu zadanego tekstu. 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 44 Zadanie 3 Napisz program pozwalający na obliczenie odległości podanego przez użytkownika punktu od początku układu współrzędnych oraz od dowolnego innego punktu. Punkt zadany jest w postaci współrzędnej x oraz y. Uwaga: Odległość od początku układu liczona jest według wzoru: pierwiastek(x 2 +y 2 ). Odległość punktu A(x1,y1) od punktu B(x2,y2) liczona jest według wzoru: pierwiastek((x2-x1) 2 +(y2-y1) 2 ) Aby wykorzystać pierwiastek należy dołączyć do projektu bibliotekę <cmath> i użyć funkcję sqrt(). 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 45 15