• Nie Znaleziono Wyników

Podstawy Programowania

N/A
N/A
Protected

Academic year: 2022

Share "Podstawy Programowania"

Copied!
16
0
0

Pełen tekst

(1)

Wojciech Poªowczuk Waªbrzych, 2 listopada 2021

(2)
(3)

I scanf(const char * format,. . . )

I format  ªa«cuch znaków, przy czym znak % rozpoczyna sekwencj¦ formatuj¡c¡, która mo»e wyst¦powa¢ wielokrotnie

I . . .  dodatkowe argumenty, których liczba powinna odpowiada¢ liczbie sekwencji formatuj¡cych w ªa«cuchu format,

I funkcja printf wypisuje ªa«cuch format zast¦puj¡c sekwencje formatuj¡ce odpowiednio zinterpretowanymi warto±ciami dodatkowych argumentów

I funkcja scanf czyta ze standardowego wej±cia warto±ci zgodnie z sekwencjami formatuj¡cymi i zapisuje je pod adresy podane jako dodatkowe argumenty

(4)

Przykªad

#include<s t d i o . h>

i n t main (i n t argc , char * argv [ ] ) { p r i n t f ("%s ma %d koty . \ n","Ala", 2 3 ) ; return 0 ;

}

(5)

ags opis

- tekst wyrównany do lewej (domy±lnie do prawej) + liczba zawsze ze znakiem z przodu (równie» +) spacja je±li liczba nie ma znaku, to wstawiana jest spacja

(pomocne przy wyrównaniu)

# u»yty z 'o', 'x' lub 'X' powoduje wypisanie tu» przed liczb¡ '0', '0x', '0X' dla warto±ci ró»nych od zera

# u»yty z 'a', 'A', 'e', 'E', 'f', 'F', 'g' lub 'G' wymusza wypisanie kropki dziesi¦tnej nawet, je±li nie ma po niej nic 0 uzupeªnienie z lewej strony zerami (0) zamiast spacji,

je±li padding jest wª¡czony

(6)

printf sekwencje formatuj¡ce

%[ags][width][.precision][length]specier width opis

liczba minimalna liczba znaków do wypisania, je±li jest ich mniej, to uzupeªniana jest z przodu spacjami

∗ width jest podana jako dodatkowy argument b¦d¡cy liczb¡

caªkowit¡, podany przed formatowanym argumentem

(7)

.precision opis

.number dla liczb caªkowitych oznacza liczb¦ cyfr do wypisania, je±li jest ich mniej, to uzupeªniane zerami z przodu .number dla liczb zmiennoprzecinkowych oznacza precyzj¦, czyli

liczb¦ cyfr wypisywanych po przecinku

.number dla ªa«cuchów znaków oznacza maksymaln¡ liczb¦

znaków do wypisania

.∗ precision jest podana jako dodatkowy argument b¦d¡cy liczb¡ caªkowit¡, podan¡ przed formatowanym

argumentem

(8)

printf sekwencje formatuj¡ce

%[ags][width][.precision][length]specier

specier opis przykªad

d lub i liczba caªkowita ze znakiem, dziesi¦tnie 392 u liczba caªkowita bez znaku, dziesi¦tnie 7235

o ósemkowo bez znaku 610

x szesnastkowo bez znaku 7fa

X szesnastkowo, bez znaku (wielkimi) 7FA f lub F zmiennoprzecinkowo, dziesi¦tnie 392.65

e notacja naukowa (maªymi) 3.9265e+2

E notacja naukowa (wielkimi) 3.9265E+2

g u»yj najkrótszej reprezentacji: %e lub %f 392.65 G u»yj najkrótszej reprezentacji: %E lub %F 392.65

(9)

specier opis przykªad a szesnastkowo zmiennoprzecinkowe

(maªymi) -0xc.90fep-2

A szesnastkowo zmiennoprzecinkowe

(wielkimi) -0XC.90FEP-2

c znak a

s ªa«cuch znaków napis

p adres (wska¹nik) b8000000

n Nic nie wypisuj, ale zapami¦taj liczb¦

wypisanych znaków w kolejnym argumencie (musi to by¢ adres do int)

% % po % wypisze % na ekran %

