Loop nei problemi reali [chiuso]

-1

Sto imparando C come primo linguaggio di programmazione. Sono confuso su come funzionano i loop nella vita reale. Nella programmazione ogni funzione ha una ragione.

example - if / else statements sono usati se abbiamo delle condizioni. Nesting if / else statements vengono usati se abbiamo condizioni all'interno di una condizione (più condizioni).

Farò del mio meglio per rispondere a questa domanda usando un problema reale. Tendo a capire meglio usando Facebook come esempio.

Supponiamo che un utente stia registrandosi per Facebook. Non vogliamo che gli utenti si iscrivano per età inferiore a 13 anni. Se l'età degli utenti è inferiore a 13, dovrebbe terminare la pagina di registrazione e fornire una motivazione che dice "Scusa, sei troppo giovane". Usiamo se / else dichiarazione dietro la situazione? Per favore correggimi se sbaglio.

Ora, i loop vengono utilizzati per ridurre il programma / l'applicazione. Qual è l'analogia della vita reale dietro a questo? Usando Facebook come esempio.

Può 'News Feed' essere un strong esempio di utilizzo di Loops?

    
posta Dylan Cole 25.04.2011 - 14:12
fonte

9 risposte

13

Usando Facebook come esempio. Clicca per vedere la tua lista di amici. Ognuno ha un numero variabile di amici, quindi è necessario un codice per iterare su ciascun amico per visualizzare la sua foto, il nome e il collegamento del profilo. Un principiante potrebbe tentare di ottenere ciò attraverso la programmazione di copia / incolla:

show_friend($user->friends[0]);
show_friend($user->friends[1]);
show_friend($user->friends[2]);
// and so on, and on, and on

Oppure potresti usare un ciclo for:

foreach(var $friend in $user->friends) {
  show_friend($friend);
}
    
risposta data 25.04.2011 - 14:21
fonte
4

Per favore, leggi molto attentamente.

link

"Per soddisfare queste obiezioni, introduciamo un connettivo ripetitivo che, sempre per ragioni storiche, è scritto in due parti" while ... do ". Utilizzando questo connettivo possiamo scrivere l'algoritmo:"

Quello che segue è un ciclo di vita reale. Spiegato in dettaglio.

    
risposta data 25.04.2011 - 14:54
fonte
0

Prendi ad esempio taggando i tuoi amici quando carichi foto. Quello che stai facendo è iterare su una raccolta di foto e fare qualcosa su ognuna di esse.

    
risposta data 25.04.2011 - 14:20
fonte
0

Can 'News Feed' be a strong example of using Loops?

Spero di no. Se sta tracciando i dati da un database, dovrebbe utilizzare la logica non basata su set di cicli.

    
risposta data 25.04.2011 - 16:06
fonte
0

I'm learning C as my first programming language.

Mi dispiace così tanto. C è un ottimo linguaggio per molte applicazioni, ma l'insegnamento non è uno di questi.

Per quanto riguarda il modo in cui i loop dovrebbero essere usati per un'applicazione in stile Facebook, sarebbe principalmente per cose come visualizzare una sequenza di voci, come il tuo elenco di amici o persone che potresti conoscere. Dovresti recuperare l'elenco di amici dal database in una sorta di elenco o struttura di array, quindi utilizzare un ciclo per scorrere l'elenco e generare l'HTML per la visualizzazione, qualcosa di simile

Friend *friendList = getFriends(); 
size_t i;

for (i = 0; friendList[i] != NULL; i++)
{
  generateHtmlFor(friendList[i]);
}

o alternativamente

i = 0;
while (friendList[i] != NULL)
{
  generateHtmlFor(friendList[i++]);
}

Non che il codice sopra sia simile al vero codice di Facebook. Sono abbastanza sicuro che Facebook non sia scritto in C.

