Estratto del documento

IL LINGUAGGIO C

• Imperativo ad alto livello (ma poco astratto).

• Strutturato, con alcune eccezioni (es. goto).

• Tipizzato – ogni oggetto ha un tipo.

• Elementare – poche parole chiave (32 nel standard).

• Case-sensitive – Variabile ≠ variabile.

• Portabile – codice compilabile su molte architetture se conforme allo standard.

Struttura Base di un Programma C

• #include <stdio.h> – include la libreria standard I/O.

• int main(void) – punto di ingresso del programma.

• Le parentesi graffe {} delimitano il blocco principale.

• Le dichiarazioni di variabili appaiono prima dell’uso.

I DATI⟹ sono individuati da nome (identificatore), rappresentazione (tipo), modalità di accesso

(variabile, costante).

• Per il calcolatore: insieme di bit memorizzato in memoria centrale

• Per l’utente: quantità associata a un certo significato

LE VARIABILI

Dichiarazione di una variabile: Locazioni di memoria destinate alla memorizzazione di dati il cui

valore è modificabile

<tipo> <variabile> ;

<variabile>: identificatore che indica il nome della variabile.

Le variabili appena definite sono non inizializzate (hanno valore ignoto), il loro valore poi può

cambiare.

I dati possono essere semplici (singoli valori) o scalari (insiemi di più valori semplici). 12

IL TIPO INT⟹ valori interi, positivi o negativi. Espresso su 16 bit o 32 bit

#include <limits.h>

IL TIPO FLOAT⟹ valori reali frazionari o esterni all’intervallo degli int. Espressi su 32 bit

#include <float.h>

Direttive di compilazione: un programma in C prima di essere compilato viene elaborato da un

preprocessore. I comandi destinati al preprocessore sono chiamati direttive.

Es. #include <stdio.h>

#DEFINE⟹ usato per dichiarare costanti

#INCLUDE⟹ specifica quali librerie usare

PRINTF⟹ stampa ⟹

Testo libero (compresi spazi) viene stampato letteralmente

Simboli \n va a capo

Simboli %d stampa un int

Simboli %f stampa un float

Printf(“Immetti il numero: ”) ;

scantf(“%d”, &N) ;

printf(“Numero immesso: %d\n”, N) ;

Scanf guida l’utente nell’immissione dei dati 13

SELEZIONE E OPERATORI BOOLEANI

ISTRUZIONI DI SCELTA⟹ avviene mediante l’istruzione if-else. Le condizioni di scelta possono

essere semplici o elaborate e possono essere combinate tra di loro.

La struttura if-else consente di eseguire il blocco A se la condizione C da valutare è vera (V),

oppure il blocco B se la condizione C è falsa (F).

La condizione C può essere semplice o complessa. I blocchi A e B possono contenere una singola

istruzione o più istruzioni, racchiuse tra parentesi graffe.

Caso particolare: IF (manca la condizione else)

La porzione vera deve esserci sempre, quella falsa se non c’è si può trascurare⟹ si omette la

clausola else.

ERRORI FREQUENTI:

! è errato mettere ; dopo la condizione if (o if-else) perché causa un blocco di codice.

Es. if (a > 0)

a = -a; 14

! è errato fidarsi della sola indentazione:

NO: SI:

if ( a > 0 ) if ( a > 0 )

printf(“neg”) ; {

a = -a ; printf(“neg”) ;

}

(se no avviene sempre il cambio di segno) a = -a ;

:

LE CONDIZIONI C è generalmente basata su un’operazione di confronto.

La condizione C è generalmente basata su un'operazione di confronto tra due espressioni, variabili

o costanti.

Categoria Operazione Sintassi C Esempio Significato

Uguaglianza Uguale == a == b a è uguale a b

Diverso != a != b a è diverso da b

Ordine Maggiore > a > b a è maggiore di b

Minore < a < b a è minore di b

Maggiore o a è maggiore o

>= a >= b

