Informatyka. Wy-02 Tablice, wskaźniki, warunki i pętle. mgr inż. Krzysztof Kołodziejczyk

Podobne dokumenty
Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Podstawy Programowania C++

Programowanie Obiektowe i C++

Instrukcje sterujące. Programowanie Proceduralne 1

Część 4 życie programu

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Co nie powinno być umieszczane w plikach nagłówkowych:

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Microsoft IT Academy kurs programowania

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

System operacyjny Linux

1 Podstawy c++ w pigułce.

Instrukcje sterujące

1 Podstawy c++ w pigułce.

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Wprowadzenie do programowania w języku C

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Podstawy programowania (1)

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

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

Podstawy programowania - 1

Wstęp do programowania

Pytania z języka C/C++ main dyrektywy preprocesora #include 15. #define 16. #define słowa zastrzeżone \n, \t, \f 26.

INSTRUKCJE REPETYCYJNE PĘTLE

PROGRAMOWANIE w C prolog

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Kontrola przebiegu programu

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Język C, instrukcje sterujące (laboratorium)

INSTRUKCJE REPETYCYJNE PĘTLE

Podstawy Programowania.

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Programowanie strukturalne i obiektowe

Podstawy programowania w języku C

Informatyka. Wy-05 Struktury, unie, organizacja pól struktur w pamięci

tablica: dane_liczbowe

3 Przygotował: mgr inż. Maciej Lasota

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

I - Microsoft Visual Studio C++

Podstawy Programowania

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

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

( wykł. dr Marek Piasecki )

Laboratorium 2: Pętle i instrukcje warunkowe. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 8 WSTĘP DO INFORMATYKI

Wstęp do programowania

Łańcuchy znaków. Agnieszka Nowak - Brzezińska

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Podstawy programowania obiektowego

Programowanie strukturalne język C

KURS C/C++ WYKŁAD 1. Pierwszy program

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Podstawy Programowania. Składnia wyrażeń i instrukcji, złożoności obliczeniowej, operacje wejścia i wyjścia, definicja

Programowanie - instrukcje sterujące

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wskaźniki. Programowanie Proceduralne 1

Python. Wprowadzenie. Jolanta Bachan

Termin Egzaminu (Język C): !!! >> CZWARTEK, 7 LUTEGO << GODZ

Tworzenie aplikacji w języku Java

Język C zajęcia nr 5

Podstawy Programowania Podstawowa składnia języka C++

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Podstawowe części projektu w Javie

Podstawy programowania skrót z wykładów:

Dokonaj analizy poniŝszego kodu i na jego podstawie wyświetl w oknie przeglądarki swoje Imię oraz Nazwisko przy uŝyciu instrukcji echo i print

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Funkcje zawarte w bibliotece < io.h >

DYNAMICZNE PRZYDZIELANIE PAMIECI

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie w elektronice: Podstawy C

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Budowa i generowanie planszy

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

Transkrypt:

Informatyka Wy-02 Tablice, wskaźniki, warunki i pętle mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 06.03.2019

Strona kursu http://w12.pwr.wroc.pl/inf/

Konspekt 1 if-else 2 do-while 3 Wskaźniki 4 Tablice 5 Arytmetyka wskaźników

Konspekt 1 if-else Instrukcja warunkowa if if-else Zagnieżdżone if a? b : c; 2 do-while

if i f ( czy_sroda ) zrob_wyklad ( ) ;

if i f ( czy_sroda ) { zrob_wyklad ( ) ; }

if i f (3 == dzien_tygodnia ) { zrob_wyklad ( ) ; }

if-else i f ( czy_sroda ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ;

if-else i f ( czy_sroda ) i f (9 == godzina ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ;

if-else i f ( czy_sroda ) { i f (9 == godzina ) zrob_wyklad ( ) ; e l s e idz_do_domu ( ) ; }

if-else i f ( czy_sroda ) { i f (9 == godzina ) zrob_wyklad ( ) ; } e l s e idz_do_domu ( ) ;

if-else i f ( czy_poniedzialek ) zrob_laboratorium ( ) ; e l s e i f ( czy_sroda ) zrob_wyklad ( ) ; e l s e i f ( czy_piatek ) { zrob_wyklad ( ) ; zrob_laboratorium ( ) ; } e l s e idz_do_domu ( ) ;

switch-case switch ( dzien_tygodnia ) { case 1 : zrob_laboratorium ( ) ; break ; case 3 : zrob_wyklad ( ) ; break ; case 5 : zrob_wyklad ( ) ; zrob_laboratorium ( ) ; break ; d e f a u l t : idz_do_domu ( ) ; }

switch-case switch ( dzien_tygodnia ) { case 1 : case 2 : zrob_laboratorium ( ) ; break ; case 3 : zrob_wyklad ( ) ; case 4 : case 5 : zrob_laboratorium ( ) ; break ; d e f a u l t : idz_spac ( ) ; }

switch-case bool sprawdz_czy_sroda ( i n t dzien_tygodnia ) { return 3 == dzien_tygodnia ; }

switch-case i n t ustal_godzine_budzenia ( bool czy_weekend ) { return czy_weekend? 12 : 6 ; }

Konspekt 1 if-else 2 do-while Pętla do-while for break-continue

while while ( warunek ) i n s t r u k c j a ;

while while ( czy_weekend ) s p i j ( ) ;

do-while do s p i j ( " s z e s c godzin " ) ; while ( czy_weekend ) ;

do-while f o r ( i =0; i <n ; i ++) i n s t r u k c j a ; i = 0 ; while ( i <n ) { i n s t r u k c j a ; i ++; }

break z n a l e z i o n o = 0 ; f o r ( i =1; i <=7; i++ ) { i f ( czy_wyklad_w_dniu ( i ) ) { z n a l e z i o n o = i ; break ; } }

continue while ( 1 ) { dzien = wez_dzien ( ) ; switch ( dzien ) { case 3 : case 5 : m a terialy = pobierz_mat_na_wyklad ( ) ; break ; case 1 : m a terialy = pobierz_mat_na_laboratorium ( ) ; break ; d e f a u l t : continue ; } otworz_sale ( ) ; p r e z e n t u j ( m a t e r i a l y ) ; zamknij_sale ( ) ; }

continue f o r ( i =0; i <10; i ++); p r i n t f ( " S e s j a \n" ) ;

Kontrola przepływu while ( pytanie=nastepne_pytanie ( ) ) { udziel_odpowiedzi ( pytanie ) ; } pokaz_nastepny_slajd ( ) ;

Zawartość pamięci f0c1be80 00 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 00 00 00 00 00 00 00 00

Konspekt 3 Wskaźniki Argumenty funkcji 4 Tablice 5 Arytmetyka wskaźników

Wskaźniki f0c1be80 [c0 00 00 00]00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a=192;

Wskaźniki f0c1be80 c0 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a=192; i n t p_a=&a ; //p_a = f0c1be80

Wskaźniki f0c1be80 c0 00 00 00 00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a=192; i n t p_a=&a ; //p_a = f0c1be80 // p_a = 192

Wskaźniki f0c1be80 [80 00 00 00]00 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 80 be c1 f 0 00 00 00 00 i n t a=192; i n t p_a=&a ; p_a = 128; //p_a = f0c1be80

Wskaźniki f0c1be80 c0 00 00 00 cc 00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 80 be c1 f 0 00 00 00 00 i n t a=192; i n t b=204; i n t p_a ; p_a=&a ; //p_a = f0c1be80

Wskaźniki f0c1be80 [80]00 00 00[80]00 00 00 f0c1be88 00 00 00 00 00 00 00 00 f0c1be90 00 00 00 00 00 00 00 00 f0c1be98 [84]be c1 f 0 00 00 00 00 i n t a=192; i n t b=204; i n t p_a ; p_a=&a ; //p_a = f0c1be80 p_a = 128; p_a=&b ; //p_a = f0c1be84 p_a = 128;

Argumenty funkcji void swap ( i n t a, i n t b ) { x = a ; a = b ; b = x ; } p = 4 ; q = 7 ; swap(&p,&q ) ;

Konspekt 3 Wskaźniki 4 Tablice Tablice jednowymiarowe Tablice dwuwymiarowe 5 Arytmetyka wskaźników

Tablice jednowymiarowe f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ;

Tablice jednowymiarowe f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 [80 be c1 f0]00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ; i n t p_a = a ; &a [ 0 ] == a == p_a a [ 0 ] == p_a

Tablice dwuwymiarowe f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ;

Tablice dwuwymiarowe f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ; b == b [ 0 ] [ 0 ] == ( b [ 0 ] )

Konspekt 3 Wskaźniki 4 Tablice 5 Arytmetyka wskaźników

Arytmetyka wskaźników f0c1be80 02 00 00 00 08 00 00 00 f0c1be88 20 00 00 00 80 00 00 00 f0c1be90 00 02 00 00 00 08 00 00 f0c1be98 00 00 00 00 00 00 00 00 i n t a [ ] = { 2, 8, 3 2, 1 2 8, 5 1 2, 2 0 4 8 } ; a [ 2 ] == ( a+2) == 32 &a [ 2 ] == a + 2 s i z e o f ( i n t ) == f0c1be88

Arytmetyka wskaźników f0c1be80 01 02 03 04 07 06 08 09 f0c1be88 04 08 01 05 00 00 00 00 f0c1be90 [80 be c1 f0 84 be c1 f0] f0c1be98 [88 be c1 f0]00 00 00 00 char b [ 3 ] [ 4 ] = { { 1, 2, 3, 4 }, { 7, 6, 8, 9 }, {4,8,1,5} } ; b [ 2 ] == f0c1be88 ( ( b+2) + 1) == b [ 2 ] [ 1 ] == 8

Arytmetyka wskaźników i n t a = 256; char p_a = &a ; // warning : i n i t i a l i z a t i o n from incompatible p o i n t e r

Arytmetyka wskaźników i n t a = 258; char p_a = ( char )&a ; p_a [ 1 ] ; //1 p_a [ 0 ] ; //2

Arytmetyka wskaźników char a [ ] = " H e l l o world! " ; p r i n t f ( "%s \n",&a [ 6 ] ) ; // world!

Arytmetyka wskaźników i n t s t r l e n ( char s ) { i n t n ; f o r ( n=0; s ; s++) n++; return n ; }

Konspekt 6 gdb 7 ptrace 8 GUI 9 Standardowe wejście 10 Standardowe wyjście 11 Deskryptory plików

Konspekt 6 gdb Zasada działania Breakpointy Sterowanie 7 ptrace 8 GUI

Konspekt 6 gdb 7 ptrace Wsparcie systemu operacyjnego Debuggowanie zdalne Strace Strip 8 GUI

Unix is sexy talk; cd ; wine; talk; touch; unzip; strip; finger; mount; fsck; more; yes; umount; make clean; sleep

Konspekt 6 gdb 7 ptrace 8 GUI Breakpoint Watch Printf

Konspekt 9 Standardowe wejście getchar gets scanf cin 10 Standardowe wyjście 11 Deskryptory plików

Konspekt 9 Standardowe wejście 10 Standardowe wyjście putchar,puts,printf,cout Formatowanie Buforowanie 11 Deskryptory plików

Konspekt 9 Standardowe wejście 10 Standardowe wyjście 11 Deskryptory plików

Bibliografia http://edu.pjwstk.edu.pl/wyklady/pro/scb/prg2cpp_files/node22.html https://opensource.com/article/18/1/how-debuggers-really-work https://blog.0x972.info/?d=2014/11/13/10/40/50-how-does-a-debugger-work https://www.thegeekstuff.com/2010/03/debug-c-program-using-gdb http://edu.pjwstk.edu.pl/wyklady/pro/scb/prg2cpp_files/node27.html

Koniec Dziękuję za uwagę!