Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Podobne dokumenty
Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

Niech wynik od 0 do 200F wyświetla w trzech kolumnach: F = (wartość) C = (wyliczona wartość) K = (wyliczona wartość)

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

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

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

Instrukcja instalacji winbgim

Informatyka I : Tworzenie projektu

Programowanie w Javie

Programowanie Systemów Wbudowanych

Programowanie niskopoziomowe

Programowanie Systemów Czasu Rzeczywistego

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

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

WPROWADZENIE DO INFORMATYKI

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

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie proceduralne w języku C++ Podstawy

Visual Basic Debugging and Error Handling

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

C++ - [1-3] Debugowanie w Qt Creator

Utworzenie pliku. Dowiesz się:

Wstęp do programowania

Maxima i Visual Basic w Excelu

Java jako język programowania

MentorGraphics ModelSim

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Wprowadzenie do biblioteki klas C++

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

1.Wstęp. 2.Generowanie systemu w EDK

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

Tworzenie oprogramowania

Wprowadzenie do środowiska Qt Creator

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

KONFIGURACJA NOWEGO PROJEKTU W CODE COMPOSER STUDIO

SFML. (Simple and Fast Multimedia Library)

Programowanie obiektowe zastosowanie języka Java SE

Instrukcja pomocnicza

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

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

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

PRACA W ZINTEGROWANYM ŚRODOWISKU URUCHOMIENIOWYM - IDE Keil μvision 2

dr inż. Damian Słota Gliwice r. Instytut Matematyki Politechnika Śląska

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Instalacja i opis podstawowych funkcji programu Dev-C++

Konfiguracja pakietu CrossStudio for MSP

Języki i techniki programowania Ćwiczenia 2

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

Programowanie procesora Microblaze w środowisku SDK

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

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

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie obiektowe

By móc zainstalować plugin niezbędna jest uprzednia instalacja Notowań Online 3 oraz programu do analizy technicznej AmiBroker.

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

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

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

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

Wstęp do Programowania, laboratorium 02

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Programowanie komputerowe. Zajęcia 1

S P I S T R E Ś C I. Instrukcja obsługi

Microsoft Visual Studio: zintegrowane środowisko programistyczne (IDE), umożliwia tworzenie samodzielnych aplikacji, aplikacji sieciowych, usług

Wykaz zmian w programie WinAdmin Replikator

WYKORZYSTANIE PORTALU DYDAKTYCZNEGO W NAUCE JĘZYKÓW PROGRAMOWANIA

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

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

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

Laboratorium Procesorów Sygnałowych

Pobieranie edytora CodeLite

Cover sheet. WinCC (TIA Portal) FAQ Listopad 2012

WPROWADZENIE DO JĘZYKA JAVA

Informatyka I. dr inż. Andrzej Czerepicki.

Instalacja sieciowa Autodesk AutoCAD oraz wertykali

Podręcznik KBlocks. Mauricio Piacentini Polskie tłumaczenie: Krzysztof Woźniak

Opis programu Profbi Delegacje 2011 Delegacje Krajowe.

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Podstawy Programowania 2

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

1.Przygotowanie komputera do programowania 2. Instalacja Dev-C++

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

Programowanie współbieżne... (10) Andrzej Baran 2010/11

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

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

Electronic Infosystems

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

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Instalacja SAS 9.4 Foundation i SAS Enterprise Guide

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Transkrypt:

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 8 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Biblioteka GSL Na podstawie: https://www.gnu.org/software/gsl/doc/html/index.html

Biblioteka GSL Biblioteka GSL GNU Scientific Library to zbiór implementacji numerycznych metod obliczeniowych. Biblioteka została napisana w języku C, ale możliwe jest jej wywoływanie z języków wysokiego poziomu. Kod jest rozpowszechniany w oparciu o licencję GNU General Public License.

Biblioteka GSL Biblioteka GSL GNU Scientific Library udostępnia wiele struktur i funkcji pozwalających na wykonywanie obliczeń związanych między innymi z: liczbami zespolonymi, wielomianami, sortowaniem, algebrą liniową, liczbami losowymi, różniczkowaniem i całkowaniem numerycznym.

