Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pytanko ma temat rozdziału XXIII a konkretnie funkcji if()

Ostatnio zmodyfikowano 2008-07-31 16:39
Autor Wiadomość
invisiblekid
Temat założony przez niniejszego użytkownika
Pytanko ma temat rozdziału XXIII a konkretnie funkcji if()
» 2008-07-30 19:35:53
W rezdziale XXIII (Obsługa plików) znalazłem taki kod (sam koniec rozdziału):
C/C++
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int main()
{
    fstream plik;
    plik.open( "dane.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;
   
    getch();
    return( 0 );
}

I mam pytanie dotyczące funkcji if w zamieszczonym kodzie: dlaczego wartości zmiennych bool good(); i bool eof(); nie są porównane do niczego (czyżby domyślną wartością było porównanie do "true") i co oznacza zapis
while( !plik.eof() )
a konkretnie ten wykrzyknik.

BTW: pytanie z innej beczki: co to jest bufor? Bo nie jestem pewien czy interpretuje to właściwie.
Będę wdzięczny za odpowiedzi. TIA. :)
Paweł
P-1096
Proxym
» 2008-07-30 20:50:58
Na przykładzie

jeśli mam np że funkcja good zwróci jeden (1) jest to równo znaczne z Prawdą (true) więc program zrobi to co jest w warunku. ale jeśli  funkcja wygląda if(!good()) to jeśli good() zwróci 1 to będzie równo znaczne z 0 (false) więc warunek nie zostanie wykonany. Używam tego operatora intulicyjnie jeśli zrobiłem błąd proszę o poprawienie mnie.
P-1097
DejaVu
» 2008-07-30 21:18:24
Zgadza się, ale rozszerzę nieco informację na ten temat:

Załóżmy, że mamy przykład:
C/C++
int wartosc = 123;
if( wartosc )
{
    //...
}
Warunek ten zostanie spełniony.

Pytanie jakie należy tu postawić to "Dlaczego"?

Odpowiedź jest prosta jeśli zna się jeden ze standardów, który brzmi mniej więcej tak: wynik warunku if będzie prawdziwy, gdy wartość zmiennej jest różna od zera, natomiast fałszywy gdy wartość zmiennej jest równa zeru.

Znak wykrzyknika jest negacją, czyli jeśli w przykładzie funkcja eof() zwracała false, to negacją false jest true więc warunek pętli while jest spełniony i wykonuje się blok kodu.
P-1099
invisiblekid
Temat założony przez niniejszego użytkownika
» 2008-07-31 16:25:22
OK, dzięki. Już wszystko rozumiem- nie znałem po prostu tego standardu.
Ale mam jeszcze jedno pytanko: co to jest bufor?
P-1107
DejaVu
» 2008-07-31 16:36:04
Bufor... to zazwyczaj nazwa używana do tego, aby informować programistę o tym że dane są w nim przygotowywane, a później powinny trafić gdzieś dalej, np. na ekran.

Tu masz krótką definicję:
Bufor - Obszar pamięci operacyjnej, do której wpisuje się dane w celu ich obróbki i przesłania do pamięci zewnętrznej.
Źródło: http://www.i-slownik.pl/1,199,bufor.html
P-1108
invisiblekid
Temat założony przez niniejszego użytkownika
» 2008-07-31 16:39:47
OK, thanx a lot :)
P-1109
« 1 »
  Strona 1 z 1