uguale uguale a b

Minore o a è minore o

<= a <= b

uguale uguale a b

ERRORE FREQUENTE: Confondere l’operatore di assegnazione (=) con l’operatore di confronto

(==) . Il primo assegna un valore alla variabile, è un’operazione di scrittura, distruttiva. Il secondo si

chiede se a sx il valore è uguale a dx, è un’operazione di lettura.

Esercizio: Si scriva un programma in linguaggio C che legga due numeri da tastiera, detti A e B, e

determini le seguenti informazioni, stampandole a video:

- determini se B è un numero positivo o negativo

- determini se A è un numero pari o dispari

- calcoli il valore di A+B

- determini quale scelta dei segni nell’espressione (±A) + (±B) porta al risultato massimo, e

quale è questo valore massimo.

Leggi A e B: 15

1. Controlla il segno di B

2. Controllo la parità di A

3. Controlla A e B e determina il risultato massimo

Bisogna determinare quale scelta dei segni nell’espressione (+-A) + (+-B) porta al valore massimo.

Si possono calcolare le 4 combinazione e scegliere il massimo (strategia 1) o riscrivere

algebricamente l’espressione (strategia 2).

Strategia 2: la massima somma che si può ottenere è quando A e B sono positivi, quindi basta

calcolare la somma dei valori assoluti. 16

GLI OPERATORI BOOLEANI

Spesso è necessario prendere decisioni basate sui valori di più condizioni semplici (es: "x è

compreso tra a e b?"). Per fare ciò si usano gli operatori booleani.

Gli operatori booleani permettono di combinare condizioni semplici (X, Y) che restituiscono un

valore booleano (vero/falso):

Quando si usano più operatori in una singola espressione, la valutazione avviene secondo la

seguente priorità (dalla più alta alla più bassa):

• Operatori di Confronto (<, ==, !=, >, >=, <=)

• Negazione NOT (!)

• Congiunzione AND (&&)

• Disgiunzione OR (||)

È sempre conveniente abbondare con le parentesi tonde () per migliorare la leggibilità e forzare

l'ordine di valutazione desiderato, rendendo l'espressione indipendente dalle regole di precedenza.

ERRORI COMUNI: 17

SCELTE ANNIDATE

Le istruzioni di scelta possono essere annidate: è possibile inserire un intero blocco di scelta (if, if-

else) all'interno del blocco vero o del blocco falso di un'altra istruzione di scelta.

• La scelta interna (C2) viene valutata solo ed esclusivamente

se la condizione esterna (C1) ha portato all'esecuzione del

ramo che la contiene.

• L'intero blocco di scelta più interno (dalla sua condizione al

ricongiungimento) deve essere completamente contenuto

all’interno di uno dei rami del blocco più esterno. 18

ESEMPIO: L’EQUAZIONE DI PRIMO GRADO 19

SWITCH E CICLI

1. L’ISTRUZIONE SWITCH: meccanismo di controllo del flusso che offre un'alternativa più

compatta e leggibile rispetto a una lunga catena di istruzioni if-else/ if. Viene utilizzata quando è

necessario compiere una sequenza di scelte in base al valore di una singola variabile o

espressione. 20

2. L’ISTRUZIONE BREAK⟹ porta l’esecuzione del programma fino al termine del costrutto switch.

In assenza di break l’esecuzione prosegue attraverso il caso successivo.

3. FLUSSO DI ESECUZIONE CICLICO⟹ permette di ripetere alcune parti del programma più

volte, la ripetizione solitamente è controllata da una condizione booleana.

Istruzioni:

- Eseguibili⟹ fanno parte del programma, corrispondono alle istruzioni del sorgente C

- Eseguite⟹ istruzioni effettivamente eseguite durante un’esecuzione del programma.

FLUSSI DI ESECUZIONE WHILE

DO-WHILE

ANATOMIA DI UN CICLO 21

CICLO CON ITERAZIONI NOTE (numero di ripetizioni)

CICLO CON ITERAZIONI IGNOTE 22

ISTRUZIONI DI RIPETIZIONE IN C

1. ISTRUZIONE WHILE

Comportamento:

- Valuta la Condizione C.

- Se C è vera, esegue il blocco di istruzioni B (Corpo).

- Al termine di B, torna al punto 1 per rivalutare C.

- Se C è falsa, salta il ciclo e prosegue.

Annidamento dei Cicli:

È possibile includere un'istruzione while all'interno del corpo di un altro while (o for). Per ogni

singola iterazione del ciclo più esterno, si eseguiranno tutte le iterazioni previste per il ciclo più

interno.

CONTATORI: variabili intere inizializzate prima del ciclo che sono incrementate/decrementate ogni

volta che si riscontra una certa condizione o che si ripete il ciclo.

2. ISTRUZIONE FOR⟹ valuta una variabile di controllo che deve essere aggiornata. 23

LA CODIFICA

INFORMAZIONE: trasmissione e ricezione di messaggi relativi a notizie o nozioni ritenute utili.

IL BIT (BInary digiT) ⟹ unità di misura dell’informazione

Corrisponde alla quantità di informazione fornita dalla scelta fra due sole alternative (considerate

egualmente probabili). Può assumere due valori e corrisponde quindi a una cifra binaria.

Es. Semaforo: Rosso 1 0 0, Giallo 0 1 0, Verde 0 0 1

Si possono anche associare ad ogni lettera e a ogni simbolo una sequenza univoca di bit.

8

Con 8 bit si può rappresentare la scelta fra 256 alternative diverse⟹ 2 =256.

BYTE: un gruppo di 8 bit corrisponde a 1 byte. Una stringa di caratteri è rappresentata da una

successione di byte.

Usando un numero di cifre finito si può rappresentare solo una quantità finita di numeri.

Esempio per i numeri naturali

POTENZE DI 2 24

RAPPRESENTAZIONE DELLE INFORMAZIONI NON NUMERICHE

LO STANDARD ASCII (American Standard Code for Information Interchange)

7

- 7 bit, 2 = 128 simboli diversi

- 7 bit memorizzati e trasmessi in un byte (quello in più può essere usato per rilevare

eventuali errori di trasmissione)

- I primi 32 non hanno una rappresentazione visiva, sono per esempio i tasti del computer

- Cifre e lettere sono messe in sequenza, il maiuscolo ha la precedenza sul minuscolo

- Problema: mancano tanti simboli (accenti, altri alfabeti)

⟹ passano poi da 7 a 8 bit aggiungendo 128 simboli

RAPPRESENTAZIONE RASTER (immagini)

⟹ immagine costituita da una griglia di punti (=pixel)

Risoluzione: numero di pixel usati per rappresentare l’immagine⟹ si misura in punti/pollice (dpi)

La qualità di un’immagine aumenta con il numero di pixel che la compongono, però aumenta

anche l’occupazione in byte⟹ si adotta la COMPRESSIONE (butta via informazioni non

necessarie).

COMPRESSIONE:

1. LOSSLESS (senza perdite)⟹ comprimo senza perdere informazioni, ma non riduce di tanto

l’informazione. Il fattore di compressione è 2.

Es. PNG e ZIP

2. LOSSY (con perdite)⟹ parte dell’informazione viene persa, il documento originale non può

essere ricostruito fedelmente.

Es. JPEG e MP3

RAPPRESENTAZIONE VE

Anteprima
Vedrai una selezione di 8 pagine su 31
Appunti di Elementi di informatica e programmazione Pag. 1 Appunti di Elementi di informatica e programmazione Pag. 2
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 6
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 11
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 16
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 21
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 26
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di Elementi di informatica e programmazione Pag. 31
1 su 31
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher francescacozzin di informazioni apprese con la frequenza delle lezioni di Elementi di informatica e programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Loreggia Andrea.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community