1 struktura #include struct complex {double real; double img; } alfa; struct complex beta={2.0,2.0}, delta; struct complex multi (struct complex x, struct.

Slides:



Advertisements
Podobne prezentacje
I część 1.
Advertisements

Mgr inż.Marcin Borkowski Podstawy Java Część II
Operatory.
Reprezentacja danych w komputerze
Języki programowania C++
Opisy funkcji Adres strony WWW : html /html_node/libc_528.html.
argumenty wiersza poleceń: getopt
Czy procesor musi się grzać? Np. dodawanie 2 liczb 1-bitowych. Możliwych stanów początkowych: cztery Możliwych stanów końcowych: dwa to można opisać jako.
formatowanie kodu źródłowego
Dyrektywy preprocesora #define identyfikator znacznik (definiowanie stałych symbolicznych) #define MAXL 512 for( i=1; i
KONKURS WIEDZY O SZTUCE
Struktura programu dyrektywy preprocesora
Funkcje Modularyzacja : program główny , funkcje Funkcje :
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Ćwiczenie (1) Dostosuj poniższy program do wymogów programu zaliczeniowego #include typedef struct{ char imie[30]; char nazwisko[50]; int rokUrodzenia;
Programowanie w C Wykład 3
Wyrażenia Wyrażenie w Fortranie jest poprawną syntaktycznie kombinacją zmiennych, stałych, operatorów i funkcji. Wyrażenia są jednozdaniowymi przepisami.
#include #include main () { cout
Dyskretny szereg Fouriera
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik
Jerzy F. Kotowski1 Informatyka I Wykład 9 TABLICE PREPROCESOR OPERATORY c.d. (nie tylko binarne)
Podstawy informatyki 2012/2013
Podstawy programowania w języku C i C++
Kalendarz 2011 Real Madryt Autor: Bartosz Trzciński.
KALENDARZ 2011r. Autor: Alicja Chałupka klasa III a.
Przekazywanie argumentów
1/34 HISTORIA BUDOWY /34 3/34 6 MAJA 2011.
Podstawy adresowania hostów w sieciach komputerowych
Automatyka i Robotyka Systemy czasu rzeczywistego Wykład 4.
Potęgowanie liczb całkowitych Dalej opracowała: Edyta Kaczmarek
Podstawy programowania w języku C i C++
Podstawy działania wybranych usług sieciowych
Programowanie strukturalne i obiektowe
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Instrukcja for. Instrukcja warunkowa mgr inż. Agata Pacek.
Kalendarz 2011r. styczeń pn wt śr czw pt sb nd
Historia Języka C Idea C pochodzi od języka BCPL, opracowanego przez M. Richardsa 1970 – język B stworzony przez K. Thompsona Język C wprowadzono po raz.
jeszcze dygresja o macierzach...
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
(C) Jarosław Jabłonka, ATH, 5 kwietnia kwietnia 2017
EcoCondens Kompakt BBK 7-22 E.
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Zagadnienia AI wykład 6.
Kalendarz 2020.
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
1 dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! )
1 Uzupełnienie dot. przekazywania argumentów #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
1 Czy procesor musi się grzać? Np. dodawanie 2 liczb 1-bitowych. Możliwych stanów początkowych: cztery Możliwych stanów końcowych: dwa to można opisać.
Czy procesor musi się grzać?
Wskaźniki Elżbieta Labocha.
Opisy funkcji Adres strony WWW :
Uzupełnienie dot. przekazywania argumentów
nowe operatory & . (kropka) * operator rzutowy -> , (przecinek)
Przykładowy algorytm geometryczny (geometria płaska)
Język C++ Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła.
struktura #include <stdio.h> #include <stdlib.h>
Zapis prezentacji:

1 struktura #include struct complex {double real; double img; } alfa; struct complex beta={2.0,2.0}, delta; struct complex multi (struct complex x, struct complex y); int main() { alfa.real=0.5; alfa.img=0.5; beta.real=0.5; beta.img=1.0; delta=multi(alfa,beta);

2 struktura printf("\n gamma=%6.3f,%6.3f\ \n alfa=%6.3f,%6.3f beta=%6.3f,%6.3f\n", delta.real, delta.img, alfa.real, alfa.img, beta.real, beta.img); exit(0); } /* koniec funkcji main */

3 struktura struct complex multi( struct complex a, struct complex b) { struct complex c; c.real=a.real*b.real -a.img*b.img; c.img=a.real*b.img+a.img*b.real; a.real=4.0; a.img=4.0; b.real=5.0; b.img=5.0; return(c); }/* koniec funkcji multi */ /* wynik programu to gamma=-0.250, alfa= 0.500, beta= 0.500, */

4 dyrektywy preprocesora #define identyfikator znacznik (definiowanie stałych symbolicznych) #define MAXL 512 for( i=1; i<MAXL; i++) #define identyfikator (identyfikator…) (ta postać dla definiowania makrodefinicji)

5 dyrektywy preprocesora #ifdefined identyfikator #ifdefined (identyfikator) #ifdef identyfikator (te postacie są równoważne i dają w wyniku wartość niezerową, jeśli identyfikator był poprzednio zdefiniowany przez #define)

6 dyrektywy preprocesora #include #ifdef ALFA #define MAXL 100 #else #define MAXL 200 #endif int main() { printf("\n MAXL=%d\n",MAXL); } /* koniec funkcji main */

7 dyrektywy preprocesora gcc –DALFA program.c

8 dyrektywy preprocesora #undef identyfikator Ta dyrektywa powoduje, że identyfikator określony wcześniej za pomocą dyrektywy #define jest w dalszej części tekstu programu niezdefiniowany

9 dyrektywy preprocesora #else #endif #ifdef …. … #else … #endif

10 dyrektywy preprocesora #ifndef identyfikator Powyższe wyrażenie jest prawdziwe, jeśli identyfikator nie jest zdefiniowany w pliku źródłowym #ifndef DEBUG printf_table(); #endif

11 dyrektywy preprocesora #ifndef BETA … #else … #endif

12 dyrektywy preprocesora #if wyrazenie_calkowitoliczbowe jesli jest niezerowe, to jest prawdziwe #if TRUE

13 dyrektywy preprocesora #include “nazwa_pliku” (z katalogu bieżącego) #include ( z katalogu standartowego, np /usr/include )

14 dyrektywy preprocesora #line stała nazwa_pliku Ta dyrektywa powoduje, ze kompilator przechodzi do wiersza o numerze określonym przez stałą w pliku o podanej nazwie. #line 20 ”nowyplik.c”

15 dyrektywy preprocesora Definicja makra może zawierać specjalny operator #; powoduje on zamianę parametru makra w łańcuch znakowy (czyli string); przykład jest poniżej. #include int main() { float x=6.,y=2.; #define Wydruk(z) printf(" " #z " = %f\n",z); Wydruk(x/y); exit(0); } /* koniec funkcji main */ /* wydrukuje: x/y = */

16 dyrektywy preprocesora Definicja makra może zawierać specjalny operator ##; służący do „sklejania”; przykład umieszczono poniżej. #include int main() { #define Makro(n) f_##n float Makro(x); /* float f_x */ float Makro(y); /* float f_y */ f_x=7.0 ; f_y=9.0 ; printf("%f %f\n", f_x, f_y); exit(0); } /* koniec funkcji main */

17 pliki źródłowe Program w C przygotowuje się w postaci pliku (zbioru) tekstowego, który jest następnie kompilowany do postaci pośredniej. Pliki pośrednie podlegają konsolidacji (linkowaniu) z innymi plikami tego samego typu i z bibliotekami  program wykonywalny. kompilacja + konsolidacja (kompilator) (linker,konsolidator) Przechowywanie programu podzielonego na niewielkie pliki ogranicza czas kompilacji, pliki nie zmienione nie musza być powtórnie kompilowane, małe pliki łatwiej redagować.

