• Nie Znaleziono Wyników

2013-02-19 JarosławPiersa ProgramowanieIC/C++laboratorium02—Składniapętli,typyzmiennych,operatory

N/A
N/A
Protected

Academic year: 2021

Share "2013-02-19 JarosławPiersa ProgramowanieIC/C++laboratorium02—Składniapętli,typyzmiennych,operatory"

Copied!
26
0
0

Pełen tekst

(1)

Pętle w C Proste typy zmiennych w C

Programowanie I C / C++

laboratorium 02 — Składnia pętli, typy zmiennych, operatory

Jarosław Piersa

Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika

2013-02-19

(2)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Pętla while

plik.c:

# include< s t d i o . h >

int m a i n (){

u n s i g n e d l o n g a = 15 L , b = 40 L ; w h i l e ( a < b ) {

p r i n t f (" % ld ^2 = %4 ld \ n ", a , a * a );

a = a +1;

} // w h i l e

r e t u r n 0;

} // m a i n

(3)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Wyjaśnienie

while— obowiązkowe słowo kluczowe, pisane z małych liter (warunek) — warunek pętli, nawiasy są obowiązkowe

%ld— format zmiennej long (long decimal )

(4)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Pętla for

# include< s t d i o . h >

int m a i n (){

int i =0 , a = 3 0 ;

for ( i =1; i < a ; i = i + 2 ) {

p r i n t f (" 0 x %02 x \ n ", i );

} // for

r e t u r n 0;

} // m a i n

(5)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Wyjaśnienie

for— obowiązkowe słowo kluczowe (instr1; warunek2; instr3 ):

instr1 — wykonywana przed pierwszym obrotem pętli warunek2 — jeżeli jest spełniony to kontynuujemy pętlę instr3 — wykonywana po każdym obrocie

(6)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Pętla do

# include< s t d i o . h >

int m a i n (){

int i =200 , b =1;

do {

p r i n t f (" %3 d \ n ", i );

i -= b ; b ++;

} w h i l e ( i > = 0 ) ; r e t u r n 0;

} // m a i n

(7)

Pętle w C Proste typy zmiennych w C

Pętla while Pętla for Pętla do

Wyjaśnienie

do— obowiązkowe słowo kluczowe while— obowiązkowe słowo kluczowe

( instrukcja )— warunek kontynuowania pętli

(8)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ całkowitoliczbowy

# include< s t d i o . h >

int m a i n (){

int a = -1;

p r i n t f (" % d \ n ", a );

u n s i g n e d int b = 1;

p r i n t f (" % u \ n ", b );

l o n g c = -66000;

p r i n t f (" % ld \ n ", c );

u n s i g n e d l o n g d = 6 6 0 0 0 ; p r i n t f (" % ld \ n ", d );

l o n g l o n g e = 1 0 0 0 0 0 0 0 0 0 0 ; p r i n t f (" % lld \ n ", e );

r e t u r n 0;

} // m a i n

(9)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ całkowitoliczbowy

# include< s t d i o . h >

int m a i n (){

int a = 2 5 5 ;

p r i n t f (" % d \ n ", a );

p r i n t f (" % o \ n ", a );

p r i n t f (" % x \ n ", a );

r e t u r n 0;

} // m a i n

(10)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ całkowitoliczbowy

# include< s t d i o . h >

# include< l i m i t s . h >

int m a i n (){

int a = -1;

p r i n t f (" % d \ n ", s i z e o f( a ) );

p r i n t f (" % d \ n ", s i z e o f(u n s i g n e d int) );

p r i n t f (" % lld \ n ", I N T _ M A X );

p r i n t f (" % lld \ n ", I N T _ M I N );

p r i n t f (" % lld \ n ", U I N T _ M A X );

r e t u r n 0;

} // m a i n

(11)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ całkowitoliczbowy

Zadania do przećwiczenia:

(Linux) przejrzyj zawartość pliku /usr/include/limits.h (Windows) przejrzyj zawartość pliku

katalog z kompilatorem/include/limits.h sprawdź wartości graniczne innych typów

(12)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ zmiennoprzecinkowy

# include< s t d i o . h >

int m a i n (){

f l o a t a = 0 . 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; d o u b l e b = 0 . 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ;

l o n g d o u b l e c = 0 . 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ; p r i n t f (" % . 2 0 f \ n ", a );

p r i n t f (" % . 2 0 lf \ n ", b );

p r i n t f (" % . 2 0 e \ n ", c );

r e t u r n 0;

} // m a i n

(13)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ zmiennoprzecinkowy

# include< s t d i o . h >

