• Nie Znaleziono Wyników

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT dr inż. Jakub Możaryn

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT dr inż. Jakub Możaryn"

Copied!
31
0
0

Pełen tekst

(1)

Programowanie C++

Wykład 1 - Aplikacje konsowlowe w środowisku QT

dr inż. Jakub Możaryn

Instytut Automatyki i Robotyki

Warszawa, 2014

(2)

Wstęp

(3)

Plan wykładu

Podstawowe pojęcia i proste programy. Pojęcia algorytmu, programu, kodu wykonywalnego. Kompilacja i wykonanie programu. Sieci działań.

Struktura programu. Komentarze i dokumentacja programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe.

Instrukcje: czytania, pisania, przypisania. Klasyfikacja typów. Stałe, wyrażenia i funkcje. Instrukcje: warunkowa, złożona. Instrukcje cykliczne:

pętla for, pętle sterowane warunkiem. Instrukcje przerywające wykonanie pętli. Instrukcja wielokrotnego wyboru.

(4)

Plan wykładu

Rysunek :Proces powstawania i działania progarmu.

(5)

Pojęcia podstawowe

Algorytm

Określamy tym mianem wszelkie przepisy postępowania, które doprowadzają do uzyskania pożądanego efektu – rozwiązania zadania.

Algorytm

Skończony ciąg jasno zdefiniowanych czynności, koniecznych do

wykonania pewnego rodzaju zadań. Algorytm ma przeprowadzić system z pewnego stanu początkowego do pożądanego stanu końcowego.

Badaniem algorytmów zajmuje się algorytmika. Algorytm może zostać zaimplementowany w postaci programu komputerowego.

Algorytm - (def.)

Algorytm to jednoznaczny przepis obliczenia w skończonym czasie pewnych danych wejściowych do pewnych danych wynikowych.

(6)

Pojęcia podstawowe

Kompilacja

Program służący do automatycznego tłumaczenia kodu napisanego w jednym języku (języku źródłowym) na równoważny kod w innym języku (języku wynikowym). Proces ten nazywany jest kompilacją.

Kompilator

W informatyce kompilatorem nazywa się najczęściej program do tłumaczenia kodu źródłowego w języku programowania na język maszynowy. Niektóre z nich tłumaczą najpierw do języka asemblera, a ten na język maszynowy jest tłumaczony przez asembler.

(7)

Plan wykładu

Rysunek :Proces powstawania i działania progarmu.

(8)

Pojęcia podstawowe

Język maszynowy

Zestaw rozkazów procesora, w którym zapis programu wyrażony jest w postaci liczb binarnych stanowiących rozkazy oraz ich argumenty.

Kod maszynowy

Postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego lub prawie bezpośredniego wykonania przez procesor. Jest ona dopasowana do konkretnego typu procesora i wyrażona w postaci rozumianych przez niego kodów rozkazów i ich argumentów. Jest to postać trudna do analizy przez człowieka.

Konsolidator (ang. linker)

Inaczej - program konsolidujący, to jeden z programów składowych kompilatora. Konsolidator w trakcie procesu konsolidacji łączy zadane pliki obiektowe i biblioteki statyczne tworząc w ten sposób plik wykonywalny.

(9)

Oprogramowanie Qt

Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki Qt.

Przedmiotem zajęć są aplikacje konsolowe (część 1, 4h), oraz aplikacje okienkowe (część 2, 4h). Na zajęciach używana będzie wersja Qt 5.0.2 for Windows 32-bit (MinGW 4.7) wykorzystująca kompilator MinGW 4.7. Plik instalacyjny zajmuje 650MB.

Możliwe jest również zainstalowanie wersji wykorzystującej

kompilator Microsoft Visual Studio 2010 oraz wersje na Mac i Linux.

Pliki instalacyjne środowiska Qt dla odpowiedniego systemu i kompilatora można znaleźć pod adresem

http://qt-project.org/downloads

(10)

Qt

Qt - zestaw przenośnych bibliotek i narzędzi programistycznych dedykowanych dla języków C++, QML i Java. Ich podstawowym składnikiem są klasy służące do budowy graficznego interfejsu programów komputerowych GUI (ang. Graphic User Interface), począwszy od wersji 4.0 Qt zawiera też narzędzia do tworzenia programów konsolowych i serwerów.

