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

Co to są flagi ? (programowanie)

Object Storage Arubacloud
+2 głosów
11,475 wizyt
pytanie zadane 8 listopada 2017 w C i C++ przez Sic Dyskutant (8,510 p.)
Witam chciałbym uzyskać informacji co to są flagi w programowaniu jak można je wykorzystać.

Proszę o opis "na chłopski rozum", wtedy łatwiej będę mógł zapoznać się z tym co jest wypisane w internecie.

6 odpowiedzi

+5 głosów
odpowiedź 8 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)
wybrane 8 listopada 2017 przez Sic
 
Najlepsza

Flaga jest to po prostu zmienna.

Załóżmy, że masz funkcję:


int* returnNumbers(int from, int to)
{
//Blahblah
}

I załóżmy, że chcesz, aby zwróciło tylko liczby parzyste. Po co tworzyć drugą funkcję do zwracania tylko liczb parzystych, skoro można to oznaczyć flagą?

int* returnNumbers(int from, int to, bool onlyEven)
{
//Blahblah
}

A potem przy wywołaniu funkcji:

bool onlyEven = true;
int *numbers = returnNumbers (10, 20, onlyEven);

Często jest spotykane pakowanie flag w jednego integera:

// 0x01 == 1 == "00000001" 
// 0x02 == 2 == "00000010" 
// 0x04 == 4 == "00000100" 
// 0x08 == 8 == "00001000" 
// 0x10 == 16 == "00010000" 
// 0x20 == 32 == "00100000" 
// 0x40 == 64 == "01000000" 
// 0x80 == 128 == "10000000"

Jeśli spojrzysz na bity, to możesz w bardzo prosty sposób upakować bardzo dużo flag w jednym integerze. Pozdrawiam!

1
komentarz 8 listopada 2017 przez Sic Dyskutant (8,510 p.)
Każda flaga jest jedno bitowa?, można stworzyć kilka flag czy jedną o większej wartości?.
2
komentarz 8 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)
Można można, lecz najczęściej spotykane są te jednobitowe :)
1
komentarz 9 listopada 2017 przez rot18ru Bywalec (2,100 p.)
Dodam, że funkcja powinna robić tylko jedną rzecz, a użycie flagi, z góry to przekreśla.
1
komentarz 9 listopada 2017 przez CzikaCarry Szeryf (75,340 p.)
Co masz na myśli poprzez jedną rzecz? Wykonanie jednej linijki kodu?

Można też w funkcji wywołanie innych funkcji opakować w odpowiednie instrukcje warunkowe :)
+2 głosów
odpowiedź 8 listopada 2017 przez Piotr Batko Stary wyjadacz (13,190 p.)
Na pewno kojarzysz z amerykańskich filmów skrzynki na listy z takimi flagami. Listonosz wkładając list do skrzynki ustawia flagę. Kiedy wyciągasz zawartość skrzynki to "zerujesz" flagę. To właśnie od flag z amerykańskich skrzynek pocztowych przyjął się termin, o którego znaczenie pytasz.

Flaga to po prostu jednobitowa zmienna (nie wnioskuj z tego, że bool zajmuje 1 bit). Na przykład informacja o tym, czy plik jest tylko do odczytu może być przechowywana jako flaga. Można po nim pisać albo nie - jeden albo zero.
+2 głosów
odpowiedź 8 listopada 2017 przez Marchiew Dyskutant (7,690 p.)
edycja 8 listopada 2017 przez Marchiew

Flaga najczęściej jest stosowana przy zmiennych przyjmujących wartość true lub false.
Taka zmienna przyjmuje początkowość wartość podaną przez nas, a potem przy instrukcjach warunkowych możemy ją zmieniać na przeciwną , by na koniec napisać warunek czy po przejściu przez wszystkie poprzednie nadal ma początkową wartość czyli załóżmy wszystko przeszło pomyśle. np. przy wieloetapowej walidacji lub weryfikacji jakiś danych.

Oto przykład:

$flaga = true;
    
if( /* cos1 */ )
{
    $flaga = false;
}

if( /* cos2 */ )
{
    $flaga = false;
}

if( /* cos3 */ )
{
    $flaga = false;
}

if( $flaga ) // jeżeli żadna wcześniejsza instrukcja się nie spełniła to nasza $flaga nie uległa zmianie...
{
   // ... więc wykona się kod tutaj
}

 

+1 głos
odpowiedź 9 listopada 2017 przez Piotr Poźniak Początkujący (380 p.)
Jak na chłopski rozum, to tutaj: https://programowaniejestlatwe.pl/artykul/flaga
0 głosów
odpowiedź 8 listopada 2017 przez Strategiusz Dyskutant (9,220 p.)

Być może chodzi tu o zmienne typu bool.

Zwłaszcza gdy ma wartość true.

0 głosów
odpowiedź 8 listopada 2017 przez m4sk1n Pasjonat (16,750 p.)
Może chodzi i flagi kompilatora?

Podobne pytania

0 głosów
1 odpowiedź 464 wizyt
pytanie zadane 14 czerwca 2021 w C i C++ przez warzywko13 Użytkownik (840 p.)
0 głosów
0 odpowiedzi 229 wizyt
pytanie zadane 26 marca 2021 w C i C++ przez warzywko13 Użytkownik (840 p.)
0 głosów
0 odpowiedzi 235 wizyt
pytanie zadane 11 października 2018 w Mikrokontrolery przez Spektral Początkujący (410 p.)

92,565 zapytań

141,416 odpowiedzi

319,599 komentarzy

61,950 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...