int m a i n (){

d o u b l e a1 = 0 . 1 ; d o u b l e b1 = 0 . 1 ; d o u b l e c1 = 0 . 0 1 ; if ( c1 == a1 * b1 ){

p r i n t f (" d o u b l e r o w n e \ n ");

} e l s e {

p r i n t f (" d o u b l e nie r o w n e \ n ");

(14)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ całkowitoliczbowy

Zadania do przećwiczenia:

sprawdź powyższy przykład dla a = b = 0.125;

(15)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ znakowy

# include< s t d i o . h >

int m a i n (){

c h a r a = ’ a ’;

p r i n t f (" % c \ n ", a );

p r i n t f (" % d \ n ", a );

r e t u r n 0;

} // m a i n

(16)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Typ znakowy

# include< s t d i o . h >

int m a i n (){

c h a r a = ’ a ’;

for ( a =’ A ’; a <=’ Z ’; a + + ) {

p r i n t f (" % d % c \ n ", a , a );

}

r e t u r n 0;

} // m a i n

(17)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Arytmetyka

int a , b ; a = 11;

b = 4;

p r i n t f (" % d \ n ", a );

p r i n t f (" % d \ n ", - a );

p r i n t f (" % d \ n ", a + b );

p r i n t f (" % d \ n ", a - b );

p r i n t f (" % d \ n ", a * b );

p r i n t f (" % d \ n ", a / b );

// d z i e l e n i e c a l k o w i t e p r i n t f (" % d \ n ", a % b );

(18)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Zadanie

Jaka jest wartość operacji?

-1 -2 -3 2 + 2 * 2 1 - 4 / 2 * 3 1 / 3

1 / 3.0 1 % 3 1 % 3.0

(19)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Przesunięcia bitowe

int a , b ; a = 3;

b = 2;

s c a n f (" % d % d ", & a , & b );

p r i n t f (" % d \ n ", a < < b );

// p r z e s u n i e c i e b i t o w e w l e w o p r i n t f (" % d \ n ", a > > b );

// p r z e s u n i e c i e b i t o w e w p r a w o

(20)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Zadanie

Jaka jest wartość operacji?

1 << 1 1 << 2 2 << 1 3 << 2 5 << 2 3 >> 1 3 >> 2

(21)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Operacje bitowe

int a , b ;

s c a n f (" % d % d ", & a , & b );

p r i n t f (" % d \ n ", a | b );

// a l t e r n a t y w a b i t o w a p r i n t f (" % d \ n ", a & b );

// k o n i u n k c j a b i t o w a p r i n t f (" % d \ n ", a ^ b );

// xor b i t o w y

(22)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Zadanie

Jaka jest wartość operacji?

2 | 3 2 & 3 2 ^ 3 5 | 8 5 & 8 5 ^ 8

dany jest adres IP = a.b.c.d, a, b, c, d ∈ {0, 255} oraz maska M ∈ {0, 31 oblicz adres sieci i rozgłoszeniowy z wykorzystaniem operacji bitowych

(23)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Przypisania

int a , b ;

s c a n f (" % d % d ", & a , & b );

a = b ; a += b ; a -= b ; a *= b ; a /= b ; a %= b ; a < <= b ; a > >= b ; a |= b ;

(24)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Inkrementacja i dekrementacja

int b , a = b = 3;

p r i n t f (" % d \ n ", ++ a );

p r i n t f (" % d \ n ", b + + ) ; f l o a t c = 30;

p r i n t f (" % e \ n ", - - c );

p r i n t f (" % d % d %.2 e \ n ", a , b , c );

(25)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Zadanie

Co wypisze program?

int a = 0;

int b = a++;

printf(¨ %d ¨, a++ );

int a = 0;

int b = a++;

a += ++b;

printf(¨ %d ¨, ++b + a++ );

(26)

Pętle w C Proste typy zmiennych w C

Typ całkowitoliczbowy Typ zmiennoprzecinkowy Typ znakowy Arytmetyka w C

Rzutowanie

f l o a t f = 3 . 1 2 3 4 5 ; int a = 3;

p r i n t f (" % d \ n ", (int)( a + f ) );

l o n g l o n g l = 3 L ;

p r i n t f (" % d \ n ", (int) l );

f l o a t g = . 0 0 0 0 0 0 0 0 1 1 ;

int r = (int) f ^ (int) g ; p r i n t f (" % d \ n ", r );

Zadanie: spróbuj usunąć któreś z rzutowań i skompiluj program z flagą -Wall

Cytaty

Powiązane dokumenty

utwórz na /tmp podkatalogi: wswz mój login wyedytuj w vi plik tekstowy utworzonym katalogu. zmień uprawnienia katalogu i pliku na wswz mój login

zmień uprawnienia katalogu wswz mój login na rwxr--r-- ponownie spróbuj wylistować zawartość katalogu utworzonego przez osobę siedzącą obok.. Uprawnienia plików

Proste dopasowanie tekstu Dopasowanie dowolnych znaków Dopasowanie na początku / końcu wiersza Zakres znaków..

Napisz program, który mając listę cech charakteryzujących oddany program zaliczeniowy dokonuje bi- narnej oceny (zaliczony lub nie) oraz wyświetla uzasadnienie (tj. podzbiór

mieć założone konto w systemie komputerowym lub przynajmniej wypełniony formularz zakładania konta znać obowiązujący regulamin (lub wiedzieć gdzie go

Napisz polecenie AWK, które wyświetli całą zawartość pliku między liniami piątą, a

Napisz skrypt bashowy, który będzie inteligentnym ls / less-em jeżeli zostanie wywołany bez dodatkowych argumentów, to wylistuje bieżący katalog. jeżeli zawiera dodatkowe argumenty

while — obowiązkowe słowo kluczowe, pisane z małych liter (warunek) — warunek pętli, nawiasy są obowiązkowe. %ld — format zmiennej long (long