Come configurare smartphone e PC. Portale informativo

Variabili e operatore condizionale. Variabili condizionali

Annuncio

VariabileÈ una quantità che ha un nome e un significato. Le variabili sono dichiarate usando la parola var: var x = 12, y; Qui vengono introdotte due variabili con i nomi x e y, il valore 12 viene scritto nella variabile x e la variabile y è indefinita, cioè il comando trace trace (y); restituirà undefined (valore non definito). Il comando trace (z) produce lo stesso risultato; perché la variabile z non è affatto nota. Per distinguere una variabile esistente da una sconosciuta, è possibile scrivere in essa uno speciale valore null null: var y = null;

Se il tipo della variabile non è specificato in modo esplicito, può assumere qualsiasi valore. Ad esempio:

variabile x = 1; // numero x = "Ku-ku!" ; // stringa x = falso; // booleano

Tuttavia, quando si dichiara, è meglio specificare esplicitamente il tipo della variabile. Ciò consente di rilevare molti errori anche prima dell'esecuzione del programma. Ci sono tre tipi semplici:

  • Numero - numero;
  • Stringa - stringa;
  • Booleano è un valore booleano.
Il tipo della variabile è indicato dopo il suo nome separato da due punti var x: Number = 0, y: String = "qq", b: Boolean = false; Nelle variabili di tipo String è possibile scrivere stringhe di caratteri racchiuse tra virgolette o singoli apostrofi: var s1: String = "qq1", s2: String = "qq2"; Le variabili booleane assumono solo due valori: true e false: var b: Boolean = false; b = vero; b = (a In quest'ultimo caso, b sarà vero se la condizione a destra del segno di uguale è vera.

Se si tenta di scrivere un valore di tipo errato in una variabile, si riceverà un messaggio di errore immediatamente quando il programma viene tradotto (ovvero quando viene tradotto in codici macchina) e non durante l'esecuzione. Ad esempio, un codice come questo genera un errore:

var x: Numero = 1; x = "Ku-ku!" ;

Visibilità variabile

Esistono tre tipi di variabili: Le variabili globali vengono dichiarate utilizzando l'identificatore _global: _global .x = 12; Nota che non è necessario utilizzare la parola var qui, tali variabili sono trattate come proprietà dell'oggetto _global. La variabile x, dichiarata sopra, è accessibile da qualsiasi funzione e dal codice di qualsiasi clip semplicemente per nome.

Se sono presenti più variabili con lo stesso nome nell'ambito, viene cercata prima la variabile locale, poi la variabile clip corrente e solo dopo la variabile globale.

Le variabili di altre clip sono "invisibili"; per fare riferimento ad esse, devi indicare esplicitamente la clip principale:

Mc.x = 1; _root .x = 12; _genitore .x = 123;

Incarico

Per assegnare un nuovo valore a una variabile, utilizzare il segno =. A sinistra di esso scrivi il nome della variabile e a destra - l'espressione: a = 4 * (c + 2) + 3 / (r - 4 * w) + d% 3; Il segno * indica la moltiplicazione, il segno / indica la divisione e% indica il resto della divisione.

In un'espressione, le operazioni aritmetiche vengono eseguite nel seguente ordine:

  • azioni tra parentesi;
  • moltiplicazione, divisione e prendendo il resto (da sinistra a destra);
  • addizione e sottrazione (da sinistra a destra).
Questo ordine si chiama priorità(anzianità) operazioni aritmetiche.

Le stringhe di caratteri possono essere "concatenate" utilizzando l'operatore +:

No = 20; s = "Vasya" + "è andato a fare una passeggiata." ; qq = "Oggetto" + no; Se nell'espressione sono coinvolti dati di tipo diverso, viene eseguita una conversione automatica nello stesso tipo. Quindi nell'ultima riga la riga Object20 viene scritta nella variabile qq.

Operatori ++ ( incremento, aumentando la variabile di 1, e - ( decremento, diminuendo la variabile di 1). operatori

io++; K -; significa lo stesso di i = i + 1; k = k - 1; C'è anche una notazione abbreviata per le operazioni aritmetiche: a + = 20; b - = c - d; c * = a + b; d / = 2 * c; f% = 12; Questo codice può essere sostituito con i seguenti operatori in forma "normale": a = a + 20; b = b - (c - d); c = c * (a + b); d = d / (2 * c); f = f% 12

oggetti

Un oggetto è qualcosa che ha proprietà e metodi. Nell'ambiente Veloce ci sono oggetti incorporati (es. Array, MovieClip, Key). Inoltre, puoi costruire i tuoi oggetti: var car = new Object (); auto.v = 10; auto.anno = 1998; Nell'ambiente Veloceè possibile utilizzare la programmazione orientata agli oggetti, ovvero creare le proprie classi di oggetti, dotarli di proprietà e metodi (vedere l'argomento 13).

La caratteristica principale degli oggetti è il cosiddetto indirizzamento referenziale. Cioè, quando si dichiara

var obj = nuovo oggetto (); la variabile obj non memorizza l'oggetto stesso, ma solo il suo l'indirizzo(riferimento oggetto). Pertanto, l'operatore di assegnazione obj2 = obj; non crea un nuovo oggetto in memoria che sia una copia di obj, ma semplicemente copia l'indirizzo del primo oggetto in obj2. Successivamente, obj e obj2 puntano allo stesso oggetto. Se davvero vogliamo costruire una copia dell'oggetto il cui indirizzo è memorizzato in obj, possiamo fare questo: var obj2 = new Object (); for (prop in obj) obj2 = obj; Qui, il ciclo itera su tutte le proprietà del primo oggetto e le copia nel secondo. La variabile prop (stringa di caratteri) è il nome della proprietà successiva. Obj significa " una proprietà dell'oggetto obj il cui nome è memorizzato in prop».

TAU - teoria del controllo automatico

TS - sistema tecnico

ОУ - oggetto di controllo

UU - dispositivo di controllo

SU - sistema di controllo

IO - organo esecutivo

IU - dispositivo esecutivo

D - sensore

Sistema operativo - feedback

PC - rapporto di trasferimento

PF - funzione di trasferimento

APFC - risposta in frequenza ampiezza-fase

Risposta in frequenza - caratteristica ampiezza-frequenza

LFCH - caratteristica ampiezza-frequenza logaritmica

Caratteristica di frequenza di fase - caratteristica di frequenza di fase

2. Simboli di variabili e funzioni di base

X(T) - segnale di ingresso dell'elemento CS, segnale di uscita di OS e CS (valore controllato)

(T) È il segnale di uscita dell'elemento CS, il segnale di ingresso del sistema operativo (azione di controllo)

X S ( T) È l'influenza dell'impostazione del sistema di controllo?

z(T) È l'effetto di disturbo sul sistema di controllo?

(T) - segnale di errore (mismatch) nel sistema di controllo

1(T) - azione a passo singolo

(T) - azione a singolo impulso

X m , m- valori di ampiezza dei segnali X(T) e (T)

P - Operatore di Laplace, operatore di differenziazione

 - frequenza circolare, operatore di trasformata di Fourier

X(P) - immagine del segnale continuo X(T) secondo Laplace

X(J) - visualizzazione continua del segnale X(T) secondo Fourier

K - Collegamento PC (o collegamenti di collegamento)

W(P) - Collegamento PF (o collegamento di collegamenti)

W(J) - AFC di un collegamento (o collegamento di collegamenti)

UN() - AFC di un collegamento (o collegamento di collegamenti)

 () - caratteristica di frequenza di fase di un collegamento (o connessione di collegamenti)

F ( R) - PF del sistema di controllo chiuso

h(T) - funzione transitoria (caratteristica) di un collegamento o sistema di controllo

w(T) - funzione impulso (peso) (caratteristica) di un collegamento o CS

INTRODUZIONE

Teoria del controllo automatico (TAU)- una disciplina scientifica, il cui oggetto sono i processi di informazione che si verificano nei sistemi di controllo di oggetti tecnici e tecnologici. TAU rivela gli schemi generali di funzionamento dei sistemi automatici di varia natura fisica e, sulla base di questi schemi, sviluppa i principi per la costruzione di sistemi di controllo di alta qualità.

Quando studiano i processi di controllo in TAU, astraggono dalle caratteristiche fisiche e progettuali dei sistemi e invece dei sistemi reali considerano i loro modelli matematici adeguati. Quanto più accuratamente (più completamente) il modello matematico corrisponde ai processi fisici che avvengono in un sistema reale, tanto più perfetto sarà il sistema di controllo progettato.

I principali metodi di ricerca presso TAU ​​sono la modellazione matematica, la teoria delle equazioni differenziali ordinarie, il calcolo operativo e l'analisi armonica. Diamo una rapida occhiata a ciascuno di essi.

Metodo di modellazione matematica, combinando un'ampia varietà di metodi e tecniche per descrivere e presentare oggetti e fenomeni fisici, può essere rappresentato in modo condizionale e schematico utilizzando la tecnica più comunemente usata: un'immagine grafica di un semplice oggetto con un segnale di ingresso X(T) e un segnale di uscita (T), a forma di rettangolo (Fig. B. 1, un). Simbolo UN all'interno del rettangolo si intende un operatore matematico (funzione, integrale, ecc.) che collega i segnali di ingresso e di uscita che cambiano nel tempo.

Riso. IN 1. Rappresentazione schematica dei metodi matematici utilizzati in TAU

Teoria delle equazioni differenziali ordinarie, concentrandosi sugli aspetti fisici e sulle applicazioni delle soluzioni ottenute, funge da principale base metodologica del TAU e le equazioni differenziali ordinarie sono la forma più generale e completa di descrizione matematica di elementi e sistemi di controllo. Le equazioni differenziali mettono in relazione variabili di input e output variabili nel tempo e le loro derivate. Nel caso più semplice, l'equazione differenziale ha la forma

dy(T)/dt=F[X(T),(T)]. (IN 1)

Metodo del calcolo operazionale, che si basa sulla trasformata di Laplace

(IN 2)

ti permette di algebrare le equazioni differenziali - vai alle cosiddette equazioni degli operatori che collegano le immagini X(P) e (P) dei segnali di ingresso e di uscita tramite la funzione di trasferimento W(P) (fig. B. 1, B)

W(P)=(P)/X(P). (ALLE 3)

Metodo di analisi armonica si basa sulla trasformata di Fourier nota dal corso di matematica, che ha la forma

(AT 4)

Usando la trasformata di Fourier (V. 4), si trovano le immagini X(J) e (J) segnali di ingresso e uscita X(T) e (T) che caratterizzano gli spettri di frequenza di questi segnali. Le immagini dei segnali di Fourier sono collegate (Figura B. 1, v) funzione di trasferimento di frequenza

W(J) = Y (j) / X (j). (ALLE 5)

Tutti e quattro i metodi, brevemente presentati sopra, formano l'apparato matematico di TAU. Sulla base di esso, è stato sviluppato un complesso di metodi "propri" di TAU, presentati in questo corso.

TAU insieme alla teoria della costruzione e del funzionamento degli elementi dei sistemi di controllo (sensori, regolatori, attuatori) costituisce un ramo più ampio della scienza: l'automazione. L'automazione, a sua volta, è uno dei rami della cibernetica tecnica. La cibernetica tecnica studia sistemi di controllo automatizzato complessi per processi tecnologici (APCS) e imprese (APCS), costruiti utilizzando computer di controllo (CFM).

La cibernetica tecnica, insieme a quella biologica e socioeconomica, è parte integrante della cibernetica, che il suo fondatore, il matematico americano N. Wiener, definì nel 1948 come la scienza del controllo e della comunicazione nei sistemi tecnici e negli organismi viventi.

I primi regolatori industriali apparvero tra il 1765 e il 1804. (I. Polzunov, J. Watt, J. Jacquard).

I primi studi teorici sui regolatori apparvero nel periodo 1868-1893. (J. Maxwell, I. Vyshnegradsky, A. Stodola). Lo scienziato e ingegnere russo I.A.Vyshnegradskii ha condotto una serie di studi scientifici in cui il motore a vapore e il suo regolatore sono stati inizialmente analizzati con metodi matematici come un unico sistema dinamico. Le opere di A. A. Andronov, V. S. Kulebakin, I. N. Voznesensky, B. V. Bulgakov, A. A. Feldbaum, B. N. Petrov, N. N. Krasov hanno svolto un ruolo importante nella formazione della scuola russa di TAU. , AA Voronova, Ya. Z. Tsypkina, VS ...

Lo sviluppo della moderna teoria del controllo dalla cosiddetta teoria della regolazione "classica", basata sui quattro metodi di ricerca di base del TAU sopra menzionati, e la formazione dei suoi metodi più recenti sono schematicamente illustrati in Fig. IN 2.

Riso. IN 2. Sviluppo del contenuto e della metodologia della teoria del management

Attualmente, TAU, insieme alle ultime sezioni della teoria della gestione generale (ricerca operativa, ingegneria dei sistemi, teoria dei giochi, teoria delle code), svolge un ruolo importante nel miglioramento e nell'automazione del controllo dei processi tecnologici e delle industrie.

È possibile memorizzare le conoscenze sugli interlocutori o qualsiasi altra informazione di testo. Ora quando scrivi modelli può essere usato 13 variabili con uno scopo predeterminato, e 100 "liberi", che i proprietari Informazioni possono essere utilizzati a propria discrezione.
Variabili con un determinato scopo hanno nomi “parlanti”. Ad esempio, % nome_utente- esso variabile, progettato per memorizzare il nome dell'interlocutore. Il suo nome usa le parole inglesi user ("user") e name ("name"). Tale variabili sono utilizzati attivamente dagli sviluppatori durante la creazione di un database modelli informazioni standard, in base al quale tutte le consuetudini Informazioni.
La durata di tale variabili non limitato, ad es. i loro valori vengono ricordati e memorizzati tra conversazioni separate.

Cosa c'è scritto nei modelli Esempio di dialogo
Ricorda il nome:
$ Mi chiamo *
# Lieto di conoscerti. [% nome_utente = "[* 1]"]
Un ospite: Mi chiamo Vasya
Informazioni: Incontra una volta.
Mostriamo il nome dell'interlocutore in risposta infa:
$ Ciao, inf.
# Arrivederci, [% nome_utente]
Un ospite: Ciao, inf.
Informazioni: Arrivederci Vasja.
Scegliamo la risposta in base al valore della variabile% user_name:
$ Ti ricordi il mio nome?
# (Naturalmente. Tu sei [% nome_utente].)
# (No. Non mi hai detto il tuo nome.)
Un ospite: Ti ricordi il mio nome?
Informazioni: Certamente. Tu sei Vasya.
o
Un ospite: Ti ricordi il mio nome?
Informazioni: No. Non mi hai detto il tuo nome.
Non vogliamo più memorizzare il nome dell'interlocutore, resettiamo la variabile
$ Sei uno sciocco.
# Ecco, non sono più tuo amico e ho dimenticato il tuo nome. [% nome_utente = ""]
Un ospite: Sei un pazzo.
Informazioni: Ecco, non sono più tua amica e ho dimenticato il tuo nome.

Assegnare un valore a una variabile e azzerare una variabile

Assegna valore variabile oppure puoi resettarlo nelle risposte di infa.

Sintassi:[% variabile = "valore"]
Comando di assegnazione variabile sempre circondato da parentesi quadre, che qui sono simboli di servizio. Senso variabile sempre tra virgolette.
Esempi di assegnazione del valore:
$ Faccio rock and roll.
# Invidio. Gli INF non possono ballare [% var1 = "ballando"]

$ * odio * ballare *
$ * balla * odio *
$ * non ballare *
# È un peccato. Se fossi umano, ballerei sicuramente. [% var1 = "non gli piace ballare"]

$ Ho ** anni.
# Bella età! [% user_age = "[* 1]"]

Esempio di azzeramento variabile :
$ Non voglio che parli della mia età.
# Qualunque cosa tu dica [% user_age = ""]

Assegnare un valore a una variabile utilizzando la funzione set

Funzione set ("Argomento1", "Argomento2", "Argomento3") sostituisce Argument2 al suo posto e assegna il suo valore alla variabile specificata in Argument1. Argomento3 per impostazione predefinita è una stringa vuota. Se lo specifichi in modo diverso da una stringa vuota, nessun testo verrà sostituito per la funzione set e verrà assegnato solo il valore della variabile.

Ad esempio,
$ mi chiamo **
# Piacere di conoscerti, [@set ("nome_utente", "[@ (" [* 1] ")]")]!

Un ospite: mi chiamo Vasya
Informazioni: Piacere di conoscerti, Vasya!

O:
$ mi chiamo **
# Ricorderò il tuo nome. [@set ("nome_utente", "[@ (" [* 1] ")]", "1")]

$ * qual è * il mio * nome *
# Tu sei [% nome_utente].

Un ospite: Mi chiamo Lena
Informazioni: Ricorderò il tuo nome.
Un ospite: allora come mi chiamo?
Informazioni: Tu sei Lena.

Emissione del valore di una variabile nella risposta infa

In modo da info"espresso" il significato variabile nella risposta, devi solo scrivere questo variabile.
Sintassi:[%variabile]
Le parentesi quadre sono obbligatorie.

Esempio:
$ Ciao, robot!
# Arrivederci [% nome_utente]!

Per poter implementare la logica nel programma, vengono utilizzati operatori condizionali. Concettualmente, questi operatori possono essere rappresentati come punti nodali, raggiungendo i quali il programma sceglie in quale delle possibili direzioni procedere. Ad esempio, è necessario determinare se una variabile arg contiene un numero positivo o negativo e visualizzare il messaggio corrispondente sullo schermo. Per fare ciò, puoi utilizzare l'istruzione if (if), che esegue controlli simili.

Nel caso più semplice, la sintassi per una data istruzione if è la seguente:

se (espressione)

Se il valore del parametro "espressione" è "vero", l'istruzione viene eseguita, altrimenti viene saltata dal programma. Va notato che "espressione" è un'espressione condizionale in cui viene verificata una condizione. Tavolo 2.1 presenta varianti di semplici espressioni logiche dell'istruzione if.

Tabella 2.1. Semplici espressioni booleane

Diamo un esempio dell'uso dell'operatore di ramificazione if. Il seguente programma permette di determinare il segno della variabile inserita.

Listato 2.1. Il primo programma per determinare il segno del numero inserito.

#includere
intero principale ()
{
galleggiante x;
printf ("Inserisci un numero:");
scanf ("% f", & x);
se (x> = 0)

Ritorna 0;
}

L'analisi del testo del programma dato mostra che due operatori condizionali possono essere sostituiti con uno usando la costruzione

se (espressione)

che viene così interpretato. Se "espressione" è vera, viene eseguita "istruzione1", altrimenti viene eseguita "istruzione2". Riscriviamo l'esempio dato in precedenza per determinare il segno di un numero usando questa costruzione.

Listato 2.2. Il secondo programma per determinare il segno del numero inserito.

#includere
intero principale ()
{
galleggiante x;
printf ("Inserisci un numero:");
scanf ("% f", & x);
if (x printf ("Il numero inserito% f è negativo. \ n", x);
altro
printf ("Il numero inserito% f non è negativo. \ n", x);

Ritorna 0;
}

Negli esempi presentati, dopo le istruzioni if ​​e else, c'è solo una funzione printf(). Nei casi in cui è necessario scrivere più di un operatore quando una condizione è soddisfatta, devono essere utilizzate le parentesi graffe, ad es. usa un costrutto come

se (espressione)
{

}
altro
{

Va notato che dopo la parola chiave else, puoi formalmente inserire un'altra istruzione if condition, di conseguenza, otteniamo una costruzione ancora più flessibile delle transizioni condizionali:

se (espressione1)
altrimenti se (espressione2)
altro

Il Listato 2.3 mostra un programma che implementa l'ultimo costrutto di branch condizionale.

Listato 2.3. Il terzo programma per determinare il segno del numero inserito.

#includere
intero principale ()
{
galleggiante x;
printf ("Inserisci un numero:");
scanf ("% f", & x);
if (x printf ("Il numero inserito% f è negativo. \ n", x);
altrimenti se (x> 0)
printf ("Il numero inserito% f è positivo. \ n", x);
altro
printf ("Il numero inserito% f non è negativo. \ n", x);

Ritorna 0;
}

Finora, abbiamo considerato condizioni semplici come x && - AND . logico
|| - OR logico
! - NO . logico

Condizioni più complesse possono essere generate in base a queste tre operazioni logiche. Ad esempio, se ci sono tre variabili exp1, exp2 ed exp3, allora possono costituire i costrutti logici presentati nella tabella. 2.2.

Tabella 2.2. Esempio di espressioni booleane composte

Come le operazioni di moltiplicazione e addizione in matematica, anche le operazioni logiche AND OR NOT hanno le loro priorità. L'operazione NO ha la priorità più alta, ad es. tale operazione viene eseguita per prima. L'operazione AND ha una priorità più bassa e infine l'operazione OR ha la priorità più bassa. Queste priorità devono essere prese in considerazione quando si elaborano condizioni complesse. Ad esempio, la condizione

if (4 6 || 5 viene testato in questo modo. If 4 6 OR 5 if (4 6 || 5 L'istruzione if rende più facile scrivere programmi in cui è necessario scegliere tra un piccolo numero di possibili opzioni. Tuttavia, a volte un programma deve selezionare un'opzione tra le tante possibili. Formalmente, puoi usare la costruzione if else if ... else. Tuttavia, in molti casi risulta essere più conveniente usare l'istruzione switch C++. la sintassi di questo operatore è la seguente:

interruttore (variabile)
{
caso costante1:

Costante di caso2:

...
predefinito:

Questo operatore verifica in sequenza l'uguaglianza della variabile con le costanti dopo la parola chiave case. Se nessuna delle costanti è uguale al valore della variabile, vengono eseguite le istruzioni dopo la parola default. L'istruzione switch ha la seguente particolarità. Supponiamo che il valore della variabile sia uguale al valore di constant1 e che vengano eseguite le istruzioni dopo la prima parola chiave case. Successivamente, l'esecuzione del programma continuerà controllando la variabile per l'uguaglianza della costante2, che spesso porta a uno spreco inutile di risorse del computer. Per evitare questa situazione, dovresti usare l'istruzione break per spostare il programma all'istruzione successiva dopo lo switch.

Il Listato 2.4 mostra un esempio di programmazione di un'istruzione switch condizionale.

Listato 2.4. Un esempio di utilizzo dell'istruzione switch.

#includere
intero principale ()
{
intero x;
printf ("Inserisci un numero:");
scanf ("% d", & x);
interruttore (x)
{
caso 1: printf ("Numero 1 inserito \ n"); break;
caso 2: printf ("Numero 2 inserito \ n"); rottura;
default: printf ("Un altro numero inserito \ n");
}
char ch;
printf ("Inserisci un carattere:");
scanf ("% c", & ch);
interruttore (ch)
{
caso 'a': printf ("Il carattere a \ n è stato inserito"); rottura;
caso ‘b’: printf (“Carattere b \ n inserito”); rottura;
default: printf ("Un altro carattere \ n inserito");
}
restituisce 0;
}

Questo esempio mostra due diversi casi d'uso per l'istruzione switch. Nel primo caso viene analizzata la cifra inserita, nel secondo viene analizzato il carattere inserito. Va notato che questo operatore può effettuare una scelta solo in base all'uguaglianza del suo argomento con uno dei valori di caso elencati, ad es. controllando espressioni come x

Principali articoli correlati