Wprowadzenie do Valgrinda
|
|
- Alicja Michalak
- 6 lat temu
- Przeglądów:
Transkrypt
1 Wprowadzenie do Valgrinda Jan Karwowski Wydział Matematyki i Nauk Informacyjnych PW 10 lutego 2015 Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
2 Valgrind Valgrind jest narzędziem wspomagającym analizę programów, pod kątem potencjalnych błędów i problemów. Może być stosowany do programów w napisanych w C i C++. W rzeczywistości Valgrind nie jest pojedynczym narzędziem, ale zbiorem analizatorów, które można wywołać z użyciem pojedynczego programu valgrind Podstawowy sposób wywołania: $ valgrind --tool=<narzędzie> [opcje]./program [opcje] Gdzie: narzędzie nazwa narzędzia,./program program do przeanalizowania. Valgrind uruchomi podany program i wyświetli możliwe problemy. Dostępne w pakiecie narzędzia pozawalają na: Analizę alokacji, zwalniania, odczytu i zapisu do pamięci Profilowanie (analizę użycia procesora i pamięci) Analizę programów wielowątkowych Dalej omówione są możliwości dostarczane przez narzędzie memcheck. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
3 Problem 1: (nie)zwalnianie pamięci I Rozważmy następujący program: 1 #i n c l u d e < s t d l i b. h> 2 3 i n t main ( i n t argc, char argv ) { 4 i n t i ; 5 v o i d p t r ; 6 7 f o r ( i =0; i <20; i ++) { 8 p t r = m a l l o c (10 s i z e o f ( i n t ) ) ; 9 } f r e e ( p t r ) ; 12 r e t u r n 0 ; 13 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
4 Problem 1: (nie)zwalnianie pamięci II Program pozostawia 19 niezwolnionych bloków pamięci w momencie powrotu z funkcji main. Przykład 1 Kompilacja programu i uruchomienie Valgrinda $ gcc -O0 -ggdb leak1.c -o leak1 $ valgrind./leak1 Należy pamiętać aby skompilować program z symbolami debugowania. Memcheckjest Valgrinda, w związku z czym można pominąć opcję --tool Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
5 Problem 1: (nie)zwalnianie pamięci III Przykład 2 Możliwe wyjście ==215== Memcheck, a memory error detector ==215== Copyright (C) , and GNU GPL d, by Julian Seward et al. ==215== Using Valgrind and LibVEX; rerun with -h for copyright info ==215== Command:./problem1 ==215== ==215== ==215== HEAP SUMMARY: ==215== in use at exit: 760 bytes in 19 blocks ==215== total heap usage: 20 allocs, 1 frees, 800 bytes allocated ==215== ==215== LEAK SUMMARY: ==215== definitely lost: 760 bytes in 19 blocks ==215== indirectly lost: 0 bytes in 0 blocks ==215== possibly lost: 0 bytes in 0 blocks ==215== still reachable: 0 bytes in 0 blocks ==215== suppressed: 0 bytes in 0 blocks ==215== Rerun with --leak-check=full to see details of leaked memory ==215== ==215== For counts of detected and suppressed errors, rerun with: -v ==215== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
6 Problem 1: (nie)zwalnianie pamięci IV W powyższym wyjściu można zauważyć dwie ważne informacje: definitely lost: 760 bytes in 19 blocks Rerun with leak-check=full to see details of leaked memory Pierwsza informacja mówi, że nie zostało zwolnionych 19 bloków z malloc lub pochodnych. W sumie 760 bajtów. Druga informacja to sugestia uruchomienia narzędzia z opcją wykonującą dodatkową analizę. Po uruchomieniu z dodatkową opcją: $ valgrind --leak-check=full./leak1 Otrzymujemy wynik zawierający informacje o miejscu alokacji niezwolnionych bloków. ==216== 760 bytes in 19 blocks are definitely lost in loss record 1 ==216== at 0x4C28C20: malloc (vg_replace_malloc.c:296) ==216== by 0x400567: main (in/home/jan/git/unix/valgrind/leak1) Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
7 Problem 1: (nie)zwalnianie pamięci V Uwaga! W tym miejcu wykorzystana są informacje debugowe włączone w trakcie kompilacji. Ćwiczenie 1 Informacje dostępne bez symboli debugowych Jaka będzie różnica w wyjściu valgrinda, gdy program skompilujemy bez opcji -ggdb? Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
8 Wskaźniki globalne I Abstrahując od faktu, że stosowanie zmiennych globalnych jest złą praktyką, rozważmy program: 1 / problem6. c / 2 #i n c l u d e < s t d l i b. h> 3 4 v o i d b u f f 1 ; 5 6 i n t main ( i n t argc, char argv ) { 7 v o i d b u f f 2 ; 8 9 b u f f 1=m a l l o c ( ) ; 10 b u f f 2=m a l l o c ( ) ; r e t u r n 0 ; 13 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
9 Wskaźniki globalne II Przykład 3 Analiza programu $ valgrind --leak-check=full./leak2 LEAK SUMMARY: definitely lost: 1,024 bytes in 1 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 1,024 bytes in 1 blocks suppressed: 0 bytes in 0 blocks Reachable blocks (those to which a pointer was found) are not shown. To see them, rerun with: --leak-check=full --show-leak-kinds=all Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
10 Wskaźniki globalne III Bloki pamięci, do których istnieje wskaźnik po zakończeniu funkcji main, są domyślnie traktowane jako niestracone. Aby wydrukować szczegóły dotyczące tych bloków, należy użyć dodatkowej opcji Valgrinda. Ćwiczenie 2 Opcja --show-leak-kinds=all Uruchomić analizę ze sprawdzeniem wszystkich możliwych wycieków pamięci i porównać wyniki. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
11 Bloki pośrednio utracone I Prosty program implementujący listę: 1 / l i s t a. c / 2 #i n c l u d e < s t d l i b. h> 3 4 t y p e d e f s t r u c t node { 5 s t r u c t node next ; 6 i n t v a l u e ; 7 } node ; 8 9 node c r e a t e n o d e ( i n t value, node next ){ 10 node n = m a l l o c ( s i z e o f ( node ) ) ; 11 n >next=next ; 12 n >v a l u e=v a l u e ; 13 r e t u r n n ; 14 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
12 Bloki pośrednio utracone II i n t main ( i n t argc, char argv ){ 17 node head=c r e a t e n o d e ( 1, c r e a t e n o d e ( 2,NULL ) ) ; 18 head=null ; r e t u r n 0 ; 21 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
13 Bloki pośrednio utracone III Przykład 4 Utrata całych łańcuchów wskaźników $ valgrind --leak-check=full./lista HEAP SUMMARY: in use at exit: 32 bytes in 2 blocks total heap usage: 2 allocs, 0 frees, 32 bytes allocated 32 (16 direct, 16 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2 at 0x4C28C20: malloc (vg_replace_malloc.c:296) by 0x40051E: create_node (lista.c:10) by 0x400568: main (lista.c:17) LEAK SUMMARY: definitely lost: 16 bytes in 1 blocks indirectly lost: 16 bytes in 1 blocks possibly lost: 0 bytes in 0 blocks still reachable: 0 bytes in 0 blocks suppressed: 0 bytes in 0 blocks Valgrind informuje, że do pewnych bloków pamięci istnieją wskaźniki, ale te wskaźniki znajdują się w obszarach pamięci, które zostały utracone. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
14 Bloki pośrednio utracone IV NB Na systemie 64-bitowym, gdzie sizeof(int)=4 i sizeof(void*)=16 rozmiar struktury node wyniósł 16 bajtów. Dlaczego? Ćwiczenie 3 Pośrednia utrata pamięci Napisać program w którym nastąpi pośrednia utrata fragmentu pamięci. Kod alokujący blok pośrednio utracony ma się znaleźć w innym miejscu programu niż kod alokujący blok utracony bezpośrednio. Porównać wyniki analizy z przykładem. Ćwiczenie 4 Pośrednia utrata pamięci Napisać podobny przykład ze strukturą listy cyklicznej. Porównać wyniki analizy z przykładem. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
15 Bloki potencjalnie utracone I W analizie poprzednich przykładów można zauważyć jeszcze jedną linię opisującą liczbę utraconych bloków: possibly lost: 0 bytes in 0 blocks Przykład programu: 1 / a r r a y. c / 2 #i n c l u d e < s t d l i b. h> 3 4 i n t a r r a y ; 5 6 i n t main ( i n t argc, char argv ) { 7 a r r a y = m a l l o c (10 s i z e o f ( i n t ) ) ; 8 i n t i ; 9 s r a n d ( ) ; 10 f o r ( i =0; i <5; i ++) { Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
16 Bloki potencjalnie utracone II 11 ( a r r a y++)=rand ( ) ; 12 } 13 r e t u r n 0 ; 14 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
17 Bloki potencjalnie utracone III Przykład 5 Bloki potencjalnie utracone HEAP SUMMARY: in use at exit: 40 bytes in 1 blocks total heap usage: 1 allocs, 0 frees, 40 bytes allocated 40 bytes in 1 blocks are possibly lost in loss record 1 of 1 at 0x4C28C20: malloc (vg_replace_malloc.c:296) by 0x4005AF: main (array.c:6) LEAK SUMMARY: definitely lost: 0 bytes in 0 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 40 bytes in 1 blocks still reachable: 0 bytes in 0 blocks suppressed: 0 bytes in 0 blocks Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
18 Bloki potencjalnie utracone IV Bloki potencjalnie utracone, to bloki to których istnieje wskaźnik do jakiegoś z bajtów, ale nie istnieje wskaźnik na początek bloku. W rzeczywistych programach taki problem należy traktować tak samo jak bloki całkowicie utracone. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
19 Nadzwyczajne zakończenie programu I Wszystkie pokazane wcześniej przykłady kończyły się zwróceniem wartości z funkcji main. Program może również zostać zakończony z użyciem funkcji exitlub poprzez sygnał dla którego zostało ustawione takie zachowanie. 1 / e x i t. c / 2 #i n c l u d e < s t d l i b. h> 3 4 i n t main ( i n t argc, char argv ){ 5 i n t tab ; 6 tab = m a l l o c (100 s i z e o f ( i n t ) ) ; 7 8 e x i t ( 0 ) ; // tu konczy s i e program 9 r e t u r n 0 ; 10 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
20 Nadzwyczajne zakończenie programu II Przykład 6 Zakończenie z użyciem exit() HEAP SUMMARY: in use at exit: 400 bytes in 1 blocks total heap usage: 1 allocs, 0 frees, 400 bytes allocated 400 bytes in 1 blocks are still reachable in loss record 1 of 1 at 0x4C28C20: malloc (vg_replace_malloc.c:296) by 0x40055E: main (exit.c:5) LEAK SUMMARY: definitely lost: 0 bytes in 0 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 400 bytes in 1 blocks suppressed: 0 bytes in 0 blocks Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
21 Nadzwyczajne zakończenie programu III Wszystkie bloki, do których znajdowały się wskaźniki na stosie w momencie zakończenia programu są oznaczone osiągalne. Uwaga W trakcie oceny programu na laboratorium UNIX rozróżniamy kończenie programu w dwóch sytuacjach: Błąd krytyczny W tym przypadku dopuszczalne jest pozostawienie zaalokowanej pamięci dostępnej ze stosu. Zakończenie wynikające z wymagań zadania Na przykład zakończenie programu poprzez użycie C-c. W tym przypadku program powinien zostać poprawnie zamknięty, w szczególności powinny zostać zwolnione wszystkie bloki pamięci, zamknięte wszystkie pliki i połączenia. Nie jest dopuszczalne pozostawienie bloków still reachable w takiej sytuacji. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
22 Odczyt niezainicjowanej pamięci I Standard języka C nie daje żadnych gwarancji co do zawartości komórek pamięci. Zarówno zmiennych na stosie, jak i bloków uzyskanych z malloc. 1 / read1. c / 2 3 i n t main ( i n t argc, char argv ) { 4 i n t v a l ; 5 6 i f ( v a l == 2) 7 r e t u r n 0 ; 8 e l s e 9 r e t u r n 1 ; 10 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
23 Odczyt niezainicjowanej pamięci II Przykład 7 Odczyt niezainicjowanej pamięci Conditional jump or move depends on uninitialised value(s) at 0x4004C5: main (read1.c:6) Ćwiczenie 5 Przekazywanie niezainicjowanych wartości dalej Valgrind wykrywa użycie niezainicjowanej pamięci dopiero, gdy jest ona faktycznie potrzebna. (Kopiowanie niezainicjowanej wartości do innej zmiennej lub przekazanie jej jako argument funkcji takim użyciem nie jest). Napisać program, który przekazuje niezainicjowane wartości do funkcji bibliotecznej (np. printf, qsort). Kiedy problem jest raportowany przez Valgrinda? Sprawdzić opcję --track-origins=yes Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
24 Odczyt niezainicjowanej pamięci III Ćwiczenie 6 Przekazywanie niezainicjowanych buforów do wywołań systemowych Napisać program, który przekazuje niezainicjowany bufor do funkcji write. Porównać wyjście valgrinda z poprzednim przykładem. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
25 Dostęp do nieprzydzielonej pamięci I Valgrind potrafi wykryć część przypadków dostępu do niezaalokowanej pamięci, które nie powodują przerwania programu. Konkretnie dotyczy to fragmentów, które zostały zmapowane do przestrzeni adresowej procesu, ale nie zostały przydzielone żadną funkcją alokującą pamięć. 1 / b a d a d d r e s s. c / 2 #i n c l u d e < s t d l i b. h> 3 4 i n t main ( i n t argc, char argv ) { 5 i n t a1 = m a l l o c (5 s i z e o f ( i n t ) ) ; 6 a1 [ 6 ] = 5 ; 7 f r e e ( a1 ) ; 8 r e t u r n 0 ; 9 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
26 Dostęp do nieprzydzielonej pamięci II Przykład 8 Odczyt poza zakresem tablicy $ valgrind./bad-address Invalid write of size 4 at 0x40052B: main (bad-address.c:6) Address 0x51de058 is 4 bytes after a block of size 20 alloc at 0x4C28C20: malloc (vg_replace_malloc.c:296) by 0x40051E: main (bad-address.c:5) Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
27 Dostęp do nieprzydzielonej pamięci III Ćwiczenie 7 Przekroczenie zakresu tablicy na stosie Niestety Valgrind nie kontroluje zakresów pamięci przy odwołaniach do stosu. Sprawdzić poniższy przykład: 1 / b a d a d d r e s s. c / 2 #i n c l u d e < s t d l i b. h> 3 4 i n t main ( i n t argc, char argv ) { 5 i n t a1 [ 5 ] ; 6 a1 [ 5 ] = 5 ; 7 r e t u r n 0 ; 8 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
28 Kontrola otwartych plików I 1 / f i l e. c / 2 #i n c l u d e <s y s / s t a t. h> 3 #i n c l u d e < f c n t l. h> 4 5 i n t main ( i n t argc, char argv ) { 6 i n t f d=open ( / dev / z e r o, O RDONLY ) ; 7 r e t u r n 0 ; 8 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
29 Kontrola otwartych plików II Przykład 9 Sprawdzenie otwartych deskryptorów $ valgrind --track-fds=yes./file ILE DESCRIPTORS: 4 open at exit. Open file descriptor 3: /dev/zero at 0x4F0E050: open_nocancel (syscall-template.s:81) by 0x400528: main (file.c:6) Open file descriptor 2: /dev/pts/15 <inherited from parent> Open file descriptor 1: /dev/pts/15 <inherited from parent> Open file descriptor 0: /dev/pts/15 <inherited from parent> Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
30 Kontrola otwartych plików III W poprawnym programie powinny pozostać tylko 3 otwarte deskryptory plików stdin (0), stdout(1), stderr(2). Analiza dotyczy wszystkich deskryptorów, włączając w to pliki, FIFO, sockety. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
31 Programy wieloprocesowe I 1 / b a d a d d r e s s. c / 2 #i n c l u d e < s t d l i b. h> 3 #i n c l u d e <u n i s t d. h> 4 5 i n t main ( i n t argc, char argv ) { 6 i n t a1 = m a l l o c (5 s i z e o f ( i n t ) ) ; 7 f o r k ( ) ; f o r k ( ) ; 8 a1 [ 6 ] = 5 ; 9 f r e e ( a1 ) ; 10 r e t u r n 0 ; 11 } Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
32 Programy wieloprocesowe II Ćwiczenie 8 Badanie procesów potomnych Uruchomić Valgrinda dla powyższego programu. Zwrócić uwagę, że każda linia jest poprzedzona numerem procesu, który powoduje problem. W przypadku, gdy programu używa również funkcji exec, konieczne jest użycie dodatkowej opcji Valgrinda, aby go śledzić. Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
33 Podsumowanie Podstawowy zestaw opcji, który będzie używany przy do zadań sprawdzanych na miejscu, w trakcie zajęć, to: $ valgrind --leak-check=full \ --show-leak-kinds=all --track-fds=yes Jan Karwowski (MiNI) Wprowadzenie do Valgrinda 10 lutego / 33
Wykład 2
Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 2 Pisanie programów w C Plan Wprowadzenie do C Pisanie programów w C Nasz pierwszy program - podstawy
Narzędzia do oceny wydajności kodu. Narzędzia do oceny wydajności kodu 1/32
Narzędzia do oceny wydajności kodu Narzędzia do oceny wydajności kodu 1/32 Narzędzia do oceny wydajności kodu 2/32 Błędy zarządzania pamięcią Typowe błędy wycieki pamięci niewłaściwe zarządzanie pamięcią
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
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
Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.
Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,
dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )
dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int
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
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ą
Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim
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
Stałe i zmienne znakowe. Stała znakowa: znak
Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby
1.1 Definicja procesu
1 Procesy pojęcia podstawowe 1 1.1 Definicja procesu Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Systemy Operacyjne - Operacje na plikach
Systemy Operacyjne - Operacje na plikach Andrzej Stroiński Institute of Computer Science Poznań University of Technology 1 październik, 2012 Wprowadzenie do ANSI-C Pomoc systemowa man gcc man 2 write man
Uzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17
Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8
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
Graficzna wizualizacja pamięci
Graficzna wizualizacja pamięci 1 Będziemy używać diagramów przedstawiających pamięć komputera lub konkretnego programu w postaci układu prostokątów Zachowamy konwencję, w której niskie adresy znajdują
Pobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
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
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
TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ
TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ TESTOWAĆ Testowanie i naprawa Loxima You cannot control what you cannot measure. Tom DeMarco Grzegorz Timoszuk gt219709@students.mimuw.edu.pl Plan
Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011
Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt
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
Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces
Procesy pojęcia podstawowe 1 1.1 Jak kod źródłowy przekształca się w proces W języku wysokiego poziomu tworzy się tak zwany kod źródłowy który po zapisaniu będzie plikiem z programem źródłowym. Plik źródłowy
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,
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
Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach
Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,
SYSTEMY OPERACYJNE I laboratorium 3 (Informatyka stacjonarne 2 rok, semestr zimowy)
Procesy i shell. Polecenia ps, sleep, exit, jobs, bg, fg, top, kill, bash, tcsh, which, type, whereis, touch. Metaznak & i >>. Dowiązania miękkie i twarde. Proces jest programem, który jest wykonywany
Argumenty wywołania programu, operacje na plikach
Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują
Lab 9 Podstawy Programowania
Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany
Biblioteka standardowa - operacje wejścia/wyjścia
Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline
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
Tablice, funkcje - wprowadzenie
Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład
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
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę
Programowanie niskopoziomowe
Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym
Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011
Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 9 października 2011 Plan zajęć 1 Procesy w systemie Linux proces procesy macierzyste i potomne procesy zombie i sieroty 2 Funkcje systemowe pobieranie
Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli
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
PMiK Programowanie Mikrokontrolera 8051
PMiK Programowanie Mikrokontrolera 8051 Wykład 3 Mikrokontroler 8051 PMiK Programowanie mikrokontrolera 8051 - wykład S. Szostak (2006) Zmienna typu bit #define YES 1 // definicja stałych #define NO 0
Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00
Programowanie Proceduralne
Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i
Wstęp. do języka C na procesor 8051. (kompilator RC51)
Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje
4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 6. Tablice znakowe o dwóch indeksach, przekazywanie tablic do funkcji cd., dynamiczna alokacja pamięci, funkcje przetwarzające ciągi
Narzędzia wspomagające programowanie w językach C/C++ dla systemu Linux. Autor: Adam Stolcenburg
Narzędzia wspomagające programowanie w językach C/C++ dla systemu Linux Autor: Adam Stolcenburg Kompilatory gcc GNU Compiler Collection (dawniej GNU C Compiler) https://gcc.gnu.org/ Projekt GNU GNU GPL
Język ANSI C. część 11. Jarosław Gramacki Instytut Informatyki i Elektroniki
Wpisy zaliczeń: 18.02.2011, godz. 12:00, sala 503 Język ANSI C część 11 tablice 2D, alokacja pamięci Jarosław Gramacki Instytut Informatyki i Elektroniki Było: Alokacja pamięci, stos i sterta Stałe, zmienne
Języki i metodyka programowania. Wskaźniki i tablice.
Wskaźniki i tablice. Zmienna1 Zmienna2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Zmienna to fragment pamięci o określonym rozmiarze identyfikowany za pomocą nazwy, w którym może być przechowywana
RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok
RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A 15-351 Białystok STRESZCZENIE: Dokument przestawia podstawową funkcjonalność
Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.
Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim
Wskaźniki. Pamięć dynamiczna
Wskaźniki. Pamięć dynamiczna wer. 8 z drobnymi modyfikacjami Wojciech Myszka 2015-04-13 11:39:01 +0200 Wskaźniki Wskaźniki to podstawa C. Kto nie umie się nimi posługiwać ten nie potrafi wykorzystać siły
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
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
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
Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.
Rozpoznawanie obrazu Implementujesz oprogramowanie do rozpoznawania obrazu dla robota. Za każdym razem, gdy robot robi zdjęcie kamerą, jest ono zapisywane jako czarno-biały obraz w pamięci robota. Każdy
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
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)
część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia
Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy
Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]
Procesor ma architekturę akumulatorową. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset or Rx, Ry, A add Rx load A, [Rz] push Rx sub Rx, #3, A load Rx, [A] Procesor ma architekturę rejestrową
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ą
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.
Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu
Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.
1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci
4. Procesy pojęcia podstawowe
4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa
Wskaźniki. Programowanie Proceduralne 1
Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres
Instytut Teleinformatyki
Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014 06. Programowanie Usług Sieciowych
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami
1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.
> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017
> C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES
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
1. Ustanawianie ograniczeń na użycie zasobów
1. Ustanawianie ograniczeń na użycie zasobów W każdym systemie komputerowym zasoby potrzebne do tworzenia i wykonywania procesów są ograniczone. W przypadku gdy w systemie działa wiele procesów ważną rzeczą
Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.
Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na
Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno
Instrukcja laboratoryjna 1 Podstawy programowania 2 Temat: Wprowadzenie do wskaźników Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Rysunek przedstawia najważniejszą różnicę pomiędzy zmiennymi,
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki
> C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete
Wskaźniki w C. Anna Gogolińska
Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie
Systemy Operacyjne. Ćwiczenia
Systemy Operacyjne Ćwiczenia Sprawy organizacyjne Kontakt: Artur.Basiura@agh.edu.pl Konsultacje po uzgodnieniu mailowym terminu Prośba o kontakt mailowy do jednej osoby z grupy (zmiany w terminach zajęć)
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
Pytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
Stałe, tablice dynamiczne i wielowymiarowe
Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej
Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.
Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int
Temat zajęć: Obsługa procesów w systemie.
Temat zajęć: Obsługa procesów w systemie. Czas realizacji zajęć: 90 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Procesy macierzyste i potomne, tworzenie procesów potomnych, uruchamianie
Ghost in the machine
Operacje na pami eci i odrobina I/O Zak lad Chemii Teoretycznej UJ 8 stycznia 2007 Funkcje operujace Wstep do operacji I/O na plikach 1 Operacje na pami eci 2 Funkcje operujace 3 Wst Funkcje operujace
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
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)
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
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.
Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy
Działanie systemu operacyjnego
Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania
Python jest interpreterem poleceń. Mamy dwie możliwości wydawania owych poleceń:
W pierwszym kroku nauczymy się uruchamiać w Pythonie tradycyjny* program ". Dzięki temu nauczysz się pisać w języku Python, a także zapisywać i uruchamiać swoje pythonowe programy. *Jest taka tradycja,
Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
Podstawy programowania w języku C++
Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
1 Zapoznanie się ze środowiskiem Xenomai.
1 Zapoznanie się ze środowiskiem Xenomai. Wszystkie ćwiczenia oraz programy opracowane zostały w Xenomai w wersji 2.5.6. Dlatego też odwołania do dokumentacji dotyczą dokumentu pod adresem: http://www.xenomai.org/documentation/xenomai-2.5/html/api/
Działanie systemu operacyjnego
Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć
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
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