RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok
|
|
- Sabina Orłowska
- 6 lat temu
- Przeglądów:
Transkrypt
1 RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok STRESZCZENIE: Dokument przestawia podstawową funkcjonalność narzędzia IBM Rational Purify. Omawia problem analizy czasu wykonania oraz przedstawia możliwości prezentowanego narzędzia. Prezentuje także użycie Rational Purify przy pracy z kodem napisany w C++ i JAVA oraz z kodem zarządzanym platformy.net. Porusza także wewnętrzną zasadę działania przedstawianego oprogramowania. 1. WPROWDZENIE Rational Purify jest narzędziem wspomagającym proces tworzenia oprogramowania. Pozwala na wczesne i łatwe wykrywanie błędów kompilacji oraz "wycieków pamięci" (ang. memory leaks). Pozwala to na odpowiednio wczesne wykrycie nieporządnych błędów w oprogramowaniu, co pozwala na szybszą oraz bardziej niezawodną pracę zespołów programistycznych. Błędy kompilacji i "wycieki pamięci" są jednymi z najbardziej trudnych błędów do wykrycia. Skutki jakie mogą powodować są trudne do przewidzenia. Poza tym nie zawsze musimy na nie trafić podczas każdego uruchomienia aplikacji. Bardzo często pozostają nieodkryte przez długi czas działa oprogramowania. Dlatego też bardzo ważnym elementem podczas tworzenia aplikacji jest korzystanie z narzędzi wspomagających proces detekcji błędów, szczególnie błędów wykonania (ang., runtime analysis). Rational Purify umożliwia między innymi: szybkie i wszechstronne wyszukiwanie błędów czasu wykonania detekcje błędów bez posiadania kodu źródłowego wraz z użyciem narzędzia IBM Rational PureCoverage określenie miejsc w kodzie, które nie zostały przetestowane 2. BŁĘDY WYKRYWANE PRZEZ RATIONAL PURIFY Rational Purify pozwala wykryć między innymi następujące błędy: Array Bounds Read ABR czytanie z pamięci spoza zakresu tablicy Array Bounds Write ABW pisanie do pamięci spoza zakresu tablicy Beyond Stack Read BSR czytanie powyżej bieżącego wskaźnika stosu Beyond Stack Write BSW pisanie powyżej bieżącego wskaźnika stosu Freeing Freed Memory FFM próba dealokacji już wcześniej zwolnionej pamięci Freeing Invalid Memory FIM próba dealokacji pamięci, której użytkownik nie może zwalniać, np pamięć zarezerwowana na kodu programu Free Memory Read FMR czytanie z pamięci, która została zwolniona Free Memory Write FMW pisanie do pamięci, która została zwolniona
2 czytanie z nieprawidłowej pamięci, np. z pamięć Invalid Pointer Read IPR nieistniejącej w pamięci adresowej, pamięci z pierwszych 64K pamięci adresowej pisanie do nieprawidłowej pamięci, np. do Invalid Pointer Write IPW pamięć nieistniejącej w pamięci adresowej, pamięci z pierwszych 64K pamięci adresowej Memory Allocation Failure MAF Niepowodzenie alokacji pamięci Memory Leak MLK "wycieki pamięci" Null Pointer Read NPR czytanie z pamięci o adresie 0 Null Pointer Write NPW pisanie do pamięci o adresie 0 Uninitialized Memory Read UMR czytanie z niezainicjowanej pamięci Uninitialized Memory Copy UMC kopiowanie niezainicjowanej pamięci Handle In Use HIU niezwolnienie zasobów związanych z uchwytem W poniższym kodzie zostały pokazane przykładowe przyczyny wyżej wymienionych błędów: (UWAGA!!! Prostota błędów w poniższym kodzie wynika z ich dydaktycznego przeznaczenia.) //made by Krzysztof Jurczuk //rationalbugsexample.cpp : Defines the entry point for the console application. #include "stdafx.h" #include <iostream> using namespace std; class CTest{ private: int* pointer; public: int* beyonstack(){ int i; return &i; } }; int getpointer(){ return *pointer; } int main(int argc, char* argv[]){ ///////////////////////////////////////////////////////////// CTest test; int* i = test.beyonstack(); cout << *i; //BSR *i = 4; //BSW ///////////////////////////////////////////////////////////// const int MAX = 10; int* table1 = new int[ MAX ]; int* table2 = new int[ MAX ]; for( int k = 0; k <= MAX; k++ ) table1[ k ] = table2[ k ]; //ABW, ABR
3 ///////////////////////////////////////////////////////////// int* j = new int(); delete j; delete j; //FFM cout << *j; //FMR *j = 4; //FMW j = NULL; cout << *j; *j = 4; //NPR, EXU } return 0; UWAGA!!! Wykonywanie powyższego kodu może powodować nieprzewidziane skutki. Wynik uzyskany po wykonaniu wypowyższego kodu przy użyciu Rational Purify:
4 3. PODSTAWY OBSŁUGI Rational Putify może zostać zintegrowany z wieloma środowiskami. Wersja 6.0 automatycznie integruje się z MS Visual 6.0, natomiast wersja 7.0 z MS Visual.NET. Każda z nich posiada możliwość zintegrowania z Eclipsem poprzez dołączone pluginy. Co więcej aplikacje w wersji skompilowanej mogą zostać sprawdzone poprzez ich uruchomienie w Rational Purify, który nie jest zintegrowany z żadnym środowiskiem (tzw. z ang. standalone application). Taki proces uruchomienia jest identyczny jak przy omówionej poniżej obsłudze JAVY (patrz punkt 3b) a) MS Visual C/C++ Przed uruchomieniem aplikacji należy powiadomić zintegrowany Rational Purify o konieczności zbierania informacji o poprawności kodu poprzez wybranie opcji Engaged Purify, z menu Purify lub odpowiedniego toolbaru: Zapewnia do dołączenie podczas kompilacji odpowiednich danych pozwalających na zbieranie potrzebnych informacji podczas wykonania: Po wykonaniu aplikacji zostaje przedstawiony raport z ewentualnymi błędami:
5 Wszystkie informacje w raportach są umieszczane w postaci drzewa, w którym wraz z większym zagłębieniem znajdziemy coraz więcej szczegółowych informacji na temat wybranego błędu: Umożliwia to także oglądanie kodu, który jest powodem danego błędu oraz bezpośrednie przeniesienie się do kodu źródłowego poprzez dwukrotne kliknięcie.
6 Jeśli chcemy wyfiltrować pewne rodzaje błędów możemy użyć tzw. "filtrów szybkich" poprzez wybór, z menu podręcznego lub z menu głównego, opcji "Quick Filter": Umożliwia to pozostawienie najważniejszych błędów przy braku czasu na analizę wszystkich. Możemy także stworzyć własne filtry poprzez opcje "Create Filter". Istnieje także możliwość porównania raportów z kolejnych wykonań programu przy użyciu opcji: "Run Controls ->Compare Runs". Uzyskane wyniki mogą zostać zapisane dla późniejszej analizy, czy też tworzenia raportów błędów tworzonego oprogramowania. Można także poddawać analizie aplikacje skompilowane (patrz. punkt 3b). Prezentowana aplikacja może być także używana podczas debugowania, wystarczy wybrać opcję "Settings->Break on Error". Gdy testujemy oprogramowanie wielomodułowe (np. wiele plików *.dll), można wyeliminować wybrane moduły ("Settings->Executable Settings" zakładka "Power Check" i opcja All modules configures).
7 b) JAVA Sytuacja przy programowaniu w języku JAVA wydaje się być o wiele prostsza ze względu na to, iż w większości przypadków nie musimy martwić się o błędy związane z pamięcią, ponieważ jej zwalnianiem zajmuje się Garbage Collector. Jednak bardzo często nie tylko początkujący programiści potrafią nieświadomie zapominać o powiadomieniu, że pewnie zasoby pamięciowe mogą być zwolnione. Niepotrzebna pamięć zabiera nam zasoby systemowe ograniczając tym samym pulę dostępnej, wolnej pamięci. Dlatego też Rational Purify pozwalana prześledzić jakie porcje pamięci są alokowane przed konkretne elementy w aplikacji. Ułatwia to znalezienie miejsc, które rezerwują zbyt dużo pamięci oraz miejsc, które zbyt długo przetrzymują niewykorzystywaną, ale nadal zarezerwowaną pamięć. Pozwala to zoptymalizować działanie tworzonego produktu, czyniąc go tym samym mniej "pamięcio-żernym". Podstawowymi błędami popełnianymi przez programistów JAVA, które są powodem niezwalniania już niepotrzebnej pamięci są: dodawanie obiektów do tablicy i pozostawienie ich tam, gdy są już nam niepotrzebne przy dalszym używaniu innych elementów tablicy (analogicznie jeśli chodzi o struktury dynamiczne jak Vector, czy też List) przetrzymywanie referencji w długo trwających wątkach, podstawienie pod nie NULL nie pomoże, zostaną dopiero zwolnione w momencie zakończenia wątku Aplikacje napisane w języku JAVA można testować na wiele sposobów, chociażby poprzez zintegrowanie posiadanego środowiska z Rational Purify lub też niezależnie od platformy programistycznej używając samego IBM Rational Purify (tzw. z ang. standalone application). Taki też sposób został przestawiony poniżej. W oknie powitalnym wybieramy opcję "Run". Następnie wybieramy do analizy plik *.jar z naszą aplikacją lub też plik *.class, który zawiera klasę z funkcją uruchomieniową (mimo iż na poniższym rysunku nazwa programu znajduje się w drugim polu należy ją podać w pierwszym, dalej już Rational Purify ustawi sam parametry wywołania tak jak jest to widoczne poniżej):
8 Po uruchomieniu aplikacji pojawi się nam analizator wykonania, na którym jest przedstawiony stan pamięci. Czerwone kropki oznaczają miejsca, w których działał Gargabe Collector. Na osi poziomej jest umieszczony czas, natomiast na osi pionowej stan pamięci. Standardowy proces analizy wygląda następująco: po uruchomieniu aplikacji czekamy, aż użycie pamięci ustabilizuje się wykonujemy zrzut stanu pamięci przy użyciu opcji "Snapshot memory profiling data" z toolbaru następnie wykonujemy aplikację z użyciem opcji, którą podejrzewany o nieprawidłowe zarządzanie wykorzystywaną pamięcią, następnie wracamy do stanu wyjściowego i znów wykonujemy zrzut stanu pamięci jeśli różnica zajętości pamięci jest znaczna (mimo wywołania działania Garbage Collector'a, poprzez opcję "Gargabe collect" z toolbaru ) może to świadczyć o nieprawidłowej obsłudze pamięci i stanowi to podstawę do analizy kodu odpowiedzialnego za sprawdzaną funkcjonalność
9 Można także porównać zrobione zrzuty stanu pamięci. Wystarczy zaznaczyć jeden z nich i użyć opcji "Compare runs" z toolbaru. Jeśli istnieje możliwość wybieramy jeden z poprzednich zrzutów. Jako wynik zobaczymy graf porównania wykonań: Zielone ścieżki oznaczają polepszenie stanu pamięci, natomiast czerwone większą zajętość pamięci. Więcej informacji można także uzyskać poprzez umieszczenie myszki nad elementami w grafie wywołań. W zakładce "Function List View" znajdziemy porównania wykonań konkretnych funkcji: Istnieje też możliwość uzyskania większej ilości informacji na temat danej funkcji poprzez dwukrotne kliknięcie na jej nazwie. Podobnie jak przy testowaniu aplikacji w niezarządzanym C/C++ możemy tworzyć filtry poprzez opcję "Filter Manager" z menu podręcznego. Uzyskane dane można zapisać np. w celu tworzenia raportów.
10 c) MS Visual.NET (managed code) Faza testowania aplikacji napisanej w kodzie zarządzanym platformy.net wyglądanie identycznie jak przy kodzie w języku JAVA (patrz punkt 3b). Natomiast proces uruchomienia identycznie jak przy kodzie niezarządzanym C/C++ (patrz punkt 3a). 4. WEWNĘTRZNA ZASADA DZIAŁANIA RATIONAL PURIFY Purify monitoruje wszystkie operacje związane z pamięcią w testowanej aplikacji i sprawdza czy są poprawne. Zapamiętuje informacje na temat pamięci: niezaalkowanej zaalokowanej niezainicjalizowanej zaalkowanej zainicjalizowanej zwolnionej. Służy do tego tablica, w której śledzony jest każdy bajt pamięci. Na każdy bajt w tablicy są przeznaczone 2 bity. Pierwszy mówi, czy pamięć jest zaalkowana, natomiast drugi czy jest zainicjalizowana. Pozwala to na zapamiętanie maksymalnie 4 stanów: czerwonego, żółtego, zielonego oraz niebieskiego: Red Memory Blue Memory illegal to write, read and free malloc free free Yellow Memory allocated but uninitilized write Green Memory allocated and uninitilized legal to write or free but illegal to read legal to write and read and free but only for free IBM Rational Purify przy każdej operacji związanej z pamięcią, sprawdza czy dana operacja jest dozwolona. Jeżeli zauważa nieprawidłową operacje dodaje błąd do raportu. Pamięć żółta - pamięć otrzymywana po wykonaniu malloc lub new ; jest to pamięć zaalokowana, ale niezainicjowana, zatem nie możemy na niej wykonywać operacji czytania Pamięć zielona - pamięć zaalkowana oraz zainicjalizowana
11 Pamięć czerwona pamięć zwolniona, z której nie możemy korzystać do momentu następnej alokacji Pamięć niebieska pamięć zwolniona, która wcześniej była zaalkowana oraz zainicjalizowana, ale już w tym momencie nie można z niej korzystać, do momentu kolejnej alokacji. IBM Rational Purify oprócz błędów związanych z pamięcią dynamiczną, potrafi wykrywać niepoprawne instrukcje na zmiennych globalnych oraz statycznych. Wykonuje to poprzez umieszczenie stref czerwonych (czyli pamięci o kolorze czerwonym) wokół pamięci przydzielonej dla danych zmiennych. Nie zapewnia to zawsze wykrycia błędów, ale na pewno pozwala na wykrycie korzystania z pamięci niezainicjalizowanej lub niezaalkowanej.
Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).
Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154
ZASADY PROGRAMOWANIA KOMPUTERÓW
POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.
NETBEANS PROFILER TOMASZ ŁUKASZUK
NETBEANS PROFILER TOMASZ ŁUKASZUK STRESZCZENIE: Dokument zawiera podstawowe informacje dotyczące programu NetBeans Profiler. Stanowi uproszczoną instrukcję jego używania. Dotyczy NetBeans Profiler w wersji
CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE
CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE O CZYM PREZENTACJA? Code::Blocks Informacje wstępne Skąd ściągnąć? Jak zainstalować? (wersja linuksowa) Rzut okiem na panel główny Tworzenie naszego pierwszego
Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; 2. Utworzyć dodatkową funkcję, która przelicza F na K, na bazie poprzedniej F to C (z poprzednich zajęć), wg
MS Visual Studio 2005 Team Suite - Performance Tool
MS Visual Studio 2005 Team Suite - Performance Tool przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady
Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to
Języki i techniki programowania Ćwiczenia 2
Języki i techniki programowania Ćwiczenia 2 Autor: Marcin Orchel Spis treści: Język C++... 5 Przekazywanie parametrów do funkcji... 5 Przekazywanie parametrów w Javie.... 5 Przekazywanie parametrów w c++...
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania
Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania Krzysztof Kluza, Janusz Miller 1 Debugowanie Debugowanie, czy też po polsku odpluskiwanie, to proces polegający na kontrolowanym wykonaniu programu
Podstawy programowania komputerów
Podstawy programowania komputerów Wykład 10: Sterowanie pamięcią w C Pamięć na stosie!każdy program napisany w języku C ma dostęp do dwóch obszarów pamięci - stosu i sterty, w których może być przechowywana
2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...
KORZYSTANIE Z KONTROLKI.NET LENDEVICERS232 DODAWANIE KONTROLKI DO ZBIORU KOMPONENTÓW DOSTĘPNYCH W PALECIE TOOLBOX (ŚRODOWISKA PROGRAMISTYCZNE FIRMY MICROSOFT) W środowisku programistycznym (Visual C++,
Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski
Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w
// Potrzebne do memset oraz memcpy, czyli kopiowania bloków
ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using
Programowanie Systemów Czasu Rzeczywistego
Programowanie Systemów Czasu Rzeczywistego Laboratorium Wprowadzenie Mariusz RUDNICKI mariusz.rudnicki@eti.pg.gda.pl 2016 Spis treści Przygotowanie platform docelowej.... 3 Przygotowanie środowiska programistycznego
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.
Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,
#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;
// W8_3.cpp : Defines the entry point for the console application. // Przeciazenie operatorow new, delete // Przeciazenie globalne: przeciazone operatory new, delete // dzialaja dla danych dowolnych //
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
Adam Kotynia, Łukasz Kowalczyk
Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)
PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec
PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych
GNU GProf i GCov. przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok
GNU GProf i GCov przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok Streszczenie: Dokument zawiera podstawowe informacje
Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119
Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.
Testowanie I Cel zajęć Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego. Testowanie oprogramowania Testowanie to proces słyżący do oceny
Niech wynik od 0 do 200F wyświetla w trzech kolumnach: F = (wartość) C = (wyliczona wartość) K = (wyliczona wartość)
Lab 3 - Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Zadanie 1 - Wykorzystaj program z poprzednich zajęć (program z funkcją przeliczającą Fahrenheity na Celsjusze). Niech program operuje na
Jak Windows zarządza pamięcią?
Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację
Tworzenie oprogramowania
Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1 Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne
Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe
Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie
Załącznik 1 instrukcje instalacji
Załącznik 1 instrukcje instalacji W poniższym załączniku przedstawione zostaną instrukcje instalacji programów wykorzystanych w trakcie tworzenia aplikacji. Poniższa lista przedstawia spis zamieszczonych
Wskaźniki. Informatyka
Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą
DYNAMICZNE PRZYDZIELANIE PAMIECI
DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne
C++ - [1-3] Debugowanie w Qt Creator
Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)
Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja
Dokumentacja programu Zoz Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ Wersja 1.40.0.0 Zielona Góra 2012-02-29 Wstęp Nowelizacja Rozporządzenia Ministra Zdrowia z
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI
JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI Gdy wywołujesz daną funkcję, program przechodzi do tej funkcji, przekazywane są parametry i następuje wykonanie ciała funkcji. Gdy funkcja zakończy działanie, zwracana
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.
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
Wykład 1: Wskaźniki i zmienne dynamiczne
Programowanie obiektowe Wykład 1: Wskaźniki i zmienne dynamiczne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Podstawy programowania w C++ Wskaźniki 2 dr Artur Bartoszewski - Programowanie
Programowanie niskopoziomowe
W. Complak, J.Kniat, M. Antczak, K. Kwarciak, G. Palik, A. Rybarczyk, Ł. Wielebski Materiały Programowanie niskopoziomowe http://www.cs.put.poznan.pl/arybarczyk/c_w_0.pdf Spis treści 1. Instalacja środowiska
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
it = 0; memset((void *)ptr, 0, items*sizeof(double)); cout << "Konstruktor sparametryzowany " << title << " adres: " << ptr << "\n";
// W7.cpp : Defines the en point for the console application. // Konstruktor kopiujacy. Funkcje zwraca obiekt klasy. // Przeciazenie operatora przypisania 1 #include "stdafx.h" #include #include
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl
Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z
Programowanie obiektowe
Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu
CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu inż. Daniel Solarz Wydział Fizyki i Informatyki Stosowanej AGH 1. Cel projektu. Celem projektu było napisanie wtyczki
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula
Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne
JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Wprowadzenie do środowiska Qt Creator
1.Instalacja środowiska Qt Creator Qt Creator jest wygodnym środowiskiem programistycznym przeznaczonym do tworzenia projektów, czyli aplikacji zarówno konsolowych, jak i okienkowych z wykorzystaniem biblioteki
Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).
Testowanie II Cel zajęć Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage). Pokrycie kodu testami Jak już była mowa na poprzednich
Jak napisać listę jednokierunkową?
Lista jednokierunkowa jest strukturą o dynamicznie zmieniającej się wielkości. Listę można opisać jako uszeregowany zbiór elementów. Każdy element zawiera jakieś dane oraz wskazuje na swojego następcę.
C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:
Prawa dostępu do składowych klasy PRAWA PRZYJACIÓŁ KLASY 91 Dostęp z zewnątrz: double limit; ; water_temp T; T.limit = 100; Dostęp z wewnątrz: double set_temp(double nt) { if (nt0) ; water_temp
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++
Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Instrukcja dotycząca konwersji dokumentów LaTeX do plików w formacie RTF
Instrukcja dotycząca konwersji dokumentów LaTeX do plików w formacie RTF 1. Wstęp Treści zawarte w tym dokumencie mogą być przydatne w przypadku konieczności dokonania konwersji dokumentów tworzonych z
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Tworzenie i wykorzystanie usług sieciowych
Ćwiczenie 14 Temat: Tworzenie i wykorzystanie usług sieciowych Cel ćwiczenia: W trakcie ćwiczenia student zapozna się z procedurą tworzenia usługi sieciowej w technologii ASP.NET oraz nauczy się tworzyć
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.
ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone
Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-08 Klasy mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 17.04.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00 C2/111a Konspekt 1 Struktura a
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje
Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje Git w wersji przenośnej umożliwia korzystanie z repozytoriów na każdym systemie z rodziny Windows, który nie posiada zainstalowanego
Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:
Laboratorium nr 9 Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium: wskaźniki referencje zastosowanie wskaźników wobec tablic dynamiczny przydział pamięci,
Wprowadzenie do Valgrinda
Wprowadzenie do Valgrinda Jan Karwowski Wydział Matematyki i Nauk Informacyjnych PW 10 lutego 2015 Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego 2015 1 / 33 Valgrind Valgrind jest narzędziem
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Programowanie obiektowe W3
Programowanie obiektowe W3 Przegląd typów strukturalnych w C++ : tablice statyczne i dynamiczne Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Typy złożone: tablice
Utworzenie pliku. Dowiesz się:
Dowiesz się: 1. Jak rozpocząć pisanie programu 2. Jak wygląda szkielet programu, co to są biblioteki i funkcja main() 3. Jak wyświetlić ciąg znaków w programie 4. Jak uruchamiać (kompilować) napisany program
Przewodnik użytkownika (instrukcja) AutoMagicTest
Przewodnik użytkownika (instrukcja) AutoMagicTest 0.1.21.137 1. Wprowadzenie Aplikacja AutoMagicTest to aplikacja wspierająca testerów w testowaniu i kontrolowaniu jakości stron poprzez ich analizę. Aplikacja
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
1 Wskaźniki. 1.1 Główne zastosowania wskaźników
1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować
Wstęp do programowania. Wykład 1
Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Programowanie w Javie
Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student
- - Ocena wykonaniu zad3. Brak zad3
Indeks Zad1 Zad2 Zad3 Zad4 Zad Ocena 20986 218129 ocena 4 Zadanie składa się z Cw3_2_a oraz Cw3_2_b Brak opcjonalnego wywołania operacji na tablicy. Brak pętli Ocena 2 Brak zad3 Ocena wykonaniu zad3 po
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008.
Dwiczenie 5. TEMAT: CEL: Tworzenie projektu asemblerowego dla środowiska Visual Studio 2008. Celem dwiczenia jest poznanie możliwości VS 2008 w zakresie tworzenia i uruchamiania aplikacji z kodem mieszanym
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH
MATERIAŁY - udostępnianie materiałów dydaktycznych w sieci SGH SPIS TREŚCI i EKRANÓW WSTĘP Ekran1: Wstęp. Logowanie Ekran2: Strona początkowa UDOSTEPNIONE MATERIAŁY Ekran3: Dostępne materiały Ekran4: Zawartość
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,
Korutyny Wykład13,str1 tak działa podprogram: PROGRAM GŁÓWNY wywołanie PODPROGRAM tak działają korutyny: KORUTYNA A resume B resume B KORUTYNA B resume A Korutyny Wykład13,str2 Korutyny mają zwykle więcej
Podstawy programowania obiektowego
Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie
Zadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Polityka bezpieczeństwa.
Polityka bezpieczeństwa. Cookies Polityka dotycząca Ciasteczek Niniejsza Polityka dotycząca Ciasteczek odnosi się do wszystkich stron internetowych oraz aplikacji na urządzenia mobilne, odwiedzających
Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz
Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie