wyk05


Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
Kurs C z elementami C++
Marek Piotrów - Wykład 5 - Instrukcje i gramatyka języka C
5 listopada 2008
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
oblicz.c - część 1
#include
#include
#include
/***************** OBLICZ: bardzo prosty kalkulator ****************************
* Program czyta z wejscia ciag liczb calkowitych oddzielonych operacjami *
* arytmetycznymi: +, -, *, / i wykonuje je kolejno od lewej do prawej. *
* Koncem danych jest znak: =. *
*************************************************************************************/
/***************** PROTOTYPY FUNKCJI ********************/
static int czytaj_liczbe(void);
static int czytaj_op(void);
void odwroc(char s[]);
void itoa(int n,char s[]);
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
oblicz.c - część 2
/***************** DEFINICJE FUNKCJI ********************/
int main(void)
{
int arg1,arg2,op;
char wynik[20];
arg1=czytaj_liczbe();
while ((op=czytaj_op()) != = && op != EOF) {
arg2=czytaj_liczbe();
switch (op) {
case + :
arg1+=arg2;
break;
case - :
arg1-=arg2;
break;
case * :
arg1*=arg2;
break;
case / :
arg1/=arg2;
break;
}
}
itoa(arg1,wynik);
printf("%s\n",wynik);
return 0;
}
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
oblicz.c - część 3
static int ostatni=  ; /* ostatnio przeczytany znak z wejscia */
static int czytaj_liczbe(void)
{
int znak,n;
while (isspace(ostatni) && (ostatni=getchar()) != EOF) ;
znak=(ostatni == - ? -1 : 1);
if (ostatni == + || ostatni == - )
ostatni=getchar();
for (n=0; isdigit(ostatni); ) {
n=10 * n + (ostatni- 0 );
if ((ostatni=getchar()) == EOF)
break;
}
return znak*n;
}
static int czytaj_op(void)
{
int op;
while (isspace(ostatni) && (ostatni=getchar()) != EOF) ;
op=ostatni;
if (ostatni != EOF)
ostatni=getchar();
return op;
}
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
oblicz.c - część 4
void odwroc(char s[])
{
char z;
for (int i=0,j=strlen(s)-1; i < j; ++i,--j)
z=s[i],s[i]=s[j],s[j]=z;
}
void itoa(int n,char s[])
{
int i,znak;
if ((znak=n) < 0)
n=-n;
i=0;
do {
s[i++]=n % 10 + 0 ;
} while ((n/=10) > 0);
if (znak < 0)
s[i++]= - ;
s[i]= \0 ;
odwroc(s);
}
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
Przykład użycia instrukcji: continue
.
.
.
.
.
.
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C
Przykład - prosty kalkulator
Gramatyki języków programowania
Przykład użycia instrukcji: goto
.
.
.
.
.
.
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Definicja gramatyki bezkontekstowej
Jeśli A jest skończonym zbiorem liter (alfabetem), to przez A"
będziemy oznaczać zbiór wszystkich słów (skończonych
ciągów liter) nad alfabetem A.
Gramatyka bezkontekstowa to czwórka (Ł, V , P, S), gdzie
Ł jest skończonym alfabetem terminalnym
(podstawowym).
V jest skończonym alfabetem nieterminalnym
(pomocniczym).
P ą" V (Ł *" V )" jest skończonym zbiorem produkcji.
S " V jest symbolem początkowym (startowym).
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Język generowany przez gramatykę bezkontekstową
Niech G = (Ł, V , P, S) będzie gramatyką bezkontekstową.
Wyprowadzeniem w gramatyce G nazywamy relację:
!G ą" (Ł *" V )"V (Ł *" V )" (Ł *" V )" taką, że w !G u
wtedy i tylko wtedy, gdy istnieją A " V oraz ą, , ł " (Ł *" V )"
spełniające następujące warunki:
(A, ) " P;
w = ąAł;
u = ął.
Przez !" będziemy oznaczać tranzytywne i zwrotne
G
domknięcie relacji !G.
Gramatyka G definiuje język L(G) = {w " Ł" : S !" w}.
G
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Przykłady języków i gramatyk bezkontekstowych
Przykład 1
Niech G1 = ({a, b}, {S}, {(S, a S b), (S, }, S). Wtedy
L(G) = { , ab, aabb, aaabbb, . . .} = {anbn : n e" 0}
Przykład wyprowadzenia: S !G1 a S b !G1 a b.
Przykład wyprowadzenia: S !G1 .
Jeśli gramatyka jest ustalona, to możemy opuszczać indeks
gramatyki w wyprowadzeniu, np. S ! a S b ! a b.
Przykład 2
Niech G2 = ({[, ]}, {S}, {(S, [S]S), (S, }, S). Wtedy L(G) jest
językiem prawidłowo rozstawionych nawiasów kwadratowych.
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Gramatyka instrukcji języka C
instrukcja :
instrukcja-etykietowana
instrukcja-wyrażeniowa
instrukcja-złożona
instrukcja-wyboru
instrukcja-powtarzania
instrukcja-skoku
instrukcja-etykietowana :
identyfikator : instrukcja
case wyrażenie-stałe : instrukcja
default : instrukcja
instrukcja-wyrażeniowa :
wyrażenieopc ;
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Gramatyka instrukcji języka C - część druga
instrukcja-złożona :
{ lista-elementów-blokuopc }
lista-elementów-bloku :
element-bloku
lista-elementów-bloku element-bloku
element-bloku :
deklaracja
instrukcja
instrukcja-wyboru :
if ( wyrażenie) instrukcja
if ( wyrażenie) instrukcja else instrukcja
switch ( wyrażenie) instrukcja
Marek Piotrów - Wykład 5 Kurs C z elementami C++
Instrukcje języka C Definicja gramatyki bezkontekstowej
Gramatyki języków programowania Gramatyka instrukcji języka C
Gramatyka instrukcji języka C -część trzecia
instrukcja-powtarzania :
while ( wyrażenie) instrukcja
do instrukcja while ( wyrażenie) ;
for ( wyrażenieopc ; wyrażenieopc ; wyrażenieopc)
instrukcja
for ( deklaracja wyrażenieopc ; wyrażenieopc) instrukcja
instrukcja-skoku :
goto identyfikator ;
continue ;
break ;
return wyrażenieopc ;
Marek Piotrów - Wykład 5 Kurs C z elementami C++


Wyszukiwarka

Podobne podstrony:
BD Wyk05 TK
wyk05

więcej podobnych podstron