Twórcą Qt jest obecnie organizacja Qt Project, do której oprócz niezależnych twórców Open Source należą m.in. firmy Digia, KDAB, ICS. Digia jest właścicelem praw do komercyjnej wersji Qt oraz do znaków towarowych.

(11)

Qt - historia

Pomysłodawcami i pierwszymi twórcami Qt byli Haavard Nord i Eirik Chambe-Eng. Projektowanie pierwszych klas biblioteki rozpoczęto w 1991 r. Rok później Chambe-Eng opracował koncepcję mechanizmu sygnałów i gniazd, który wkrótce stał się fundamentem biblioteki.

4 marca 1994 r. Nord i Chambe-Eng założyli firmę Quasar Technologies.

W 1995 firma otrzymała pierwszy kontrakt i zatrudniła pierwszego programistę.

W 1997 twórcy KDE postanowili oprzeć swój produkt na bibliotece Qt.

Dzięki temu szybko osiągnęła ona status jednej z najpopularniejszych bibliotek dla aplikacji okienkowych w C++ dla systemu Linux.

W 2008 Trolltech (d. Quasar Technologies) został przejęty przez Nokię.

W 2010 Nokia zapowiedziała użycie Qt jako głównej platformy programistycznej w Symbianie oraz systemie MeeGo.

W 2012 Digia kupiła od firmy Nokia framework Qt, zapewniając przy okazji dalsze wsparcie i rozwój darmowej licencji i współpracę z projektem KDE oraz KDE Free Qt Foundation na rzecz otwartego i wolnego oprogramowania.

(12)

Pierwsze uruchomienie Qt

Wraz ze środowiskiem Qt Creator zintegrowany jest rozbudowany system pomocy z przykładami i samouczkami (po angielsku). Zapoznanie się ze środowiskiem najlepiej zacząć od kroków widocznych na ekranie

powitalnym. Ekran taki pojawi się przy pierwszym uruchomieniu i zawsze wtedy, gdy wybrana będzie sekcja Zaczynamy nad górną poziomą kreską.

Rysunek :Ekran główny Qt

(13)

Pierwsze uruchomienie Qt

Wraz ze środowiskiem Qt Creator zintegrowany jest rozbudowany system pomocy z przykładami i samouczkami (po angielsku). Zapoznanie się ze środowiskiem najlepiej zacząć od kroków widocznych na ekranie

powitalnym. Ekran taki pojawi się przy pierwszym uruchomieniu i zawsze wtedy, gdy wybrana będzie sekcja Zaczynamy nad górną poziomą kreską.

Rysunek :Ekran główny Qt

(14)

Pierwsze uruchomienie Qt

W widoku ekranu powitalnego dostępne są sekcje:

Projekty - widok ostatnio otwartych sesji i projektów oraz opcje utworzenia sesji lub projektu

Przykłady - gotowe projekty z opisem (po angielsku) Samouczki - instrukcje krok po kroku (po angielsku)

(15)

Pierwsze uruchomienie Qt

Boczny pasek wyboru trybu pracy Powitanie

Edycja - podstawowy tryb do tworzenia kodu źródłowego programu

Design - tryb tworzenia interfejsu graficznego (nieużywany na ZAP I)

Debug - tryb debugowania programu

Projekty – ustawienia parametrów budowania i uruchamiania otwartych projektów

Analiza - tryb analizy uruchomionego

programu (analiza użycia procesora i pamięci) Pomoc

Rysunek :Pasek wyboru trybu pracy

(16)

Pierwsze uruchomienie Qt

Poniżej paska wyboru trybu znajduje się pasek uruchomienia i budowania projektu, w którym zaczynając od góry dostępne są opcje:

wybór aktywnego projektu

budowanie i uruchomienie aplikacji

budowanie i uruchomienie aplikacji w trybie debugowania

budowanie aplikacji bez uruchamiania

Rysunek :Pasek uruchomienia i budowania projektu

(17)

Prosta aplikacja konsolowa

W trybie widoku powitalnego należy wybrać sekcję Projekty, a następnie wybrać Nowy projekt.

W oknie tworzenia projektu wybieramy Projekt nieużywający Qt (oznacza to nieużywanie biblioteki Qt, a tylko samego środowiska Qt Creator) i dalej Zwykły projekt C++.

(18)

Prosta aplikacja konsolowa