18 adres zmiennej Do pobrania adresu zmiennej używa się jednoargumentowego operatora & (uwaga & może mieć także znaczenie dwuargumentowego operatora bitowego iloczynu logicznego) Jednoargumentowy operator * jest “używany do wskazywania”, tzn. jego argument jest adresem zmiennej. (jednoargumentowy operator * nazywa się również operatorem dereferencji)

19 adres zmiennej - przykład #include int main() { int k; int n; int *palec;/* ta zmienna jest wskaznikiem */ palec=&k; k=10; n=(*palec)*15; printf("\n\nk=%5d n=%5d *palec=%5d\n",k,n,*palec); exit(0); } /* koniec funkcji main */ k= 10 n= 150 *palec= 10

20 operatory bitowe umożliwiają korzystanie, wykonywanie działań na pojedynczych bitach; zaś np. operator dodawania działa na całej zmiennej! & koniunkcja bitowa | alternatywa bitowa ^ różnica symetryczna ~ negacja bitowa << operator przesunięcia w lewo >> operator przesunięcia w prawo

21 operatory bitowe - & bit 1bit 2bit1 & bit int c1,c2,c3; c1=0x45; c2=0x71; c3=c1&c2; /* c3 jest równe 0x41 = 65 dziesiętnie */

22 operatory bitowe - | bit 1bit 2bit1 | bit int c1,c2,c3; c1=0x47; c2=0x53; c3=c1|c2; /* c3 jest równe 0x57= 87 dziesiętnie */

23 operatory bitowe - ^ bit 1bit 2bit1 ^ bit int c1,c2,c3; c1=0x47; c2=0x53; c3=c1 ^ c2; /* c3 jest równe 0x14= 20 dziesiętnie */

24 operatory bitowe - ~ bit ~bit int c1,c3; c1=0x45; c3=~c1; /* c3 jest równe 0xFFFFFFBA = -70 dziesiętnie */

25 operatory bitowe - << przesuwa w lewo o określona ilość bitów uwaga – przesunięte bity znikają, a nie pojawiają się z prawej strony c 0x1C c<<1 0x c>>2 0x

26 operatory bitowe - >> jest w nim pewna pułapka, mianowicie miejsce wolne jest zastępowane bitem znaku! np. int k=-1; int l; l=k>>1; /* l jest równe minus jeden ! */

27 Jak bit ustawic? na przykład chcemy ustawić trzeci bit na “jeden” int k=1<<3; /* k = 8 dziesiętnie */ int n; n|=k; n=n|k;

28 Jak bit testowac? na przykład chcemy sprawdzić trzeci bit int k=1<<3; /* k = 8 dziesiętnie */ int n; if( (n&k)!=0 ) printf(“ trzeci bit == 1 ”); else printf(“ trzeci bit == 0 “);

29 Jak bit usunac? na przykład chcemy ustawić trzeci bit na “zero” int k=1<<3; /* k = 8 dziesiętnie */ int n; n&=~k; n=n & (~k);

30 pola bitowe int main() { struct aka{ int k:3; int n:3; } beta; beta.n=1; while(1) { sleep(1); printf("\nbeta.n=%d",beta.n); beta.n+=1; /* beta.n=beta.n+1; */ } exit(0); } /* koniec funkcji main */

31 wynik programu beta.n = 1 beta.n = 2 beta.n = 3 beta.n = -4 beta.n = -3 beta.n = -2 beta.n = -1 beta.n = 0 beta.n = 1

32 extern #include extern float alfa; /* plik extern1.c */ int main() { printf("\n alfa=%10.4f\n",alfa); return(0); } /* koniec funkcji main */ float alfa=-66; /* plik extern1a.c */ /* gcc -Wall -ansi -pedantic extern1.c extern1a.c */

33 extern # include extern float alfa; float alfa=4; /* jeden plik zrodlowy */ int main() { printf("\n alfa=%10.4f\n",alfa); return(0); } /* koniec funkcji main */