Ciao e Benvenuto. In questa conferenza, voglio parlare del processo
decisionale, in particolare delle dichiarazioni if.
Quindi il linguaggio di programmazione
c fornisce una capacità decisionale generale sotto forma di un'istruzione if.
Sappiamo quali sono le dichiarazioni fino a questo punto.
Quindi ora aggiungeremo solo una parola chiave davanti ad essa e la inseriremo anche tra parentesi.
Quindi quello che sembra è qualcosa del genere.
Se la parola chiave e quindi all'interno delle parentesi sinistra e
destra hai qualcosa chiamato espressione.
Sappiamo cosa sono le espressioni e la differenza tra le affermazioni.
Quell'espressione deve essere valutata come vero o falso.
E poi hai una dichiarazione del programma.
E quindi questo è il tipo più semplice di istruzione if.
Quindi se dici espressione e poi la dichiarazione del
programma, potresti effettivamente sostituirlo con uno pseudocodice
qualcosa come se non piove, allora andrò a nuotare.
E se traduci quello pseudocodice in c, lo pseudocodice è come
una sintassi non
reale, è un modo per descrivere qualcosa in codice in lingua inglese.
E quindi se diciamo
un'istruzione if in c, tutto ciò che faresti è mettere la condizione tra parentesi, non sta piovendo.
E poi, dopo l'istruzione if, una
singola istruzione o più istruzioni.
Se hai più affermazioni, le inseriresti tra parentesi graffe.
Ma in questo
caso, abbiamo una dichiarazione. Quindi all'interno del corpo l'affermazione if è che andrò a nuotare.
Quindi non deve piovere per eseguire andrò a nuotare.
Questo è il motivo per cui è nel flusso di controllo. In realtà non stai sempre eseguendo Vado a nuotare.
Dipende dalle condizioni e se è vero o falso.
Quindi potresti saltare il codice in questo caso. Quindi non hai un processo sequenziale.
Quindi l'istruzione if viene utilizzata per stabilire
l'esecuzione di un'istruzione di programma basata su una condizione
specificata, una capacità decisionale. Quindi andrai a nuotare solo se non piove.
Eseguirai il codice nel corpo dell'istruzione if solo se non piove.
Le parentesi graffe sono necessarie per le istruzioni composte all'interno del blocco if.
Quindi, ad esempio, se dicessi se non piove, andrò a nuotare o prima di
andare a nuotare, ti metterai il costume da bagno, ti
vestirai e poi andrai a nuotare.
Allora dovresti mettere quelle parentesi graffe lì dentro.
E ancora, avremo esempi specifici per dimostrarlo.
Ma le parentesi graffe non sono necessarie se hai solo una singola istruzione, sono opzionali.
Puoi fornirli o meno.
Di solito fornisco le parentesi graffe in tutte le mie istruzioni if solo per coerenza.
Ecco un esempio di un'istruzione if comune nel linguaggio di programmazione c.
In questo caso, stiamo dichiarando due variabili, una denominata score e una denominata big.
Il punteggio è 95, grande come 90.
Qui abbiamo solo una semplice dichiarazione nel corpo
e non ha parentesi. E in pratica, stiamo dicendo che se il punteggio è maggiore
del grande, il punteggio è 95. Quindi, se 95 è
maggiore di 90, è un'espressione booleana. Valuterà vero in questo caso.
Quindi quello che verrà mostrato sullo schermo è il jackpot.
E poi abbiamo lo stesso esempio tranne che usiamo
le parentesi graffe perché abbiamo più di un'istruzione nel corpo dell'istruzione if.
Quindi, nell'esempio in basso, se il punteggio è maggiore
di grande, abbiamo una parentesi graffa sinistra per iniziare il blocco dell'istruzione if,
e abbiamo una parentesi graffa finale per terminare il blocco dell'istruzione if.
Si riferisce al corpo dell'istruzione if.
E quindi in questo caso abbiamo due affermazioni. Per prima cosa incrementeremo il punteggio di
1, quindi mostreremo la tua vittoria.
Quindi nota la differenza qui, parentesi rispetto a non parentesi.
Puoi ancora mettere le parentesi in una singola istruzione, sono opzionali.
Ma se hai più affermazioni, le parentesi sono obbligatorie.
La parentesi sinistra indica l'inizio del blocco,
la parentesi destra indica la fine del blocco.
Le istruzioni If sono piuttosto semplici quando sono solo un
singolo sollevamento Se la parola chiave è tra parentesi sinistra e destra, all'interno delle parentesi in un'espressione.
E quando le istruzioni diventano più complicate, quelle espressioni possono diventare più espressioni.
Quindi puoi iniziare a utilizzare alcuni degli operatori logici
che abbiamo appreso in termini di utilizzo di e o o.
Quindi, se il punteggio è maggiore di grande e qualcos'altro
è richiesto.
Quindi possiamo avere più domande in una singola istruzione if oppure possiamo suddividerle.
Ma questo è un semplice esempio di istruzione
if, anche in questo caso la sintassi
è piuttosto semplice, non vedi alcun punto e virgola
alla fine dell'istruzione if, l'unico alla fine di printfs.
Quindi hai solo le parentesi iniziali e finali.
Ora puoi anche aggiungere una clausola else alla tua istruzione if.
Questo è supportato da c. Quindi puoi estenderlo un po
'con una piccola aggiunta che ti consente di avere molta più flessibilità.
Quindi, ad esempio, se dicessimo se la pioggia oggi è peggiore
di quella
di ieri, prenderò il mio ombrello. Altrimenti, se non piove
come ieri, prendo la mia giacca.
Quindi l'altro sta dicendo cosa succede quando la domanda
alla risposta è falsa.
Quindi, altrimenti, prenderò la mia giacca, poi andrò a lavorare.
Quindi questo è esattamente il tipo di decisione che fornisce l'istruzione if else.
Fai qualcosa quando è vero, fai anche qualcosa quando è falso.
Quindi hai la parola chiave if, e poi tra parentesi hai la tua espressione booleana,
qualcosa che restituisce vero o falso.
Quindi hai la tua dichiarazione che viene eseguita l'istruzione uno se è vera.
Altrimenti, usi la parola chiave else.
È facoltativo, non è sempre necessario fornire l'altro. Solo se vuoi fare
qualcosa se l'espressione booleana è falsa, dici l'istruzione due.
E ancora in questo caso, non abbiamo parentesi all'interno
del corpo del blocco if o del blocco else
perché abbiamo solo singole istruzioni.
Se abbiamo più di una dichiarazione all'interno di uno di questi
corpi, dobbiamo fornire una parentesi per l'inizio e la fine.
Quindi ecco un esempio di un'istruzione else con un if.
In questo caso, determineremo se un numero è pari o dispari.
Quindi abbiamo la nostra funzione principale che è dove entriamo.
E creiamo un paio di variabili, una si chiama numero da testare, l'altra si chiama resto.
Sono entrambi di tipo int.
Li dichiariamo sulla stessa riga separandoli con virgole.
Non li abbiamo ancora inizializzati.
Nella riga di codice successiva, stamperemo un output per chiedere all'utente di inserire alcune informazioni.
Quindi usiamo la funzione scanf.
Stiamo leggendo un numero intero, quindi possiamo eseguire la percentuale i o la percentuale d.
E non stiamo leggendo una stringa o nessuna parola.
Quindi metteremo la e commerciale davanti alla variabile in cui memorizzeremo i dati.
Quindi l'utente inserirà un numero da testare.
E poi otterremo anche il resto di quello che hanno inserito per 2 perché questo ci
dirà se
qualcosa è pari o dispari o meno. Se puoi dividere un numero
per 2 e il resto è 0, significa che
è un numero pari. Altrimenti è strano.
La parte importante di questo programma è il fondo in cui stiamo usando la condizione.
Fino a questo punto è stata eseguita ogni singola riga.
Ma quando abbiamo un'istruzione if e una condizione tra parentesi, se
il resto è uguale a
zero e noterai che devi sempre usare uguale a uguale per confronto,
non usi uguale a. Ricorda, uguale è per l'assegnazione,
l'assegnazione di dati a un valore. È uguale a uguale per confrontare i numeri.
Stiamo confrontando una variabile resto con zero.
E se è zero, stamperemo anche.
Altrimenti, la parola chiave else si trova nella riga successiva, stamperemo dispari.
Noterai che non ci sono parentesi nel if o nel else perché ci sono solo singole affermazioni.
Eseguiamolo e vediamo come funziona nei blocchi di codice.
Bene, ecco il nostro programma. È descritto, come ho appena detto, esattamente allo stesso modo.
Stamperemo solo pari o dispari. Quindi andiamo avanti e costruiamo questo.
E vogliamo essere sicuri di non avere errori.
Hai un paio di line feed in più qui.
Ora, quando eseguiamo questo programma, saremo fondamentalmente in grado di avere
output per pari o dispari.
Ci chiederà il numero da testare. Inserisco 33, il che è strano.
Dirà che il numero è dispari. Quindi è un programma piuttosto semplice.
La cosa importante qui è che non stai eseguendo un determinato codice.
Stai per eseguire la riga 19, se il resto è uguale a 0.
Se non lo è, andrai effettivamente alla riga 21. E le parentesi sono ancora una volta facoltative.
Puoi metterli lì e
l'IDE eseguirà un completamento automatico per te, il che è
piuttosto carino.
Ma di nuovo, di solito mi piace aggiungerli perché sono facili e
rende il codice ancora più leggibile.
Dipende dal tuo stile di formattazione.
Ad alcune persone piace avere la parentesi all'inizio dell'istruzione else, in questo modo.
Ad alcuni piace averlo sull'altra riga, dipende da come è il tuo formato.
E in realtà, questo può essere fatto automaticamente nell'IDE formattando il codice.
Ma funziona allo stesso modo ed è quasi ancora più facile da leggere.
E se mai dovessi aggiungere più affermazioni,
le aggiungi facilmente e non devi preoccuparti di aggiungere le parentesi.
Quindi prendo l'abitudine di aggiungere parentesi.
Ancora una volta, l'altra cosa importante qui è che è uguale a uguale.
Non puoi fare uguali. Se fai uguale ed esegui il programma, vedrai
che c'è una grande differenza. Quindi un'istruzione if
else molto semplice, molto, molto utile. Eseguirai la riga 19 solo se il resto è dispari.
Altrimenti, eseguirai la riga 22.
Parliamo un po 'di più di un'altra dichiarazione if.
Quindi puoi anche avere un altro. Se è così, abbiamo imparato se, abbiamo imparato altro.
Puoi gestire un ulteriore processo decisionale complesso aggiungendo un'istruzione if alla tua clausola else.
Quindi è come fare una domanda in più.
In realtà non eseguirai qualcosa se la condizione nell'originale è falsa,
farai un'altra domanda.
Quindi dici se espressione 1,
hai del codice che verrà eseguito se è vero.
Altrimenti, Altrimenti, dici
se dopo che è
perfettamente legale. Questa è un'istruzione if all'interno di un'istruzione else.
Quindi esegui il programma due. Altrimenti, esegui qualcos'altro.
Quindi questo estende l'istruzione if da una decisione logica a due valori a una
decisione logica a tre valori.
Qui stai facendo due domande.
E se la domanda alla prima risposta è vera,
esegui l'istruzione di programma uno.
Quindi fai la tua seconda domanda, solo se la prima domanda era vera o
se la prima domanda era falsa.
E se questo è vero, allora in realtà usi un altro codice che esegui qualcos'altro.
Quindi hai essenzialmente tre rami qui, tre
righe separate di codice che possono essere eseguite o non possono essere eseguite.
Istruzione di programma 1, istruzione di programma 2 o istruzione di programma 3.
Puoi riscrivere questo codice per usare un altro if.
In questo momento if è sulla riga separata, ma in realtà puoi semplicemente fare qualcosa del
genere, if expression one fa qualcos'altro se.
Non devi metterlo su una riga separata. Può essere una singola riga
e poi puoi averne un'altra al di fuori di quella.
L'unica cosa complicata di questo è che la clausola else verrà eseguita.
E questa è la stessa cosa. Quindi questa clausola else verrà eseguita per
tutti e tre.
Quindi è un po 'confuso
nel primo esempio perché sembra che il
secondo altro venga eseguito solo se l'altro
è falso.
Ma viene davvero eseguito se anche la prima espressione è falsa.
Se avessi delle parentesi lì dentro, potresti effettivamente nidificare quelle istruzioni if.
E l'esterno, l'ultimo altro verrebbe eseguito solo in base
alla domanda del secondo se la risposta.
Entreremo nella nidificazione quando parliamo di istruzioni if annidate e cicli annidati.
Le istruzioni if annidate stanno solo mettendo un lato if e if,
e devi stare attento a dove
si trova la tua clausola else perché l'altra deve corrispondere all'ultima istruzione if.
Ecco un altro esempio in cui proveremo effettivamente a implementare la funzione di segno.
Restituiremo 1 0 negativo o 1.
Quindi questa è una valutazione a tre livelli qui.
Ciò che questo programma sta facendo nella routine principale è
che stiamo creando un paio di variabili di tipo int, numero e segno.
Chiediamo all'utente di inserire un numero e lo memorizziamo nella variabile numerica.
E se il numero è inferiore a 0, il segno sarà uguale a 1 negativo.
Altrimenti, se il numero è uguale a 0, sarà 0.
Altrimenti, se entrambi sono falsi, il suo segno sarà uguale a 1, il che significa che è positivo.
Quindi questo è un esempio di come l'altro if può essere molto utile.
E puoi avere più se. Ne vediamo solo uno lì, ma potremmo averne 100 se lo volessimo.
Altrimenti se numero è uguale a 2, altrimenti se numero è uguale a 3, altrimenti se numero è uguale a 4.
E puoi anche vedere che le parentesi non vengono utilizzate
qui, ma le parentesi verranno utilizzate se hai più affermazioni all'interno del corpo.
E quando usi le istruzioni if,
dovresti anche notare che utilizzerai molti operatori logici
e operatori di confronto e operatori relazionali.
Quindi stai usando il simbolo meno di qui. Gli operatori logici, ricorda, sono
le e commerciali. Due di questi per e
or e gli operatori relazionali sono dove stai confrontando i valori.
Quindi, quando stai facendo cose come minore o minore di uguale o maggiore di.
Questi sono usati un po 'quando stai usando numeri nelle tue espressioni di istruzione if.
Quando usi la e commerciale, in realtà stai facendo più domande.
Se questo è vero e questo è vero o se questo è vero o.
È un modo per ridurre anche altre dichiarazioni if.
Quindi potresti riscrivere questo codice qui se il numero è inferiore a 0.
E inoltre, se volessi avere
il segno, non potresti effettivamente come è adesso.
Ma se potessi inserire una e commerciale e potresti dire se il numero
è inferiore a 0 ed è uguale a 0, il
segno è negativo 1 e 0. Voglio dire che non puoi farlo in modo
specifico, ma puoi vedere come potresti aggiungere più domande qui.
Quindi avremo una sfida specifica in cui scriveremo un programma che utilizza le istruzioni if.
Questi sono alcuni buoni esempi. Ti consigliamo di inserire questi esempi nel tuo IDE e vedere cosa succede.
Ma l'altro è ancora un modo per porre più domande.
Istruzione if else annidata.
Istruzioni if l annidate significa che puoi usare un'istruzione if o un'altra if
all'interno di un'altra istruzione if o un'altra if.
Ecco perché è indicato come nidificazione.
Puoi usare più cose all'interno e puoi continuare a farlo ancora e ancora e ancora.
Non c'è limite al numero di annidamenti che non hai visto.
Quindi la sintassi è simile a questa.
Se un'espressione booleana è uguale a true,
allora al suo interno e quando fai l'annidamento, di solito, vuoi usare le parentesi.
Anche se non è necessario per singole affermazioni perché lo rende molto più leggibile.
Quindi, se l'espressione booleana 1 è vera,
allora all'interno dici se l'espressione booleana 2 è vera.
Non verrebbe effettivamente eseguito se l'espressione booleana 2 a meno che
l'espressione booleana 1 non fosse vera.
E poi all'interno del corpo dell'espressione booleana 2, dovresti eseguire il codice se è vero.
Quindi un esempio di un'istruzione if annidata sarebbe simile a questo.
Se il gioco è finito è uguale a 0 e poi all'interno se il giocatore che si muove è uguale a te, allora
hai una stampa.
La chiave qui è notare che non ci sono parentesi,
ed è un po 'più difficile da seguire. L'unico modo per seguire questo è attraverso l'indentazione
che è un'altra cosa che vuoi fare quando scrivi istruzioni if in blocchi di codice.
Devi sempre indentare il blocco perché ne facilita la lettura.
Immagina se questo non avesse
il rientro, quanto sarebbe difficile abbinare il resto e il se.
Quindi usa il rientro ma probabilmente usa anche le parentesi, le parentesi aiutano a renderlo ancora più leggibile.
E ricorda, la leggibilità è un grosso problema perché la leggibilità ti aiuta a trovare e correggere i tuoi errori molto più rapidamente.
Quindi, in questo caso, eseguiremo la tua mossa stampata sullo schermo solo se
il giocatore da muovere è uguale a u e il game over è uguale a 0.
Eseguiremo la mia mossa visualizzata sullo schermo solo se il gioco
è uguale a 0 ma il giocatore da muovere non è uguale a u.
Infine, eseguiremo il gioco finito solo se il
gioco non è uguale a 0.
Quindi abbiamo tre condizioni qui
per stampare tre diverse affermazioni.
E potresti effettivamente scrivere se il gioco è finito è
uguale a 0 e e commerciale, il giocatore che si muove è uguale a u.
Ma il problema sarebbe che la tua mossa potrebbe non essere
giusta perché devi ancora confrontare il giocatore per muoverti.
Quindi ci sono momenti in cui puoi usare la e commerciale per semplificare il
codice, ci sono momenti in cui non puoi. In questo caso, non puoi perché
il primo altro è all'interno del nidificato if.
Quindi l'annidamento è abbastanza applicabile e lo userai,
quindi familiarizza con esso. Di nuovo, la sintassi per l'istruzione if è molto semplice.
L'espressione booleana all'interno e quindi utilizzare le parentesi per le singole istruzioni.
Altrimenti, usi le parentesi.
Non usi le parentesi per i singoli stati. Altrimenti, usa le parentesi.
C'è anche un terzo tipo
di modo per porre domande nel tuo programma. Questo è chiamato operatore condizionale e di cui
abbiamo parlato quando abbiamo parlato di operatori, ma ha bisogno
di un po 'più di comprensione.
Quindi l'operatore condizionale è un operatore molto unico.
È diverso da tutti gli altri operatori in c.
La maggior parte degli operatori in c sono unari o binari.
Unario significa che gli operatori accettano un singolo argomento o un singolo operando.
Binario significa che hanno operandi su entrambi i lati.
Quindi l'operatore più è un operatore binario perché fai 5 più 3,
due operandi.
Il negativo è un operatore unario perché dici come negativo 3.
Bene, c'è una terza opzione, c'è un operatore ternario, che accetta tre operandi.
E questo è l'operatore condizionale.
Hai due simboli usati per denotare questo operatore, questo operatore condizionale.
È il punto interrogativo e i due punti.
Ed è davvero equivalente a un'istruzione if else.
Il modo in cui appare è che il primo operando è posizionato prima
del punto interrogativo, che sarebbe la condizione, l'espressione booleana negli esempi precedenti.
E poi la seconda cosa tra il punto interrogativo ei
due punti sarebbe fondamentalmente il corpo dell'istruzione if se l'istruzione if fosse vera.
E poi i due punti sono il
terzo, e se la condizione viene valutata falsa, si eseguirà quel
corpo di codice, quindi è come il corpo dell'istruzione else.
Quindi questo operatore di svolta non è altro che un'istruzione if else solo una notazione abbreviata,
puoi scriverla molto più velocemente.
La differenza anche qui è che non ci sono parentesi, quindi puoi avere
solo singole espressioni o singole affermazioni all'interno del corpo del punto interrogativo o dopo i due punti.
Quindi, se l'operatore condizionale valuta una delle due
espressioni a seconda che l'espressione logica sia quella, a seconda
che la condizione sia vera.
Se la condizione è falsa, viene valutata l'espressione 2.
Quindi, di nuovo, si comporta proprio come un'istruzione if else.
Notare anche come l'operatore è disposto in relazione agli operandi.
Il carattere del punto interrogativo segue la condizione dell'espressione logica.
Il diritto del punto interrogativo sono i due operandi, espressione uno e espressione due.
Rappresentano le scelte.
Il valore che risulta dall'operazione sarà il valore dell'espressione uno
se la condizione restituisce true.
E poi il valore dell'espressione due se è falso. Quindi esattamente quello che ho detto se altro.
Diamo un'occhiata a un esempio. Quindi sembra divertente da leggere, ma
quello che sta dicendo è che se x è uguale a y
è maggiore di
7, quindi cosa sta facendo? Sta facendo un incarico?
X è uguale a y. Quindi se x è 5 ey è 9,
dirà se x è maggiore di 9, quindi imposterà
il numero su 25 x. Altrimenti, imposterà x a 50.
Quindi è un po 'complicato leggerlo prima.
Il risultato è che x è impostato su 25 se y è maggiore di 7 o su 50 in caso contrario.
Quindi è un modo semplice per eseguire un'assegnazione dell'espressione.
X è uguale a y è maggiore di 7.
Se y è maggiore di 7, x è uguale a 25, altrimenti 50.
Ecco perché la x è uguale a che c'è un porno.
Quindi l'operatore ternario e le condizioni sono sul lato destro del compito, e questo è
in genere il modo in cui lo usi. Dici x uguale, il risultato di
quell'operatore ternario.
Quindi l'intero operatore ternario è y maggiore di 7. Quindi sta solo dicendo se y è maggiore
di 7, 25, altrimenti 50. E poi lo assegni a x.
E questo è in genere il modo in cui lo usi. È lo stesso
che dire usando un'istruzione if. Se y è maggiore di 7, x è uguale a 25 altrimenti x è uguale a 50.
Ma è molto meno codice.
La limitazione di questo operatore condizionale è
che puoi avere solo due variabili scritte utilizzando l'operatore condizionale, un
minimo massimo.
Non puoi farne solo un sacco. Quindi è un po 'limitante. Di solito è usato per l'assegnazione.
Quindi una conferenza piuttosto lunga, molti esempi diversi.
Questo sarà più applicabile quando faremo la nostra sfida.
Ma se le affermazioni verranno usate molto, e
sono davvero, davvero facili da imparare. Prima che tu te
ne accorga, conoscerai la sintassi come il
palmo della tua mano, parentesi, parentesi, se altro parole chiave.
E poi, occasionalmente, utilizzerai questo operatore condizionale.
Ancora una volta, forse man mano che diventi più avanzato in c, inizierai a realizzare wow,
questa istruzione se mi ha impiegato molto tempo per scrivere,
forse posso scrivere in una singola riga usando l'operatore condizionale con il mio
punto interrogativo e i miei due punti.
Ancora una volta, molto utile per assegnare variabili in base alle condizioni. Grazie.