Narzędzia do oceny wydajności kodu. Narzędzia do oceny wydajności kodu 1/32
|
|
- Krystyna Staniszewska
- 8 lat temu
- Przeglądów:
Transkrypt
1 Narzędzia do oceny wydajności kodu Narzędzia do oceny wydajności kodu 1/32
2 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ą przepełnienie bufora niezainicjalizowana pamięć
3 Narzędzia do oceny wydajności kodu 3/32 Debugery pamięci ang. memory debuggers Odnajdują: wycieki pamięci dostęp do uprzednio zwolnionej pamięci wielokrotne zwalnianie tego samego obszaru pamięci użycie delete zamiast delete[] dla tablic wyjście poza zakres tablicy dostęp do niezainicjalizowanej pamięci zapis lub odczyt wskaźnika NULL
4 Narzędzia do oceny wydajności kodu 4/32 Przykład programu z błędami (1) Kod źródłowy 1 #i n c l u de <s t d i o. h> 2 i n t main ( i n t argc, char argv ) { 3 const i n t s i z e =100; 4 i n t n, sum=0; 5 i n t A = ( i n t ) m a l l o c ( s i z e o f ( i n t ) s i z e ) ; 6 7 f o r ( n=s i z e ; n>0; n ) 8 A[ n ] = n ; 9 f o r ( n=0; n<s i z e ; n++) 10 sum += A[ n ] ; 11 p r i n t f ( "sum=%d\n", sum ) ; 12 return 0 ; 13 }
5 Narzędzia do oceny wydajności kodu 5/32 Przykład programu z błędami (2) Narzędzie do sprawdzania pamięci $ valgrind --tool=memcheck --leak-check=full./a.out Komunikaty Valgrinda ==6731== Memcheck, a memory error detector.... ==6731== Invalid write of size 4 ==6731== at 0x40056A: main (main1.c:8) ==6731== Address 0x51791c0 is 0 bytes after a block of size 400 ==6731== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6731== by 0x40054A: main (main1.c:5) ==6731==
6 Narzędzia do oceny wydajności kodu 6/32 Przykład programu z błędami (3) ==6731== Conditional jump or move depends on uninitialised value ==6731== Conditional jump or move depends on uninitialised value ==6731== Use of uninitialised value of size 8 ==6731== at 0x4E69963: (within /lib/libc-2.7.so) ==6731== by 0x4E6C7CB: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) ==6731== ==6731== at 0x4E6996D: (within /lib/libc-2.7.so) ==6731== by 0x4E6C7CB: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) ==6731==... ==6731== at 0x4E6BDB1: vfprintf (in /lib/libc-2.7.so) ==6731== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6731== by 0x4005AE: main (main1.c:11) sum=4950
7 Narzędzia do oceny wydajności kodu 7/32 Przykład programu z błędami (4) ==6731== ERROR SUMMARY: 12 errors from 6 contexts (suppressed: 8 from 1) ==6731== malloc/free: in use at exit: 400 bytes in 1 blocks. ==6731== malloc/free: 1 allocs, 0 frees, 400 bytes allocated. ==6731== For counts of detected errors, rerun with: -v ==6731== searching for pointers to 1 not-freed blocks. ==6731== checked 76,816 bytes. ==6731== ==6731== ==6731== 400 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==6731== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6731== by 0x40054A: main (main1.c:5) ==6731== ==6731== LEAK SUMMARY: ==6731== definitely lost: 400 bytes in 1 blocks. ==6731== possibly lost: 0 bytes in 0 blocks. ==6731== still reachable: 0 bytes in 0 blocks. ==6731== suppressed: 0 bytes in 0 blocks.
8 Narzędzia do oceny wydajności kodu 8/32 Błędy przydziału/zwolnienia pamięci (1) Kod źródłowy 1 #i n c l u de <s t d i o. h> 2 #i n c l u de < s t d l i b. h> 3 #i n c l u de <s t r i n g. h> 4 i n t main ( i n t argc, char argv [ ] ) { 5 char mystr1=s t r d u p ( "test" ) ; 6 char mystr2=s t r d u p ( "TEST" ) ; 7 mystr1=mystr2 ; 8 9 p r i n t f ( "mystr1=%s\n", mystr1 ) ; 10 f r e e ( mystr1 ) ; p r i n t f ( "mystr2=%s\n", mystr2 ) ; 13 f r e e ( mystr2 ) ; 14 return 0 ; 15 }
9 Narzędzia do oceny wydajności kodu 9/32 Błędy przydziału/zwolnienia pamięci (2) ==6802== Invalid read of size 1 ==6802== at 0x4C22D82: strlen (mc_replace_strmem.c:242) ==6802== by 0x4E6DB88: vfprintf (in /lib/libc-2.7.so) ==6802== by 0x4E73C69: printf (in /lib/libc-2.7.so) ==6802== by 0x4005CD: main (main2.c:12) ==6802== Address 0x is 0 bytes inside a block of size 5 ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005BA: main (main2.c:10)... mystr2=test ==6802== ==6802== Invalid free() / delete / delete[] ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005D6: main (main2.c:14) ==6802== Address 0x is 0 bytes inside a block of size 5 ==6802== at 0x4C2130F: free (vg_replace_malloc.c:323) ==6802== by 0x4005BA: main (main2.c:10)
10 Narzędzia do oceny wydajności kodu 10/32 Błędy przydziału/zwolnienia pamięci (3) ==6802== ERROR SUMMARY: 14 errors from 7 contexts (suppressed: 8 ==6802== malloc/free: in use at exit: 5 bytes in 1 blocks. ==6802== malloc/free: 2 allocs, 2 frees, 10 bytes allocated. ==6802== For counts of detected errors, rerun with: -v ==6802== searching for pointers to 1 not-freed blocks. ==6802== checked 76,816 bytes. ==6802== ==6802== ==6802== 5 bytes in 1 blocks are definitely lost in loss record ==6802== at 0x4C2260E: malloc (vg_replace_malloc.c:207) ==6802== by 0x4EA0D71: strdup (in /lib/libc-2.7.so) ==6802== by 0x400584: main (main2.c:5) ==6802== ==6802== LEAK SUMMARY: ==6802== definitely lost: 5 bytes in 1 blocks. ==6802== possibly lost: 0 bytes in 0 blocks. ==6802== still reachable: 0 bytes in 0 blocks. ==6802== suppressed: 0 bytes in 0 blocks.
11 Narzędzia do oceny wydajności kodu 11/32 Przesłanki do użycia debugera pamięci Kiedy używać Valgrind Przenoszenie aplikacji na inny system operacyjny Program się zawiesza Pojawiają się tajemnicze błędy Jako element testów regresyjnych Gdy ciężko znaleźć przyczynę błędu: $ valgrind --db-attach=yes./a.out
12 Narzędzia do oceny wydajności kodu 12/32 Kłopoty z wykorzystaniem programu Valgrind Najczęstsze problemy: Dobry przypadek testowy pokrywający kod Zwiększone wymagania programu Wielowątkowość nie zawsze wspierana Wsparcie dla niestandardowych funkcji obsługi pamięci
13 Narzędzia do oceny wydajności kodu 13/32 Proste podejście Wykorzystanie top top - 09:57:47 up 20:38, 4 users, load average: 0.00, 0.00, 0.00 Tasks: 122 total, 2 running, 120 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.4%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: k total, k used, k free, 87208k buffers Swap: k total, 0k used, k free, k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6913 rdyja m 324 S :00.06 a.out 5043 root m 37m 17m S :38.24 Xorg...
14 Narzędzia do oceny wydajności kodu 14/32 Profiler wykorzystania pamięci (1) Uruchomienie $ valgrind --tool=massif./a.out n Wyniki $ ms_print massif.out.6952
15 Narzędzia do oceny wydajności kodu 15/32 Profiler wykorzystania pamięci (2) Command:./a.out n Massif arguments: (none) ms_print arguments: massif.out MB 39.22^ #..#.: : :#. :::@ :@::. ::#:.:::@: :@::..::#:: ::::@: ::@::: :::#:: : :@::::@::: :::#:: : :::#:: ::.::@::::@:::: :::::@:::::: :::#:: :: :::@::::@::::, ::::::@::::::@ :::#:: ::: :::@::::@::::@ ::::::@::::::@ :::#:: :::..:::@::::@::::@:.::::::@::::::@. :::#:: :::: ::::@::::@::::@: :::::::@::::::@: :::#:: ::::. ::::@::::@::::@:: ::::::::@::::::@:: :::#:: ::::: :::#:: :::::: : ::::@::::@::::@::: :::#:: :::::: : ::::@::::@::::@:::. :::#:: ::::::: : ::::@::::@::::@::::.::::::::::@::::::@:::: >Mi
16 Narzędzia do oceny wydajności kodu 16/32 Profiler wykorzystania pamięci (3) Number of snapshots: 76 Detailed snapshots: [3, 8, 12 (peak), 29, 34, 39, 58, 68] n time(i) total(b) useful-heap(b) extra-heap(b) stacks(b) ,978 80,008 80, ,929 3,814,648 3,807,360 7, ,889 6,638,200 6,625,408 12, % (6,625,408B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->98.60% (6,545,408B) 0x4008AE: main (testmalloc.c:53) ->01.21% (80,000B) 0x400887: main (testmalloc.c:47) n time(i) total(b) useful-heap(b) extra-heap(b) stacks(b) ,969 10,840,696 10,819,712 20, ,049 15,043,192 15,014,016 29, ,129 19,245,688 19,208,320 37, ,209 23,448,184 23,402,624 45, ,889 26,337,400 26,286,208 51, % (26,286,208B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc. ->99.50% (26,206,208B) 0x4008AE: main (testmalloc.c:53) ->00.30% (80,000B) in 1+ places, all below ms_print s threshold (01.00%)
17 Narzędzia do oceny wydajności kodu 17/32 Nadmierne zużycie pamięci Kroki przeciwdziałania nadmiernemu wykorzystaniu pamięci sprawdzić, czy nie ma wycieków pamięci oszacować (zgrubnie) zapotrzebowanie na pamięć sprawdzić użycie pamięci menedżerem procesów wykorzystać program Massif do odnalezienia obiektów zajmujących najwięcej pamięci
18 Narzędzia do oceny wydajności kodu 18/32 Analiza wydajności Kroki: przygotować zestaw testów upewnić się, że program działa prawidłowo dla testów użyć prostego narzędzia do mierzenia czasu wykonania odnaleźć przypadek ukazujący wąskie gardło programu użyć ten przypadek testowy w narzędziu profilującym
19 Narzędzia do oceny wydajności kodu 19/32 Proste metody analizy wydajności Polecenie wbudowane: $ time./mojprogram [arg1...] real 0m16.179s user 0m0.016s sys 0m0.164s Instrukcja time: $ /usr/bin/time./a.out n user 0.14system 0:16.17elapsed 1%CPU (0avgtext+ 0avgdata 0maxresident)k 0inputs+0outputs (0major+80071minor)pagefaults 0swaps
20 Narzędzia do oceny wydajności kodu 20/32 Problemy przy mierzeniu czasu wykonania Pułapki: zbyt krótki czas wykonania programu operacje wejścia/wyjścia wywołania systemowe brak pamięci skalowanie zegara CPU obciążenie generowane przez inne procesy
21 Wybór przypadku testowego dla programu Narzędzia do oceny wydajności kodu 21/32
22 Narzędzia do oceny wydajności kodu 22/32 Działanie profilerów Sposoby zbierania danych próbkowanie sampling pośrednicząco, oprzyrządowaniem instrumentation
23 Narzędzia do oceny wydajności kodu 23/32 gprof Wykorzystanie kompilacja programu z opcją -pg uruchomienie programu powstaje plik o nazwie gmon.out tworzenie raportu komendą gprof nazwa programu gmon.out
24 Narzędzia do oceny wydajności kodu 24/32 gprof profil płaski (ang. flat profile) $ gprof a.out gmon.out... Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls us/call us/call name insert_value swap less isort print_array main...
25 Narzędzia do oceny wydajności kodu 25/32 gprof graf wywołań (ang. call graph) Call graph (explanation follows) granularity: each sample hit covers 2 byte(s) for 0.18% of 5.47 index % time self children called name <spontaneous> [1] main [1] / isort [2] isort [2] / main [1] [2] isort [2] / insert_value [3] isort [2]
26 Narzędzia do oceny wydajności kodu 26/32 gprof graf wywołań (ang. call graph) / isort [2] [3] insert_value [3] / swap [4] / less [5] / insert_value [3] [4] swap [4] / insert_value [3] [5] less [5] <spontaneous> [6] print_array [6]
27 Narzędzia do oceny wydajności kodu 27/32 Callgrind Użycie uruchomienie programu w środowisku Valgrind $ valgrind --tool=callgrind./program arg1 arg2 powstaje plik o nazwie: callgrind.out.<id> utworzenie raportu komendą: $ callgrind annotate callgrind.out.<id>
28 Narzędzia do oceny wydajności kodu 28/32 Efekty działania callgrind Profile data file callgrind.out.7312 (creator: callgrind debian) I1 cache: D1 cache: L2 cache: Timerange: Basic block Trigger: Program termination Profiled target:./a.out i (PID 7312, part 1) Events recorded: Ir Events shown: Ir Event sort order: Ir Thresholds: 99 Include dirs: User annotated: Auto-annotation: off
29 Narzędzia do oceny wydajności kodu 29/32 Efekty działania callgrind Ir ,862,208 PROGRAM TOTALS Ir file:function 121,053,000 /home/../isort.c:insert_value [/home/../a.out] 67,983,000 /home/../isort.c:swap [/home/../a.out] 54,450,000 /home/../isort.c:less [/home/../a.out] 1,675,000 /home/../isort.c:isort 2 [/home/../a.out]
30 Narzędzia do oceny wydajności kodu 30/32 Narzędzie gcov Komendy: $ gcc -g -ftest-coverage -fprofile-arcs -pg prog.c $./program $ gcov program.gcda Komunikaty: File isort.c Lines executed:61.19% of 67 isort.c:creating isort.c.gcov
31 Narzędzia do oceny wydajności kodu 31/32 Wyniki działania gcov $ cat program.c.gcov -: 0:Source:isort.c -: 0:Graph:isort.gcno -: 0:Data:isort.gcda -: 0:Runs:2 -: 0:Programs: : 16:void swap(stype *a, int i, int j) { -: 17: Stype tmp; : 18: tmp = a[i]; : 19: a[i] = a[j]; : 20: a[j] = tmp; : 21:} -: 22: : 23:int less(stype a, Stype b) { : 24: return (a < b)? 1 : 0; -: 25:}
32 Narzędzia do oceny wydajności kodu 32/32 W wykładzie wykorzystano materiały Thorsten Grötker, Ulrich Holtmann, Holger Keding, Markus Wloka, The Developer s Guide to Debugging, Springer, 2008 John Fusco, Linux. Niezbędnik programisty, Helion, 2009
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
Bardziej szczegółowoGNU 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
Bardziej szczegółowoWykł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
Bardziej szczegółowoMS 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
Bardziej szczegółowoPobieranie 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:
Bardziej szczegółowoZarządzanie Procesami
Rozumienie pojęcia proces w informatyce jest, w istocie rzeczy, bliskie jego zwyczajowemu pojmowaniu, czyli jako pewnej sekwencji zmian lub czy zdarzeń zachodzących wg ustalonego schematu (choć niekoniecznie
Bardziej szczegółowodynamiczny 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
Bardziej szczegółowoCo 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
Bardziej szczegółowoNarzędzia debugowania kodu. Narzędzia debugowania kodu 1/33
Narzędzia debugowania kodu Narzędzia debugowania kodu 1/33 Narzędzia debugowania kodu 2/33 Oprogramowanie zawiera błędy Oprogramowanie zawsze zawiera błędy Odpluskwianie programów jest zajęciem programistów
Bardziej szczegółowoWstę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
Bardziej szczegółowoTESTOWAĆ 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
Bardziej szczegółowoLaboratorium Procesy w systemach UNIX 3.2 Polecenia związane z procesami
Laboratorium 3 3.1 Procesy w systemach UNIX 3.2 Polecenia związane z procesami 1 3.1 Procesy w systemach UNIX Z systemami unixowymi związane jest pojęcie procesu. W takim ujęciu, proces, rozumiany jest
Bardziej szczegółowo1. 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ą
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoProcesy. 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
Bardziej szczegółowo!"#!"$%! %$"#%!!$! www.falownikilg.pl !"!#$ )&! &
!"#!"$%! %$"#%!!$! &#'#%$ ()*%$"#% %& %& &&& )&! * )&! &!"!#$ &'( & &# +,,- www.falownikilg.pl 0)1$!"$$&2&$$! 34&$!"$+$"5 / #'( =( &#( & #& ( "( ('!! (& "!('( # #'( + #-1 / &* # '( #&'( #"! "!(!#= ( (
Bardziej szczegółowoWskaź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
Bardziej szczegółowo// 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
Bardziej szczegółowoInformatyka. 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
Bardziej szczegółowoTablice, 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
Bardziej szczegółowoGraficzna 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ą
Bardziej szczegółowoŚrodowisko programisty. Środowisko programisty 1/35
Środowisko programisty Środowisko programisty 1/35 Środowisko programisty 2/35 Literatura 1. Butcher P., Debugowanie. Jak wyszukiwać i naprawiać błędy w kodzie oraz im zapobiegać, Helion, Gliwice 2010
Bardziej szczegółowoTemat: 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,
Bardziej szczegółowoBlock Change Tracking
Czym jest i czy warto stosować? OPITZ CONSULTING Kraków Przybliżenie technologii i analiza testów Jakub Szepietowski (Młodszy konsultant SE) OPITZ CONSULTING Kraków 2011 Strona 1 Agenda 1. Plik BCT 2.
Bardziej szczegółowoWskaź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
Bardziej szczegółowoWykł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
Bardziej szczegółowoŁą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
Bardziej szczegółowoJę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
Bardziej szczegółowoNETBEANS 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
Bardziej szczegółowoCODE::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
Bardziej szczegółowoPROGRAMOWANIE 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ę
Bardziej szczegółowoTablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku
Tablice w argumentach funkcji Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku Przykład: char str[] = abcdef ;... fun(str); // argument faktyczny to id
Bardziej szczegółowoInformatyka. 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
Bardziej szczegółowoNarzę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
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: I KARTA PRZEDMIOTU CEL PRZEDMIOTU PRZEWODNIK PO PRZEDMIOCIE C1. Zapoznanie studentów z środowiskiem pracy wykorzystywanych w nim programach C2. Nabycie przez studentów praktycznych umiejętności
Bardziej szczegółowoProgramowanie 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
Bardziej szczegółowoTworzenie oprogramowania
Tworzenie oprogramowania Język C Budowa programu napisanego w języku C podział na pliki z definicjami funkcji, korzystanie z bibliotek systemowych i własnych automatyzacja kompilacji za pomocą make dzielenie
Bardziej szczegółowoBiblioteka 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
Bardziej szczegółowoWskaź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
Bardziej szczegółowoRATIONAL 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ść
Bardziej szczegółowoLaboratorium 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ą
Bardziej szczegółowoPowyż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
Bardziej szczegółowoUzupeł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;
Bardziej szczegółowoSposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski
Sposoby wykrywania i usuwania błędów Tomasz Borzyszkowski Mylić się jest rzeczą ludzką Typy błędów: błędy specyfikacji: źle określone wymagania błędy projektowe: nieodpowiednie struktury danych i algorytmy
Bardziej szczegółowoSieciowa komunikacja procesów - XDR i RPC
*** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania
Bardziej szczegółowoPROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn
Bardziej szczegółowo1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
Bardziej szczegółowoPoniż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,
Bardziej szczegółowoOptymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota
Optymalizacja programów Open Source Profilery wysokiego poziomu część 2 Krzysztof Lichota lichota@mimuw.edu.pl gprof gprof Pomiar działa na zasadzie instrumentacji kompilowanego kodu (wejścia i wyjścia
Bardziej szczegółowoWstę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
Bardziej szczegółowoPiotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++
Piotr Dwieczkowski Code coverage Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++ Plan Co to jest pokrycie kodu? Możliwe sposoby wykorzystania Rodzaje statystyk Wady i zalety mierzenia porycia kodu
Bardziej szczegółowoJę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
Bardziej szczegółowoProgramowanie w asemblerze Aspekty bezpieczeństwa
Programowanie w asemblerze Aspekty bezpieczeństwa 20 grudnia 2016 Ochrona stron pamięci Najstarsze(?) ataki: modyfikacja kodu programu. Lekarstwo: W XOR X (Write XOR execute) Oznacza to, że w atrybutach
Bardziej szczegółowoPlan. krótkie opisy modułów. 1 Uwagi na temat wydajności CPython a. 2 Podstawowe techniki poprawiające wydajność obliczeniową
Plan 1 Uwagi na temat wydajności CPython a 2 Podstawowe techniki poprawiające wydajność obliczeniową 3 Podstawowe techniki poprawiające zużycie pamięci krótkie opisy modułów 1 array - jak oszczędzić na
Bardziej szczegółowoLaboratorium 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
Bardziej szczegółowoSUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)
Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER
Bardziej szczegółowoGlobalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)
Podstawy programowania (język C) Globalne / Lokalne Wykład 15. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Zmienne globalne / lokalne (1) int A, *Q; // definicja zmiennych globalnych
Bardziej szczegółowoArrays -II. Arrays. Outline ECE Cal Poly Pomona Electrical & Computer Engineering. Introduction
ECE 114-9 Arrays -II Dr. Z. Aliyazicioglu Electrical & Computer Engineering Electrical & Computer Engineering 1 Outline Introduction Arrays Declaring and Allocation Arrays Examples Using Arrays Passing
Bardziej szczegółowoWykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Bardziej szczegółowoKatedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Bardziej szczegółowoProcesy 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
Bardziej szczegółowoProgramowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1
Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1 Wprowadzenie Procesory graficzne GPU (Graphics Processing Units) stosowane są w kartach graficznych do przetwarzania grafiki komputerowej
Bardziej szczegółowoPliki 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
Bardziej szczegółowoZaawansowane 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
Bardziej szczegółowoLaboratorium 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ę,
Bardziej szczegółowoLaboratorium telekomunikacji Zadanie 2
150875 Grzegorz Graczyk numer indeksu imi i nazwisko 151021 Paweł Tarasiuk numer indeksu imi i nazwisko Data 2010-03-03 Kierunek Informatyka Rok akademicki 2009/10 Semestr 4 Grupa dziekańska 2 Laboratorium
Bardziej szczegółowoOracle Automatic Workload Repository (AWR) 12c
XVIII KONFERENCJA STOWARZYSZENIA POLSKIEJ GRUPY UŻYTKOWNIKÓW SYSTEMU ORACLE Oracle Automatic Workload Repository (AWR) 12c Marcin Przepiórowski Principal Oracle DBA Geek Blogger RAC Attack Ninja AWR -
Bardziej szczegółowo1. Procesy i współbieżność
1. Procesy i współbieżność Opracował: Sławomir Samolej Politechnika Rzeszowska, Katedra Informatyki i Automatyki, Rzeszów, 2013. 1.1. Wprowadzenie Proces to przestrzeń adresowa i pojedynczy wątek sterujący,
Bardziej szczegółowoWskaźniki. Pamięć dynamiczna
Wskaźniki. Pamięć dynamiczna wer. 10 Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2019-03-27 08:28:44 +0100 Literatura I Ted Jensen. A tutorial on pointers and arrays in C, Feb. 2000. Dostępne
Bardziej szczegółowo4.2 Sposób korzystania z l acza
4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego
Bardziej szczegółowoAutomatyczne generowanie testów z modeli. Bogdan Bereza Automatyczne generowanie testów z modeli
Automatyczne generowanie testów z modeli Numer: 1 (33) Rozkmina: Projektowanie testów na podstawie modeli (potem można je wykonywać ręcznie, lub automatycznie zwykle chce się automatycznie) A ja mówię
Bardziej szczegółowoKurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania
Wykład 11. 4 stycznia 2010 1 Kontrola poprawności podczas biegu programu 2 3 4 Asercje Asercja to formuła logiczna; Asercji używa się do kontrolowania czy np. wartość zmiennej ma odpowiedni typ lub mieści
Bardziej szczegółowoczęść 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych
Język ANSI C część 16 struktury rekurencyjne i ich zastosowania drzewa binarne, algorytmy rekurencyjne dla drzew binarnych Jarosław Gramacki Instytut Informatyki i Elektroniki rekurencja wiele czynności
Bardziej szczegółowoObsł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
Bardziej szczegółowoProgramowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego
Programowanie Sylwester Arabas prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny Wydział Fizyki Uniwersytetu Warszawskiego wykład VIII 15. kwietnia 2015 r. na ostatnim wykładzie...
Bardziej szczegółowoDYNAMICZNE 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
Bardziej szczegółowoUŻYCIE I ZARZĄDZANIE WĄTKAMI
Proces jako pewna instancja programu, w trakcie wykonania, ze swej natury w każdym systemie operacyjnym wyróżniają: prawa własności zasobu a jednym z fundamentalnych zadań systemu jest ochrona przed jednoczesnym
Bardziej szczegółowoBardzo szybkie podsumowanie: wykład 3
Bardzo szybkie podsumowanie: wykład 3 wer. 7 z drobnymi modyfikacjami! Wojciech Myszka 2019-04-02 09:08:04 +0200 Uwagi 1. Obowiązuje cały materiał! 2. Tu tylko podsumowanie. Wskaźniki. Pamięć dynamiczna
Bardziej szczegółowoSerwer ISP Monitorowanie ruchu i parametrów systemu (załącznik) Serwer ISP Monitorowanie ruchu. 1. Statystyki graficzne
Serwer ISP Monitorowanie ruchu Serwer ISP Monitorowanie ruchu i parametrów systemu (załącznik) 1. Statystyki graficzne Rys.1. - Statystyki interfejsów sieciowych Rys.2 - Statystyki użytkowników transfer
Bardziej szczegółowoSystemy 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
Bardziej szczegółowoDIGA Object Dictionary opis
MANUAL DIGA Object Dictionary opis UWAGA! Dokument: DIGA_Object_Dictionery_Manual_v1_01.odt Publikowany jako: DIGA_Object_Dictionery_Manual_v1_01.pdf Data utworzenia: 27/09/2013 Napisany prze: Jacek Barcik
Bardziej szczegółowoUŻYCIE I ZARZĄDZANIE WĄTKAMI
Proces jako pewna instancja programu, w trakcie wykonania, ze swej natury w każdym systemie operacyjnym wyróżniają: prawa własności zasobu a jednym z fundamentalnych zadań systemu jest ochrona przed jednoczesnym
Bardziej szczegółowoOprogramowanie i wykorzystanie stacji roboczych. Wykład 11
Wykład 11 p. 1/5 Oprogramowanie i wykorzystanie stacji roboczych Wykład 11 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 11 p. 2/5
Bardziej szczegółowoWykład 3: Implementacja programów wbudowanych
Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane
Bardziej szczegółowoWskaź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ą
Bardziej szczegółowoLaboratorium 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
Bardziej szczegółowoFunctionalization. Jeszcze o funkcjach i strukturze projektu. Marcin Makowski. 3 grudnia Zak lad Chemii Teoretycznej UJ
Jeszcze o funkcjach i strukturze projektu Zak lad Chemii Teoretycznej UJ 3 grudnia 2008 1 2 3 4 5 typedef Plan typedef specyfikator typu nazwa S luży do stworzenia nowej nazwy dla jakiegoś typu. Nazwa
Bardziej szczegółowoKto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8
Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8 Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8...które mają 16GB RAM Kto mówi? Inżynier systemów wbudowanych Linux, ARMv7, ARMv8...które
Bardziej szczegółowoShared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.
Shared memory and messages Shared memory vs message passing Shared memory - C functions Shared memory - example program Message queues - C functions Message queues - example program process 0 process 1
Bardziej szczegółowoProgramowanie Procedurale
Programowanie Procedurale Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale Wykład 6 1 / 27 Zbiór ctime zawiera deklarcję
Bardziej szczegółowoTablice, funkcje, wskaźniki - wprowadzenie
Tablice, funkcje, wskaźniki - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 4 19 listopada 2018 (Wykład 4) Tablice, funkcje, wskaźniki - wprowadzenie 19 listopada 2018 1 / 37 Outline 1 Tablice
Bardziej szczegółowoLaboratorium Programowania Kart Elektronicznych
Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości
Bardziej szczegółowoC++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska
C++ język nie dla ludzi o słabych nerwach Małgorzata Bieńkowska malgorzata.bienkowska@gmail.com 9LivesData HYDRAStor Dla NEC Japan od ponad 10 lat 1,5 miliona linii kodu większość rozwijana w Warszawie
Bardziej szczegółowoOprogramowanie i wykorzystanie stacji roboczych. Wykład 4
Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład
Bardziej szczegółowoObsługa błędów w SQL i transakcje. Obsługa błędów w SQL
Obsługa błędów w SQL i transakcje Zacznijmy od najprostszego przykładu: CREATE PROCEDURE podziel1 Obsługa błędów w SQL Powyższa procedura w większości przypadków zadziała prawidłowo, lecz na przykład poniższe
Bardziej szczegółowoSystemy 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ęć)
Bardziej szczegółowoAutomatyczne testowanie jądra Linuksa
Automatyczne testowanie jądra Linuksa Krzysztof Skrzypczyński Marcin Mieteń Automatyzacja testów W kontekście testowania jądra linuxa tworzy się skrypty i programy sprawdzające działanie odpowiednich części
Bardziej szczegółowoRPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )
III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego
Bardziej szczegółowoJzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Bardziej szczegółowoPolitechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Przemysłowe układy sterowania PID Układy regulacji PID w strukturze sprzętowej Pytania i zadania do zajęć
Bardziej szczegółowo