• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyrażenia a instrukcje? Pętle

VPS Starter Arubacloud
0 głosów
3,022 wizyt
pytanie zadane 13 sierpnia 2015 w C i C++ przez Dundersztyc Nowicjusz (210 p.)
Cześć.

Spotkałem się dzisiaj z pojęciami wyrażenia i instrukcji, nie jestem do końca pewny czy prawidłowo je rozumuje, prosiłbym o ewentualne poprawki, nakierowanie.

Z tego, co zrozumiałem, to wyrażenia, nazywamy jakąs wartością, lub operacją arytmetyczną z wartościami, naprzykład 10+20, to wyrażenie wartości 30.

Dowiedziałem się również, że wyrażenie różni się od zwykłej instrukcji po prostu średnikiem. Czyli dajmy na to:

A = 25+50 - To wyrażenie? Jeśli tak, to żeby zainicjalizować tę zmienną, muszę zadeklarować to jako instrukcja?

A = 25+50; - To instrukcja, która wykorzystuje wyrażenie?

Dodatkowo, obiło mi się o uszy, takie stwierdzenie jak efekty uboczne, przy stosowaniu wyrażeń, czyli zmiana wartośći dla dannej zmiennej, tak to mam rozumować?

Dobra, ostatnią kwestią której nie do konca rozumiem, jest sprawa również związana z wyrażeniami, tylko tym razem w pętli, mianowicie:

Mamy pętlę:

For (int P = 1; P < 5; P++)

Mam rozumieć to tak, że:

Int P = 1; - Jest instrukcją, która wykorzystuje wyrażenia?

P < 5; - Jest po prostu instrukcją?

P++ - Jest po prostu wyrażeniem?

Czy cała treść sterująca - (Int P = 1; P < 5; P++) Jest jendym wielkiem wyrażeniem?

Pozdrawiam.

6 odpowiedzi

+2 głosów
odpowiedź 13 sierpnia 2015 przez Sebastian Fojcik Nałogowiec (43,020 p.)
edycja 3 grudnia 2015 przez Sebastian Fojcik
 
Najlepsza

Każda instrukcja jest zakończona średnikiem + pętle, switche, ify (to są wtedy tzw. instrukcje sterujące)..... natomiast wyrażenie musi posiadać jakąś wartość.
Operacja jest wtedy, gdy występuje jakiś operator. Przykładowe operatory:
= operator przypisania
== operator porównania
++ operator inkrementacji
&& operator iloczynu logicznego (koniunkcji)

Wiedzę opieram o książkę J. Grębosza, Symfonia C++

---------------------------------------------------------------------------------------------

int i = 0;
i = 0 --> operacja przypisania
int i = 0; --> (jedna) instrukcja
i = 0 --> wyrażenie, bo każde przypisanie samo w sobie jest wyrażeniem mającym taką samą wartość, jaka jest przypisywana. Czyli:
(i = 5) <-- ten nawias ma wartość 5

---------------------------------------------------------------------------------------------

5 < 3 --> operacja porównania
(5 < 3) --> wyrażenie, nawias ma wartość false

---------------------------------------------------------------------------------------------

P++ --> operacja postinkrementacji. To również jest wyrażeniem, lecz jest jedna znacząca różnica. O tym zaraz.

---------------------------------------------------------------------------------------------

int P = 0;
po wpisaniu: if( P++ == 0 ), otrzymamy TRUE (postinkrementacja, zwiększenie o jeden następuje na zakończenie instrukcji, ewentualnie można posłużyć się nawiasem)
po wpisaniu if( ++P == 0 ), otrzymamy FALSE (preinkrementacja, najpierw zwiększamy(++), a potem porównujemy(==). Trzeba też patrzeć na priorytety operatorów)

---------------------------------------------------------------------------------------------

Teraz ważna rzecz o warunkach. Przeczytaj to uważnie i zastanów się dlaczego tak jest.
if( a > b ) ---> instrukcja warunkowa
( a>b ? x : y ) ---> wyrażenie warunkowe
Możliwe, że jeszcze nie poznałeś jedynego trzyargumentowego operatora ?: ale tworzysz nim wyrażenie, które jako całość przyjmie wartość x lub y, zależnie od warunku (a>b).

---------------------------------------------------------------------------------------------

Oczywiście int P = 10 + 8; --> operacja inicjalizacji, instrukcja, (10 + 8) - wyrażenie o wartości 18,
(P = 10 + 8) ---> jako całość, jest to również kolejne wyrażenie o wartości 18.

---------------------------------------------------------------------------------------------