Następnie należy nadać projektowi nazwę (bez spacji i polskich znaków) i wybrać katalog projektów (Utwórz w:), w którym utworzony zostanie katalog dla naszego projektu.

Najlepiej dla danego projektu tworzyć oddzielny katalog. Inaczej łatwo można wprowadzić bałagan do projektowanej aplikacji.

Uwaga

Nie tylko nazwa projektu, ale i cała ścieżka dostępu do katalogu z projektem, nie mogą zawierać polskich znaków. W przeciwnym wypadku debugger dostarczony z MinGW może nie działać poprawnie.

(19)

Prosta aplikacja konsolowa

W następnym kroku utworzone zostaną dwa katalogi, osobno dla wersji release i debug. Wersja release jest to końcowa wersja programu skompilowana z optymalizacją rozmiaru pliku wyjściowego i prędkości działania, którą dostarczamy użytkownikowi programu.

Natomiast program skompilowany w wersji debug zawiera

dodatkowe informacje umożliwiające programiście śledzenie działania programu w celu usunięcia błędów (tzw. debugowanie).

Pozostawiamy tutaj ustawienia domyślne.

(20)

Prosta aplikacja konsolowa

Dalej jest już ostatni krok tworzenia projektu: jako podsumowanie na ekranie pojawi się ścieżka do utworzonego katalogu zawierającego pliki projektu oraz nazwy domyślnie utworzonych plików: pliku main.cpp z kodem źródłowym oraz pliku z rozszerzeniem .pro zawierającego podstawowe informacje o projekcie (lista plików źródłowych oraz używanych bibliotek). Utworzony katalog będzie zawierał też plik z rozszerzeniem .user zawierający ustawienia projektu specyficzne dla konkretnego komputera (m.in. ścieżki do katalogów). Nas interesować będzie wyłącznie plik main.cpp.

(21)

Prosta aplikacja konsolowa

Po utworzeniu projektu interfejs zostanie automatycznie przełączony w tryb edycji. W trybie tym dostępne są dwa najważniejsze okna:

Projekty zawierające listę otwartych projektów okno edycji kodu źródłowego.

Dodatkowo mogą pojawić się okna:

Otwarte dokumenty z listą otwartych plików, okno komunikatów środowiska.

(22)

Prosta aplikacja konsolowa

(23)

Prosta aplikacja konsolowa

W oknie edycji kodu źródłowego ukazuje się standardowa zawartość pliku main.cpp z prostym programem wypisującym na konsoli napis „Hello World!”. Kod ten zastępujemy naszym własnym programem,

wykorzystując gotowy szkielet.

ZADANIE: napisać program, który poprosi użytkownika o wprowadzenie liczby całkowitej, a następnie wyświetli ją na konsoli.

#include <iostream>

using namespace std;

int main() {

int a;

cout << "Podaj liczbe: " << endl;

cin >> a;

cout << "Podana liczba to: " << a << endl return 0;

}

(24)

Prosta aplikacja konsolowa - debugowanie

Uruchomienie aktywnego projektu odbywa się za pomocą przycisku z zieloną strzałką Oznacza to, że projekt budowany jest w wersji debug (co oznacza, że może być potem uruchomiony w trybie debug ), ale

uruchamiany jest w „zwykłym” trybie release.

Pisząc kod łatwo popełnić błąd składniowy lub literówkę, która uniemożliwi poprawną kompilację programu. W takim przypadku kompilator zwróci informację o błędzie

W przykładzie zabrakło średnika na końcu wiersza numer 10, dlatego pojawił się komunikat expected ’;’ before ’return’. W języku C++ średnik musi pojawić się po każdej instrukcji, ale niekoniecznie w tym samym wierszu, dlatego błąd wystąpił dopiero w wierszu 12.

(25)

Prosta aplikacja konsolowa - debugowanie

Uruchomienie aktywnego projektu odbywa się za pomocą przycisku z zieloną strzałką Oznacza to, że projekt budowany jest w wersji debug (co oznacza, że może być potem uruchomiony w trybie debug ), ale

uruchamiany jest w „zwykłym” trybie release.

Pisząc kod łatwo popełnić błąd składniowy lub literówkę, która uniemożliwi poprawną kompilację programu. W takim przypadku kompilator zwróci informację o błędzie