Logicamente, dovresti usare un ciclo for per scorrere su una sequenza finita di elementi (come in un array), mentre dovresti usare un ciclo while per iterare mentre una condizione era vera (e un ciclo do-while per eseguire la sequenza almeno una volta e continuare ad essere eseguita mentre la condizione era vera). C tipo di sfocato la linea tra for e while strutture del ciclo, e ci sono posti come questo in cui è possibile utilizzare uno dei due ugualmente bene. Sappiamo che l'elenco è finito, ma non sappiamo quanto sia lungo (non si può sapere da un puntatore da solo quanti elementi ci sono nella sequenza), quindi usiamo un protocollo in cui l'ultimo elemento nell'elenco deve essere impostato su NULL.

    
risposta data 25.04.2011 - 16:37
fonte
0

In genere, il do / loop verrebbe utilizzato nei casi in cui non si dispone necessariamente di un conteggio. Supponiamo, ad esempio, che tu abbia una collezione in cui ti sposti, ma quella raccolta può essere aggiunta (o rimossa da) in qualsiasi momento.

Possibile scenario di vita reale - una sorta di applicazione di auto-lettura che legge tutti i nuovi messaggi ad alta voce, passando al messaggio successivo una volta letto.

In questo caso, un for / next su un indice del conteggio originale non otterrebbe nessun nuovo messaggio che viene aggiunto. Una volta colpito, il conteggio originale termina. Inoltre, se è stata fornita l'abilità di rimuovere un messaggio precedentemente inviato, il for / next fallirebbe, perché dovresti provare a iterare a un messaggio che non esiste più (indice fuori limite).

Un Do / Loop, tuttavia, può calpestare ognuno di questi e lasciarlo con grazia quando non è rimasto nulla da mostrare.

fare mentre ci sono più messaggi     leggi il messaggio ciclo continuo end

Mi dispiace, non riesco a pensare ad un esempio migliore al momento.

    
risposta data 25.04.2011 - 16:41
fonte
0

Considera ogni sequenza di eventi nella tua vita che si ripetono e vedrai un esempio di loop. Ad esempio, gli autobus nei sistemi di trasporto tendono ad essere un esempio di un anello in cui l'autobus gira intorno e intorno. Un altro esempio potrebbe essere considerare un bancomat in cui mentre si stanno effettuando transazioni, il software della macchina è in un ciclo per elaborare la transazione dopo la transazione fino a quando non si riconosce che non si ha più nulla da fare.

Un altro esempio potrebbe essere quello di prendere in considerazione la cottura di una dozzina di hot dog dove probabilmente ci saranno alcuni compiti in questo che vengono ripetuti se si documentano i passaggi e quindi si semplifica l'algoritmo se si volesse insegnarlo ad un'altra persona.

Per dare un esempio specifico di Facebook, considera come Facebook aggiorna le richieste di amicizia / messaggi / notifiche nella parte superiore della pagina. In genere, si utilizza un ciclo poiché non si desidera richiedere costantemente un aggiornamento, ma si desidera che il browser controlli periodicamente un aggiornamento.

    
risposta data 25.04.2011 - 16:53
fonte
0

Una condizione if può essere pensata come un ciclo degenerato. Per illustrare questo e altri fondamenti del ciclo, offro questo fantastico video: Prime Factors Kata (Annotated) . Non è Facebook, ma sono sicuro che sarai in grado di capire cosa sta succedendo.

    
risposta data 25.04.2011 - 19:11
fonte
0

Ci sono, incluso questo, 10 risposte su questa pagina mentre pubblico. Quindi, come li visualizzeresti?

if (answerCount >= 1) displayAnswer (1);
if (answerCount >= 2) displayAnswer (2);
if (answerCount >= 3) displayAnswer (3);
if (answerCount >= 4) displayAnswer (4);
if (answerCount >= 5) displayAnswer (5);
if (answerCount >= 6) displayAnswer (6);
if (answerCount >= 7) displayAnswer (7);
if (answerCount >= 8) displayAnswer (8);
if (answerCount >= 9) displayAnswer (9);
if (answerCount >= 10) displayAnswer (10);
if (answerCount >= 11) displayAnswer (11);
if (answerCount >= 12) displayAnswer (12);

Quindi, come visualizzeresti una pagina con 13 risposte? Come visualizzeresti una pagina con 100 risposte? Ecco dove usi un ciclo.

    
risposta data 25.04.2015 - 22:08
fonte

Leggi altre domande sui tag