Biblioteka GSL Kod źródłowy biblioteki GSL jest ogólnodostępny (http://www.gnu.org/software/gsl/ ). Pliki skompilowane (dla systemu Windows) są dostępne na stronie: http://www.neff.co.at/2017/05/01/gsl-and- FGSL-for-CodeBlocks-16.01.html

Biblioteka GSL Konfiguracja Code::Blocks i GSL pobrany plik gsl-2.3.zip należy rozpakować na dysku, w środowisku Code::Blocks należy edytować ustawienia kompilatora (menu Settings -> Compiler ), w zakładce Linker settings należy dodać skompilowane pliki biblioteki (pliki *.a w katalogu lib), w zakładce Search directories należy dodać ścieżkę dostępu do katalogu include (zawierającego pliki nagłówkowe).

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL

Biblioteka GSL Pliki nagłówkowe napisano w taki sposób, aby możliwe było wywoływanie biblioteki GSL bezpośrednio z programów języka C++

Biblioteka GSL Przykładowy program

Biblioteka GSL Wyznaczenie pierwiastków wielomianu

Biblioteka GSL Wyznaczenie pierwiastków wielomianu

Biblioteka GSL Rozwiązywanie układu równań Ax = b

Biblioteka GSL Rozwiązywanie układu równań Ax = b

Biblioteka GSL Rozwiązywanie układu równań Ax = b

Biblioteka GSL Rozwiązywanie układu równań Ax = b

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych ogólna postać układu równań różniczkowych dy i dt t 1 f t, y t, y t dla i 1, n i n macierz Jacobiego J ij f t, y t i y j

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych Przykład równanie nieliniowego oscylatora Van der Pola 2 u '' t u ' t u t 1 u t 0 po podstawieniu v u ' t otrzymujemy układ równań u' v v ' u v 1 u 2

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych Program rozwiązuje zagadnienie początkowe: układ równań różniczkowych dla μ = 10 z warunkiem początkowym (u, v) = (1, 0) na zakresie zmiennej niezależnej t od 0 do 100. Program wyświetla rozwiązania wartości funkcji u oraz v dla t i = 1, 2, 100.

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych

Biblioteka GSL Rozwiązywanie równań różniczkowych zwyczajnych 2,50 2,00 1,50 1,00 0,50 0,00-0,50 0 20 40 60 80 100-1,00-1,50-2,00-2,50

Przykładowy projekt program oblicza odsetki od podanej kwoty przy zadanym oprocentowaniu rocznym przez ustaloną liczbę lat

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona Cel kompilacji Build >> Select target >> Debug

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona Cel kompilacji Build >> Select target >> Debug

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows Okno Watches pokazuje wartości zmiennych lokalnych i argumentów funkcji

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows Okno Watches pokazuje wartości zmiennych lokalnych i argumentów funkcji

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7)

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7)

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7) Po osiągnięciu linii 12 program oczekuje na podanie danych (funkcja scanf()) Podobnie w liniach 14 i 16 Wartości zmiennych możemy sprawdzić w oknie Watches

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7) Po osiągnięciu linii 12 program oczekuje na podanie danych (funkcja scanf()) Podobnie w liniach 14 i 16 Wartości zmiennych możemy sprawdzić w oknie Watches

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza Sterowanie w programie przejdzie do linii 25 (pierwsza instrukcja w wywołanej funkcji) Zmienne i oraz koncowy_mnoznik są niezainicjalizowane

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza Sterowanie w programie przejdzie do linii 25 (pierwsza instrukcja w wywołanej funkcji) Zmienne i oraz koncowy_mnoznik są niezainicjalizowane

Śledzenie działania programu Po przejściu do kolejnego wiersza (F7) widzimy, że zmienna i została zainicjalizowana, natomiast wartość zmiennej koncowy_mnoznik pozostała bez zmian

Śledzenie działania programu Po przejściu do kolejnego wiersza (F7) widzimy, że zmienna i została zainicjalizowana, natomiast wartość zmiennej koncowy_mnoznik pozostała bez zmian Znaleźliśmy błąd niezainicjalizowaną zmienną wykorzystując debugger

Śledzenie działania programu Po przejściu do kolejnego wiersza (F7) widzimy, że zmienna i została zainicjalizowana, natomiast wartość zmiennej koncowy_mnoznik pozostała bez zmian Znaleźliśmy błąd niezainicjalizowaną zmienną wykorzystując debugger

Debugowanie awarii

Debugowanie awarii

Debugowanie awarii Ten program nie działa kończy działanie w nieprawidłowy sposób Błędu można poszukiwać wykorzystując debugger Debugger zgłosi błąd segmentacji

Debugowanie awarii Debugger zatrzymał się w miejscu, w którym nastąpiła błędna instrukcja (linia 26)

Debugowanie awarii Debugger zatrzymał się w miejscu, w którym nastąpiła błędna instrukcja (linia 26) Wskaźnik n ma wartość 0xbaadf00d (bad food) jest to specjalna wartość używana podczas uruchamiania programów pod kontrolą debuggera do inicjalizowania pamięci

Debugowanie awarii Debugger zatrzymał się w miejscu, w którym nastąpiła błędna instrukcja (linia 26) Wskaźnik n ma wartość 0xbaadf00d (bad food) jest to specjalna wartość używana podczas uruchamiania programów pod kontrolą debuggera do inicjalizowania pamięci

Debugowanie awarii Prześledźmy stos wywołań (Call stack) Na dole widoczne jest wywołanie funkcji main(), które rozpoczęło program Następnie wywołano funkcję printlist() trzy razy, przy czym w ostatnim wywołaniu pojawiła się wartość 0xbaadf00d Znaleźliśmy błąd niezainicjalizowany wskaźnik

Debugowanie awarii

Debugowanie awarii Informacje z innych ramek stosu możemy uzyskać przełączając widok (Swich to this frame)

Debugowanie awarii Informacje z innych ramek stosu możemy uzyskać przełączając widok (Swich to this frame)

Zaglądanie do zawieszonego programu Jeśli program zatrzymał się z nieznanego powodu można wykorzystać debugger, aby włamać się do programu

Zaglądanie do zawieszonego programu

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3 Możemy zauważyć, że pętla w działaniu programu wynikała z użycia operatora przypisania w miejsce operatora porównania

Zaglądanie do zawieszonego programu

Podsumowanie Biblioteka GSL