Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałSara Latała Został zmieniony 11 lat temu
1
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
2
Jerzy F. Kotowski2 type_name identifier[const_expr]; type_name – nazwa typu elementu tablicy identifier – nazwa tablicy const_expr – liczba elementów tablicy. Musi to być wyrażenie stałe (obliczane przez kompilator) Indeksy: 0, 1, 2, …, const_expr - 1 Przykłady:int Ala[10]; double Ola[2*7+5]; struct Ula Ela[100];– kiedyś będzie Ula Ela[100];– C++ Ala[4] = 3; Tablice jednowymiarowe
3
Jerzy F. Kotowski3 Jak sama nazwa wskazuje preprocesor to narzędzie, które funkcjonuje przed rozpoczęciem procesu właściwego. Proces – proces kompilacji programu. Preprocesor przygotowuje program źródłowy do kompilaacji. Przykłady:#include #include c:\Jurek\\C\inf_8_1.cpp #define S(x) ((x)*(x)) #define Ala #define N 10 Dyrektywy preprocesora
4
Jerzy F. Kotowski4 Przykład:#define N 10 ……………… float Ula[N], Ela[N*N+2]; int i; for(i=0;i<N;i++) Ula[i] = 2*i; Zaleta: Modyfikujemy w jednym miejscu a nie w wielu. Wady: Tak określona stała nie ma typu. To nie jest nazwa OBIEKTU - nie można testować wartości wyrażeń. C++: Słowo kluczowe const const float pi = 3.14; Dyrektywa define a wyrażenia stałe 9_1
5
Jerzy F. Kotowski5 Przykłady:float Ula[5] = {0, 3, 4.5, 7.1, -1}; float Ula[6] = {0, 3, 4.5, 7.1, -1}; - ostrzeżenie float Ula[4] = {0, 3, 4.5, 7.1, -1}; - ERROR!! float Ula[ ] = {0, 3, 4.5, 7.1, -1}; - policz sobie Tablice znakowe: char Ala[12] = {A,l,a,,m,a,,k,o,t,a,\0}; - HELP!! char Ala[12] = Ala ma kota; Dużo lepiej! Terminating null będzie dodany automatycznie. Trzeba o tym pamiętać, jeżeli go nie chcemy. Inicjalizacja wartości początkowych
6
Jerzy F. Kotowski6 type ident[const_ex1] [const_ex2]; Przykład: float Ala[N][N+1]; [ ] – operator indeksowy 15 A[2][3] – przykład użycia. Co to jest B[2,3]? (A[2])[3] – operator indeksowy jest lewostronnie łączny Wniosek: Tablice wielowymiarowe w C są tablicami tablic. Nie ma ograniczenia na wymiar (poza rozsądkiem). Inicjalizacja: int Ala[2][3]={{1,3,5},{8,2,4}}; Niepełna inicjalizacja: int Ala[2][3]={1,3,8,2,4}; Tablica znakowa: char Ola[3][5]={Ala,ma,kota}; Policz sobie sam: char Ola[3][ ]={Ala,ma,kota}; Tablice wielowymiarowe
7
Jerzy F. Kotowski7 Operatory bitowe - jak sama nazwa wskazuje - działają na poszczególnych bitach swoich argumentów Argumentami tych operatorów nie mogą być dane typu float oraz double Operator jednoargumentowy (jeden) ~ bitowe uzupełnienie zerojedynkowe14 Operatory dwuargumentowe (pięć) & - bitowa koniunkcja 8 |- bitowa alternatywa 6 ^- bitowa różnica symetryczna 7 <<- przesunięcie w lewo 11 >>- przesunięcie w prawo 11 Operatory bitowe
8
Jerzy F. Kotowski8 Bitowa koniunkcja służy do zasłaniania pewnych bitów: y = x & m; m - maska y = x & 0177; Przesłania wszystko za wyjątkiem siedmiu najmłodszych bitów Operatory bitowe - przykłady char s[20]; int x, m=1, i=0; scanf(%d,&x); while(m) { if(x&m) s[i++] = 1; else s[i++] = 0; m = m<<1; } // Trzeba odwrócić s w miejscu
9
Jerzy F. Kotowski9 Int x = 2, y, z; y = x & 1; z = x && 1; y = 0 z = 1 x = 10&7;2 x = 10|7;15 x = 10^7;11 Operatory bitowe - przykłady c.d. Definicja funkcji zwracającej n bitów liczby x zaczynając od pozycji p unsigned getbits(x, p, n) unsigned x, p, n; { return(x>>(p+1-n)&~(~0<<n); } 0 00000000 ~0<<n 11111000 ~0 11111111 ~(~0<<n) 00000111
10
Jerzy F. Kotowski10 Operatory arytmetyczneOperatory bitowe (2 argumentowe) + - * / % & | ^ >. Definicja operatora e1 op= e2 e1 = e1 op (e2) Przykłady: x /= y x = x/y Cechy: Zwięzłość, bliskie językowi naturalnemu Niebezpieczeństwo!!x = 15; x = x*2/3;( x: 10) x *= 2/3;(x: 0) !! Operatory i wyrażenia przypisania
11
Jerzy F. Kotowski11 Jest to jedyny w języku C operator trójargumentowy (i tak jest czasami nazywany) Oznaczenie: ?:Priorytet: 3 Definicja operatora y = e1 ? e2 : e3; if(e1) y=e2; else y=e3; Korzyści: zwięzłość i czytelność programu for(i=0;i<N;i++) printf(%d%c,a[i],(i%10==9||i==N-1)?\n: ); if(x&m) s[i++]=1; else s[i++]=0; s[i++] = x&m ? 1 : 0; y = a>b ? a : b; Operator warunkowy
12
Jerzy F. Kotowski12 char s[20]; int x, m =1, i=0, j=0; printf(x = ); scanf(%d,&x); while(m) { s[i++] = x&m ?1:0; m <<= 1; } x[i--] = 0;// term. null Nasz ulubiony przykład printf(binarnie = ); for(;j<i;j++,i--) { m = s[i]; s[i] = s[j]; s[j] = m; } printf(s);
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.