Operatore &: fornisce l'indirizzo di memoria della variabile
Scanf: questa funzione legge dallo Standard input stdin e mette l'input negli indirizzi
delle variabili specificate nella lista di argomenti.
La funzione scanf richiede di specificare l'indirizzo di ogni variabile, oppure un
puntatore ad essa.
int iyz;
scanf("%d", &iyz);
E' anche possibile associare solamente il nome di un array o di una stringa a scanf,
poiché questo corrisponde all'indirizzo di partenza dell'array/stringa:
char string[80];
scanf("%s", string);
La funzione scanf leggerà i caratteri fino a che non incontra uno spazio, un newline o
un indicatore di fine file. Quindi non si può usare scanf per leggere una stringa
contenente spazi. non deve contenere messaggi!
scanf("inserire un int: %d", &x)
Inserire spazi o altri caratteri nella stringa di formato di scanf() è possibile, ma ha il
significato di richiedere che tali caratteri siano obbligatoriamente presenti in input: se
mancano allora scanf() dà errore.
Questa caratteristica può essere sfruttata per leggere dati formattati in modo
particolare, come ad esempio una data (gg/mm/aa)
scanf("%d/%d/%d", &gg, &mm, &aa);
In tal modo, scanf() filtra automaticamente i dati, eliminando le barre e “catturando”
gli interi che interessano.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{ int i;
int n = 0;
for(i=0; i<10; i++)
{ scanf ("%d",&n);
if(n == 0)
break;
printf ("%d\n", n+n);
}
system ("PAUSE");
return 0;
}
La funzione printf in C
L'output è essenziale per visualizzare i risultati. La funzione printf, serve per
visualizzare sullo
standard output una stringa costruita in base ad un formato specificato. La funzione
printf rappresenta lo strumento principale per mostrare informazioni all'utente.
Funzione standard, parte della libreria stdio.h del linguaggio C
Visualizzazione output, mostra testo e dati sullo schermo
Sintassi semplice: printf("formato", arg1, arg2, ...);
La stringa di formato
Specificatori di formato: iniziano con % e rappresentano i tipi di dati
Testo normale: caratteri visualizzati esattamente come scritti
Stringa delimitata: racchiusa tra virgolette doppie
Esempi Pratici
Tipi diversi
printf("Intero: %d, Float: %.2f", 42, 3.14159);
Output: Intero: 42, Float: 3.14
Larghezza e precisione
printf("Pi: %8.3f", 3.14159);
Output: Pi: 3.142
Formattazione testo
printf("Riga 1\nRiga 2\tTabulazione");
La funzione printf è essenziale per l'output in C. Offre grande flessibilità nella
formattazione.
Applicazioni: usata per interfacce utente testuali, debugging, log di sistema e molto
altro.
La funzione printf, serve per visualizzare sullo standard output una stringa costruita in
base ad un formato specificato.
int printf(const char *format, ...)
La funzione è definita come segue:
int printf(char *format, arg list ...)
e stampa sullo Standard output stdout la lista di argomenti conformemente alla
stringa di formato specificata. La stringa di formato può avere due tipi di oggetti:
- Caratteri ordinari che vengono copiati in output
- Specifiche di formato contraddistinte da "%
Il formato
Il formato stabilisce:
- Come interpretare la sequenza dei caratteri immessi con il dispositivo di input
(tastiera)
- Con quale sequenza di caratteri rappresentare in output (sul video o sulla stampante)
i valori da stampare.
Esempio di printf
Ad esempio: a = 17.23478; printf("%-2.3f", a);
L'output a video sarà: 17.235
Stringhe
Una stringa è una collezione di caratteri delimitata da virgolette
"ciao " "Hello\n "
In C le stringhe sono semplici sequenze di caratteri di cui l’ultimo, sempre presente in
modo implicito, è '\0’
"ciao" = {'c', 'i', 'a', 'o', '\0'}
Una stringa è un array (vettore) di caratteri che termina con ‘\0’
Il nome di una stringa è un pointer al primo carattere e il valore di una stringa è
rappresentato come l’indirizzo del primo carattere della stringa.
char *cognome = "Giovannini"; crea una variabile di tipo puntatore cognome che farà
riferimento alla stringa ‘Giovannini’ in una area della memoria
In alternativa la stringa può essere definita nel modo seguente:
char cognome[ ] = "Giovannini";
0 1 2 3 4 5 6 7 8 9 10
G i o v a n n i n i \0
Viene creato un vettore di nome cognome di 11 posizioni che contiene la stringa
Giovannini
Nell’ultima posizione c’è il carattere ‘\0’ di fine stringa.
Gli operatori
Nel linguaggio C, gli operatori sono simboli che indicano al compilatore di eseguire
operazioni specifiche su uno o più operandi. Sono fondamentali per la manipolazione
dei dati e il controllo del flusso del programma.
Tipi di operatori
- Operatori aritmetici
- Operatori di assegnazione
- Operatori di incremento e decremento
- Operatori relazionali
- Operatori logici
- Operatori Bit a Bit
- Operatori di puntatore
- Operatori speciali
Un operatore si dice unario quando ha questa sintassi
<operando><operatore>
Si dice binario quando presenta questa sintassi
<operando1><operatore><operando2>
Si dice ternario quando ha questa sintassi
<operando1><simbolo><operando2><simbolo><operando3>
L’operatore di assegnamento
L’operatore di assegnamento si indica con il simbolo = (segno di uguale)
<Evalue>=<Vvalue>
dove Evalue rappresenta in generale un identificatore di variabile, mentre Vvalue
rappresenta un’espressione qualunque. Dunque Vvalue viene assegnata a Evalue.
Prima occorre valutare la parte destra Vvalue e poi assegnarla alla parte sinistra
Evalue.
A sinistra dell’operatore deve sempre esserci una variabile, a destra può esserci
- una costante
- una variabile
- un’espressione
Il tipo di dato della variabile a sinistra dell’operatore deve essere identico (o almeno
compatibile) con quanto indicato a destra, il compilatore controlla la compatibilità tra i
tipi. Inoltre, la conversione del tipo è indolore
se il tipo di dato a destra è inferiore al tipo della variabile a destra dell’operatore
Pertanto, se la conversione non avviene non è esclusa la perdita di informazione. Ad
esempio la conversione di un valore float in un valore int comporta la perdita della
parte frazionaria
Si segue dunque la seguente gerarchia char < int < float
L'assegnamento produce sempre un valore, pertanto può essere incluso all'interno di
espressioni più complesse a condizione di una perdita della leggibilità del codice
sorgente.
Più frequentemente è utilizzato per effettuare delle assegnazioni multiple.
Esempio di assegnazione multipla:
i = k = n = 0; /* ad i, k, n viene assegnato il valore 0 */
Operatori aritmetici binari
+ (somma): addiziona due operandi e concatena due stringhe
– (differenza): sottrae il secondo operando dal primo
/ (divisione): divide il primo operando per il secondo
* (moltiplicazione): moltiplica i due operandi
% (resto – operatore modulo): restituisce il resto della divisione tra due operandi
Se dichiariamo due variabili come intere ed eseguiamo operazioni di divisione su di
esse, il risultato sarà un intero 9/2=4 (non 4.5)
Per ottenere un valore float come risultante, il numeratore o il denominatore, o
entrambi, devono essere i valori float
9.0 / 2 = 4.5
9 / 2.0 = 4.5
9.0 / 2.0 = 4.5
9 / 2 = 4
Operatori aritmetici unari
Gli operatori aritmetici unari si applicano ad un solo operando modificandone il valore
Posti dopo l’operando, quindi come postfissi i++; //equivale a scrivere i=i+1; i--;
//equivale a scrivere i=i-1;
Posti prima dell’operando, quindi come prefissi ++i; --i;
Operatori di Confronto o Relazionali
- > (simbolo maggiore)
- >= (simbolo maggiore o uguale)
- < (simbolo minore)
- <= (simbolo minore o uguale)
- == (simbolo uguale)
- != (simbolo diverso)
Operatori di Confronto o Relazionali
(a>b): restituisce true se la condizione a maggiore di b è verificata, false altrimenti
(a>=b): restituisce true se la condizione a maggiore o uguale a b è verificata, false
altrimenti
(a<b): restituisce true se la condizione a minore di b è verificata, false altrimenti
(a<=b): restituisce true se la condizione a minore o uguale a b è verificata, false
altrimenti
(a==b): restituisce true se la condizione a uguale a b è verificata, false altrimenti
(a!=b): restituisce true se la condizione a diverso da b è verificata, false altrimenti
Operatore ternario
Sintassi:
condizione ? Espressione_1 : espressione_2;
Può essere utilizzato anziché utilizzare le istruzioni if-else.
Innanzitutto, verificherà se una determinata condizione è vera o meno e quindi le
espressioni verranno valutate di conseguenza. Se la condizione è vera, allora viene
valutato espressione_1 altrimenti, viene valutato espressione_2
Operatori logici
Gli operatori logici permettono di svolgere le espressioni nel calcolo booleano. Ad
esempio, consentono al programma di eseguire un'istruzione o un'altra, a seconda che
si verifichi una particolare circostanza.
Nel linguaggio C gli operatori logici sono l'AND o prodotto logico ( && ), l'OR o
addizione logica ( || ) e la negazione ( ! ).
Operatore logico negazione NOT
La relazione di negazione NOT ( ) è un connettivo logico, attraverso il quale, a partire
da una proposizione A si forma una nuova proposizione chiamata negazione di A che è
vera quando A è falsa, ed è falsa quando A è vera. La relazione è così definita:
Operatore logico disgiunzione OR
Prendiamo due variabili proposizionali, A e B, e l'operatore logico OR, ottenendo la
congiunzione logica "A OR B", se sia A che B sono vere, allora la disgiunzione è vera;
se sono entrambe false è falsa; se A è falsa e B è vera, o viceversa, allora è vera. La
relazione è così definita:
Operatore logico congiunzione AND
Prendiamo due variabili proposizionali, A e B, e l'operatore logico AND, ottenendo la
congiunzione logica "A e B". In parole povere, se sia A che B sono vere, allora la
congiunzione B è vera; ogni diversa assegnazione di valori di verità rende B falsa. La
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.