wyklad nr 7 23 xi


POLITECHNIKA WARSZAWSKA
POLITECHNIKA WARSZAWSKA
Instytut Automatyki i Robotyki
Instytut Automatyki i Robotyki
ZASADY PROGRAMOWANIA KOMPUTERÓW
ZASADY PROGRAMOWANIA KOMPUTERÓW
Język programowania: C/C++
Język programowania: C/C++
Środowisko programistyczne: Builder C++ 6.0
Środowisko programistyczne: Builder C++ 6.0
Wykład 7 : Pliki - przykłady. Funkcje.
Wykład 7 : Pliki - przykłady. Funkcje.
Przykład 1  Plik jako zbiór znaków
Przykład 1  Plik jako zbiór znaków
Dany jest plik  znaki.txt , zawierający ciąg znaków zakończony znakiem  ? . Wydrukować
trzeci od końca znak, będący literą.
ALGORYTM z3 z2 z1
z3 z2 z1 z ( gdy z jest literą )
#include
do {
#include
dane >> z; // wczytaj znak z pliku
#include
z = toupper(z);
using namespace std;
if (z>='A' && z<='Z') { // jeśli jest literą
z3=z2;
int main() {
z2=z1;
char z, z1, z2, z3;
z1=z;
z3=z2=z1=' ';
}
ifstream dane("znaki.txt");
}
while (z !='?');
dane.close();
toupper(z)  zamienia małe litery na duże
cout << "trzeci od konca: " << z3 ;
getchar();
tolower(z)  zamienia duże litery na małe
return 0;
}
Przykład 2  Plik jako zbiór wierszy
Przykład 2  Plik jako zbiór wierszy
Z pliku "dane.txt" przepisać do pliku "wyniki.txt" co najwyżej n ostatnich wierszy (n -
stała). UWAGA: jeśli w pliku będzie mniej niż n wierszy, należy przepisać je wszystkie.
ALGORYTM
getline (dane, wiersz); // wczytaj pierwszy wiersz
#include while (!dane.eof()) {
licz++;
#include
if (licz#include
a[licz] = wiersz;
using namespace std;
else {
const int n=10;
for (i=0; iint main( ) {
a[i] = a[i+1]; // to się wykonuje w pętli for i
int i;
a[n-1] = wiersz; // a to już jest poza pętlą for i
string a[n];
}
string wiersz;
getline (dane, wiersz); // wczytaj kolejny wiersz
ifstream dane ("dane.txt");
}
ofstream wyniki ("wyniki.txt");
for (i=0; i wyniki << a[i]< for (i=0; i // dodając znak przejścia do nowej linii
a[i] = "";
dane. close (); wyniki. close ();
return 0;
int licz=-1;
}
Przykład 3  Plik jako zbiór wartości liczbowych
Przykład 3  Plik jako zbiór wartości liczbowych
int main() {
Dany jest plik tekstowy "wsp.txt "
const int n=100;
zawierający współrzędne (x,y) dowolnej
Tpunkt punkty[n], pkt; // tablica rekordów
liczby punktów. Wydrukować współrzędne
int lp=0; // licznik początkowy
n-tego od końca punktu (n  stała).
int lc=0; // licznik cykliczny
ifstream dane ("wsp.txt");
dane >> pkt.x >> pkt.y; // pierwsze czytanie
while (! dane. eof()) {
if (lpBufor cykliczny
punkty [lp]=pkt;
lp++;
}
else {
ostatnio wpisany
punkty [lc]=pkt;
punkt
lc++;
if (lc>n-1) // gdy bufor się zapełni
n- ty od końca punkt
lc=0; // wracamy na początek
}
dane >> pkt.x >> pkt.y; // czytanie w pętli
#include
}
#include
dane. close();
#include
if (lp< n)
#include
cout<<"za malo punktow \n";
using namespace std;
else
struct Tpunkt {
cout << punkty[lc]. x << " " << punkty[lc]. y;
float x;
getchar();
float y;
return 0;
};
}
Funkcje
Funkcje
" Cel stosowania funkcji:
" Podział problemu na prostsze
" Czytelność programów
" Unikanie powtórzeń, wielokrotne wykorzystanie kodu
PRZYKAAD: Do wektorów n- elementowych wczytać dane następująco:
- do wektora a - wartości nie większe niż 5;
- do wektora b - wartości nie większe niż 8;
- do wektora c - wartości nie większe niż -3;
Pozostałe wczytywane dane pomijać.
int main () {
const int n=4;
int a[n], b[n], c[n], i;
for (i=0; i cin >> a[i];
} while (a[i] > 5);
for (i=0; i cin >> b[i];
} while (b[i] > 8);
for (i=0; i cin >> c[i];
} while (c[i] > -3);
// ........
return 0;
}
Przykład  program z dwiema funkcjami
Przykład  program z dwiema funkcjami
...
using namespace std;
ta stała jest dostępna
const int n=7;
w każdej funkcji
void czytaj ( int x[ ], int g ) {
int i;
for (i=0; i do {
definicja funkcji czytaj
cout<< podaj wartosc nie wieksza niż <typ funkcji
cin >> x[i];
} while (x[i]>g);
}
nazwa funkcji
int main ( ) {
int a[n], b[n], c[n];
3-krotne
czytaj (a , 5);
wywołanie
funkcji czytaj (b , 8);
definicja funkcji main
czytaj
czytaj (c , -3);
...
return 0;
}
void - tzw. typ pusty (brak typu)
Przykład  program z dwiema funkcjami c.d.
Przykład  program z dwiema funkcjami c.d.
definicja funkcji czytaj:
parametry formalne
void czytaj ( int x[ ], int g ) {
int i;
for (i=0; i do {
cout<< podaj wartosc nie wieksza niż <cin >> x[i];
} while (x[i]>g);
}
// funkcja wczytuje do jakiejś jednowymiarowej tablicy x typu int
// n wartości nie większych niż jakaś wartość g typu int.
wywołania funkcji czytaj:
int a[n], b[n], c[n];
...
czytaj (a , 5); // funkcja wykonuje się dla danej tablicy a
czytaj (b , 8); // funkcja wykonuje się dla danej tablicy b
czytaj (c , -3); // funkcja wykonuje się dla danej tablicy c
parametry aktualne
Definicja funkcji
Definicja funkcji
FUNKCJA - ciąg instrukcji zapisany pod jakąś nazwą i wywoływany za
pomocą tej nazwy w programie.
FUNKCJA wykonując ciąg instrukcji wyznacza jedną wartość i zwraca ją
poprzez nazwę funkcji. Typ zwracanej wartości będziemy nazywali w skrócie
typem funkcji.
Aby funkcja zwróciła jakąś wartość, potrzebna jest instrukcja return, która
przerywa natychmiast działanie funkcji przekazując wynik do miejsca
wywołania funkcji.
Definicja FUNKCJI
nagłówek
typ_funkcji nazwa_funkcji ( lista parametrów formalnych )
funkcji
{
tu ciąg deklaracji, definicji i instrukcji
ciało
funkcji
return w ; // w - wartość zwracana przez funkcję
(treść
// w może być zmienną, a nawet wyrażeniem
funkcji)
}
W nagłówku funkcji może nie występować lista parametrów formalnych;
nawiasy ( ) jednak muszą pozostać.
Typ wartości zwracanej przez funkcję
Typ wartości zwracanej przez funkcję
Typ wyniku funkcji może być jednym z następujących:
" typem prostym (int, double i inne typy liczbowe, char, bool)
" typem napisowym (string)
" typem wskaznikowym
" typem rekordowym
" typem pustym (void), który oznacza, że funkcja nie zwraca wyniku, więc
jej typ nie jest określony. Taka funkcja służy więc tylko do wykonania
ciągu instrukcji.
W każdym programie C/C++ musi
int main ( ) {
być funkcja main (główna).
void drukuj ( ... ) {
...
...
W języku C++ funkcja main jest
return 0;
}
zawsze typu int.
}
double suma ( ) {
...
Jeśli funkcja jest typu void, to instrukcja
return s1+s2;
return w ciele funkcji nie jest konieczna.
}
To wyrażenie musi być typu double
lub dać się przekonwertować na
double
Wywoływanie podprogramów
Wywoływanie podprogramów
Wywołanie funkcji (podprogramu):
" zawiesza wykonanie programu głównego (funkcji wywołującej)
" następuje przejście do realizowania instrukcji określonych przez
definicję funkcji
" wznowienie wykonywania funkcji wywołującej następuje w jednym
z dwu przypadków:
po napotkaniu instrukcji return
po wykonaniu wszystkich instrukcji zawartych w ciele funkcji
(jeśli funkcja jest typu void i jej treść nie zawiera żadnej instrukcji return)
Wywołanie funkcji
Wywołanie funkcji
Wywołanie FUNKCJI
nazwa_funkcji ( lista parametrów aktualnych )
" Listę parametrów aktualnych podaje się wówczas, jeżeli w definicji funkcji
występowała lista parametrów formalnych
" Funkcje wywołuje się w wyrażeniach, w sposób analogiczny jak wywołuje się
funkcje standardowe.
Przykłady:
x = dlugosc (4.1, 5.3 ,8.5, 1.0);
cout << suma (a, 10);
if ( f (x,3) >5 ) licz++;
" Funkcje można wywoływać również jak zwykłe instrukcje - co ma sens wtedy,
jeśli nie jest potrzebny zwracany przez nie wynik, a funkcja ma za zadanie tylko
wykonać ciąg instrukcji; najczęściej wywołuje się w ten sposób funkcje typu
void.
Przykłady:
policz ( );
czytaj ( a, 5 );
rysuj ( 50,  *  );
 
 
 
Przykład 1
Przykład 1
Wydrukować sumę wartości elementów wszystkich tablic a, b i c z poprzedniego
przykładu.
const int n=20;
void czytaj ( int x[ ], int g ) {
for (int i=0; idefinicja
do {
funkcji czytaj
cout<< podaj wartosc nie wieksza niż <cin >> x[i];
} while (x[i]>g);
}
int suma ( int x [ ]) {
int i, pom=0 ; definicja
for (i = 1; i< n; i++) pom = pom + x[i]; funkcji suma
return pom;
}
int main( ) { int a[n], b[n], c[n];
czytaj( a , 5 ); czytaj( b , 8 ); czytaj( c , -3 );
cout << suma(a)+ suma(b)+ suma(c);
definicja
return 0;
funkcji main
}
Najpierw trzeba zdefiniować funkcje czytaj i suma, a dopiero
potem można zdefiniować funkcję main, która je wywołuje.
Przykład 1a
Przykład 1a
Jeżeli jednak chcemy, by funkcja main była zdefiniowana jako pierwsza, wcześniej trzeba
umieścić deklaracje funkcji (nagłówek + średnik), które są w ciele funkcji main wywoływane.
const int n=20;
deklaracja funkcji czytaj
void czytaj ( int x[ ], int g );
deklaracja funkcji suma
int suma ( int x [ ]) ;
int main( ) { int a[n], b[n], c[n];
czytaj( a , 5 ); czytaj( b , 8 ); czytaj( c , -3 );
definicja
cout << suma(a)+ suma(b)+ suma(c);
funkcji main
return 0;
}
void czytaj ( int x[ ], int g ) {
for (int i=0; i do {
definicja
cout<< podaj wartosc nie wieksza niż <funkcji czytaj
cin >> x[i];
} while (x[i]>g);
}
int suma ( int x [ ]) {
int i, pom=0 ;
for (i = 1; i< n; i++) pom = pom + x[i];
definicja
return pom;
funkcji suma
}
Przykład 2  funkcja drukowania tablicy dwuwymiarowej
Przykład 2  funkcja drukowania tablicy dwuwymiarowej
tak podajemy informacje o tablicach dwuwymiarowych -
tylko liczba kolumn jest wbudowana w funkcję
const int w=5, k=7;
void pisz_tab (double x[ ][k], string tytul) {
cout << tytul << endl; // drukuj napis objaśniający
cout << fixed<< setw (8)<< setprecision(2); // ustaw format drukowania
for (int i = 0; i < w; i++) { // dla każdego wiersza
for (int j = 0; j < k; j++) // dla każdej kolumny w danym wierszu
cout << x [i] [j]; // wypisz wartość elementu
cout << endl; // przejdz do nowej linii - po wydrukowaniu całego wiersza
}
} // koniec definicji funkcji
// Funkcja pisz_tab drukuje wierszami jakąś tablicę x typu double, o k kolumnach,
// poprzedzając to wydrukowaniem jakiegoś napisu tytul.
double a[w] [k], T [w] [k] ;
...
pisz_tab (a , "oto tablica a");
pisz_tab (T , "zawartosc tablicy T");


Wyszukiwarka

Podobne podstrony:
wyklad nr 5 2 xi
wyklad nr 8 0 xi
wyklad nr 6  xi
ZARZĄDZANIE WARTOŚCIĄ PRZEDSIĘBIORSTWA Z DNIA 26 MARZEC 2011 WYKŁAD NR 3
Zarzadzanie strategiczne wyklad nr 2
wyklad nr 2 PK
Wykład nr 6 Decyzja
wyklad nr 4 & x
SS wyklad nr 6 ppt
Sem 4 Wykład nr 9 Interakcje 2013
AUDYT WEWNĘTRZNY Z DNIA 26 LUTY 2011 WYKŁAD NR 1
WYKŁAD NR 5 HYDRAULIKA i HYDROLOGIA (PDF)
wykład nr 6
Wyklad nr 8
WYKŁAD NR 3
Wykład nr 3
OP wyklad nr 4
ET DI2 ObwodySygnaly2 wyklad nr 9 10 czworniki aktywne
Prezentacja Wykład nr 5

więcej podobnych podstron