(10)

Przykªad

#i n c l u d e <s t d i o . h>

i n t main ( ) {

p r i n t f (" Znaki : %c %c \n", ' a ', 6 5 ) ;

p r i n t f (" D z i e s i e t n i e : %d %ld \n", 1977 , 650000L ) ; p r i n t f (" Uzupelnione spacjami : %10d\n", 1 9 7 7 ) ; p r i n t f (" Uzupelnione zerami : %010d\n", 1 9 7 7 ) ;

p r i n t f ("Systemy liczbowe : %d %x %o %#x %#o\n", 100 , 100 , 100 , 100 , 1 0 0 ) ; p r i n t f (" Zmiennoprzecinkowe : %4.2 f %+.0e %E\n", 3 . 1 4 1 6 , 3 . 1 4 1 6 , 3 . 1 4 1 6 ) ; p r i n t f (" Dlugosc jako zmienna : %*d\n", 5 , 1 0 ) ;

p r i n t f ("%s \n", " Przykladowy napis . ") ; return 0 ;

}

(11)

I https://www.cplusplus.com/reference/cstdio/scanf/

(12)

Wska¹niki

I Ka»da zmienna jest w pami¦ci pod jakim± adresem

I Adres zmiennej pobieramy operatorem &

I Warto±¢ spod adresu pobieramy operatorem ∗

I Zmienne zajmuj¡ ró»n¡ ilo±¢ pami¦ci w zale»no±ci od ich typu, zatem wska¹niki te» maj¡ ró»ne typy

I Deklaracja wska¹nika poprzez: <TYP> ∗NazwaZmiennej;

I Operacje arytmetyczne na wska¹nikach i liczbach int s¡

poprawne i przesuwaj¡ adres

(13)

i n t main ( ) { i n t x=7;

i n t y=x ;

i n t *wskx , * wsky ; wskx=&x ;

(* wskx)++;

p r i n t f ("%d\n", x ) ; wsky=wskx ;

(* wsky)++;

p r i n t f ("x=%d , y=%d\n", x , y ) ; return 0 ;

}

(14)

Tablice i wska¹niki

I Tablica jest zawsze wska¹nikiem na pierwszy element tablicy

I Tablica zajmuje zawsze ci¡gªy kawaªek pami¦ci

I tab[i]==*(tab+i)

I O ile bajtów przesunie nam adres operacja tab+3?

(15)

#d e f i n e MAX 10 i n t main ( ) {

i n t tab [MAX] ;

f o r(i n t i =0; i<MAX; i ++){

tab [ i ]=( i +1)*( i +1);

}

f o r(i n t i =0; i<MAX; i ++){

p r i n t f ("%d , ",* ( tab+i ) ) ; }

return 0 ; }

(16)

Dzi¦kuj¦ za uwag¦...

Cytaty

Powiązane dokumenty

Wiadomo, że wartość ułamka nie zmieni się, jeżeli licznik i mianownik pomnożymy przez tę samą liczbę różna od zera. Podobnie, wartość logarytmu nie zmieni się,

Wyka», »e iloczyn dowolnych 13 kolejnych liczb naturalnych dzieli si¦ przez 13!..

Czy można pokolorować pewne punkty tego zbioru na czerwono, a pozostałe na biało, w taki sposób, że dla każdej prostej ` równoległej do którejkolwiek osi układu

»e musi by¢ funkcj¡ staª¡ tzn. Udowodni¢, »e cz¦±¢ rzeczywista funkcji

Za pomocą symboli arytmetycznych i symboli rachun- ku zdań zapisać następujące twierdzenia arytmetyki liczb rzeczywistych.. (a) Jeśli liczba jest różna od zera, to (jest ujemna

inny ciąg liczb całkowitych, który okaże się zbieżny, a więc od pewnego miejsca stały.. Przeprowadzimy najpierw czysto heurystyczne rozumowanie, które pomoże nam znaleźć

[r]

Wskazówka: Uzasadnij, »e w powy»szym rozwini¦ciu s¡ miejsca, w których wyst¦- puj¡ po kolei dwa zera, trzy zera, cztery zera, itd., czyli »e istniej¡ dowolnie dªugie..