Pętla for: for( int i = 0; i < 10; i++), na czynniki pierwsze:
for() --> instrukcja
int i = 0; --> instrukcja (definicja + inicjalizacja, czytaj: utworzenie i wpisanie wartości startowej)
i = 0 --> operacja przypisania
( i = 0 ) --> wyrażenie o wartości 0. Dałem w nawias, aby lepiej to sobie zobrazować.
i < 10 --> operacja porównania
( i < 10 ) --> wyrażenie o jakiejś wartości (true lub false)
i++ --> operacja postinkrementacji
i++ --> i teraz mozna debatować, czy to jest wyrażenie? Otóż jest, ale specyficzne. Wyrażenie to przyjmuje wartość, lecz dopiero przy opuszczaniu tej instrukcji. Czyli:
int i = 0;
i++;   <--- to jest wyrażenie, lecz ma wartość 0! O tym należy pamiętać.
i < 10; --> zakończone średnikiem. Czy jest to instrukcja? Czysto teoretycznie tak, ale ktoś kiedyś powiedział: "Chcąc poznawać coraz to dokładniejsze szczegóły, w pewnym momencie okaże się, że wszystko jest brzydkie.". Po prostu nie zawsze należy siłą starać się nazwać najdrobniejszy element.

---------------------------------------------------------------------------------------------

Kto pyta i uzyskuje odpowiedź, czuje się pewniej w tym co robi :-)
Pozdrawiam.
 

komentarz 13 sierpnia 2015 przez Dundersztyc Nowicjusz (210 p.)
Serdecznie dziękuje za tak szybką i skuteczną pomoc. W swoim poście wytłumaczyłeś wszystko tak, jak chciałem. Oczywiśćie, wszystkie pozostałe podpowiedzi z Waszej strony były również bardzo pomocne i jeszcze raz bardzo za nie dziękuje.

Pozdrawiam.
+2 głosów
odpowiedź 13 sierpnia 2015 przez nowyfolder Mądrala (7,250 p.)
edycja 13 sierpnia 2015 przez nowyfolder

Wyrażenie to kombinacja operatorów i operandów. Kazde wyrażenie ma wartość, którą można gdzieś przypisać, podstawić do funkcji, itd.
Np:

4
-6
4+21
a*(b + c/d)/20
q = 5*2
x = ++q % 3
q > 3

Instrukcja to polecenie wydane komputerowi, jest to między innymi każde wyrażenie zakończone średnikiem, np:

nogi = 4;
8;
3 + 44;
x = 25;
sqrt(4);

Jak widac nie każda instrukcja ma sens, program wyliczy wartość 3 + 44(normalny kompilator raczej da warning, albo wyrzuci tą instrukcję z programu), ale nic z tym nie zrobi.


Efekt boczny to modyfikacja obiektu danych lub pliku, czyli jakaś zmiana.

Co do tego kodu:

For (int P = 1; P < 5; P++) - Instrukcja pętli for

int P = 1; - Instrukcja przypisania

P < 5 - Wyrażenie

P++ - Wyrażenie

 

Na podstawie Stephen Prata - Szkoła programowania. Język C

+1 głos
odpowiedź 13 sierpnia 2015 przez Szykem2 Nałogowiec (29,510 p.)
Pytanie niby banalne, a jak się głębiej zastanowić to ciekawe i całkiem skomplikowane.

Ja rozumiem ten temat tak: Wyrażenie to konkretna operacja np operacje arytmetyczne, operacje bitowe. Wyrażenia proste tylko symbloizuje daną wartość nie wykonuje żdnych operacji(wartośc), a wyrażenia skomplikowane np funkcja abs(), która też tylko symbolizuje wartość modułu ale nic z tym faktem nie robi.

Instrukcja natomiast to wyrażenie zakończone średnikiem. Instrukcja złożona czyli blok, jest to jedna lub więcej instrukcji prostych.

Instrukcjie: =, wszystkie pęlte, break, continue, return, switch, if
komentarz 3 grudnia 2015 przez adrian17 Ekspert (344,100 p.)
W zasadzie to nie jest nic do samodzielnego kombinowania ani analizowania - język C++ dokładnie definiuje co jest wyrażeniem (expression), a co jest "instrukcją" (nie znoszę tego tłumaczenia) (statement), trzeba tylko się zagłębić w standard.
+1 głos
odpowiedź 13 sierpnia 2015 przez Lukasz Bywalec (2,320 p.)
W sumie pierwszy raz sie nad tym zastanawiałem. nie robi to wiekszej róznicy ale jeżeli autor chce mieć odpowiedź to musi jąuzyskać bo nie zaśnie ;) przynajmniej ja tak mam. Każdy rozumie to na swój sposób tak mi się wydaje
+1 głos
odpowiedź 13 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)

Instrukcja to zbiór wyrażeń.

Program jest tworzony jako zbiór różnych instrukcji. Instrukcja może zawierać wewnętrzne komponenty (np. wyrażenia).

 

–1 głos
odpowiedź 13 sierpnia 2015 przez Lukasz Bywalec (2,320 p.)
Wyrazenie do bardziej działania matematyczne a instrukcje to rzeczy związane z informatyką czyli każda pojedyńcza linijka kodu

Podobne pytania

0 głosów
2 odpowiedzi 151 wizyt
pytanie zadane 12 lutego 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
0 głosów
1 odpowiedź 150 wizyt
pytanie zadane 20 listopada 2016 w C i C++ przez ka-karola Początkujący (290 p.)
0 głosów
0 odpowiedzi 158 wizyt
pytanie zadane 19 grudnia 2017 w C i C++ przez niezalogowany

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...