W przykładzie zabrakło średnika na końcu wiersza numer 10, dlatego pojawił się komunikat expected ’;’ before ’return’. W języku C++ średnik musi pojawić się po każdej instrukcji, ale niekoniecznie w tym samym wierszu, dlatego błąd wystąpił dopiero w wierszu 12.

(26)

Prosta aplikacja konsolowa - debugowanie

Rysunek :Aplikacja konsolowa z informacjami o błędzie zwróconymi przez kompilator

(27)

Prosta aplikacja konsolowa - debugowanie

Oprócz błędów, które przerywają kompilację, mogą pojawić się również ostrzeżenia. Dobrze napisany program powinien kompilować się bez ostrzeżeń.

W przypadku wystąpienia krytycznego błędu w trakcie działania

programu zostaniemy o tym poinformowani odpowiednim komunikatem.

Jeżeli uruchomiliśmy program w zwykłym trybie (release) to pozostaje nam zamknięcie programu i okna konsoli.

(28)

Prosta aplikacja konsolowa - debugowanie

Nawet jeżeli kod źródłowy kompiluje się poprawnie i uruchamia bez błędów wykonania, to może zawierać błąd logiczny, który sprawi, że program nie działa tak jak chcemy. Do wyszukiwania błędów tego typu służy narzędzie zwane debuggerem, które umożliwia prześledzenie działania programu linia po linii, lub zatrzymanie w konkretnym miejscu (zaznaczonym jako tzw. breakpoint).

Punkt przerwania nazywany breakpoint ustawiamy klikając z lewej strony numeru linii, w której chcemy zatrzymać wykonanie programu.

Uruchomienie aplikacji w trybie debug odbywa się za pomocą klawisza F5 lub przycisk (rys).

Rysunek :Ustawienie punktu przerwania

(29)

Prosta aplikacja konsolowa - debugowanie

Interfejs zostanie automatycznie przełączony w tryb debugowania.

Wykonanie programu zostało zatrzymane w linii z breakpointem (żółta strzałka). W oknie po prawej stronie wypisane są zmienne dostępne w danej funkcji oraz ich wartości.

Rysunek :Interfejs Qt w trybie debugowania

(30)

Prosta aplikacja konsolowa - debugowanie

W trakcie debugowania przydatne są przyciski z panelu, który pojawił się w widoku debugowania poniżej kodu źródłowego.

Zaczynając od lewej strony przyciski to:

- kontynuacja (uruchomienie) debugowania F5 - zatrzymanie debugowania

- przejście do kolejnej linii F10 - wejście do wnętrza funkcji F11 - wyjście z aktualnej funkcji Shift+F11

(31)

Prosta aplikacja konsolowa - debugowanie

Jeżeli program uruchomiliśmy w trybie debug, to komunikat o błędzie jest bardziej szczegółowy, a miejsce, w którym działanie programu zostało przerwane, wskazane jest za pomocą żółtej strzałki.

Rysunek :Interfejs Qt w trybie debug i wyświetlonymi informacjami o błędzie

Cytaty

Powiązane dokumenty

Schemat blokowy zarówno pojedynczego elementu jak i układu złożonego jest formą matematycznego opisu jego działania – jednoznacznie wyraża zależność sygnałów wyjściowych

Schemat blokowy zarówno pojedynczego elementu jak i układu złożonego jest formą matematycznego opisu jego działania – jednoznacznie wyraża zależność sygnałów wyjściowych

dr inż. Jakub Możaryn Podstawy Automatyki.. Od wielkości tych strumieni i od ich parametrów zależeć będzie pożądany przebieg wielkości regulowanych... dr inż. Jakub

Takie układy przekaźnikowe nazywają się układami mostkowymi albo układami klasy H. Przykładem układu mostkowego

Do tworzenia algebraicznego zapisu dowolnie złożonych funkcji logicznych niezbędny jest odpowiedni zestaw elementarnych operacji logicznych, tzw. system

Do realizacji dowolnie złożonych układów logicznych niezbędny jest zestaw elementów realizujących funkcje logiczne tworzące system funkcjonalnie pełny... Układy z

Zakaz korzystania ze wzbudzenia 11 jest korzystny także z tego względu, że tablica przejść dla wszystkich rodzajów przerzutników wz staje się jednakowa... Wykład 15 -

Układy ekstremalne - układy regulacji, których zadaniem jest utrzymywanie wielkości wyjściowej obiektu regulacji na wartości ekstremalnej (minimum lub maksimum). Przykład: