Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni8 pagine

Appunti Esame

Il documento fornisce un riepilogo delle nozioni fondamentali di informatica per studenti di ingegneria aerospaziale, includendo esempi di codice in C su vari argomenti come la manipolazione di float, vettori, matrici, file e liste dinamiche. Ogni sezione presenta frammenti di codice pratici e spiegazioni su operazioni comuni come ordinamento, riempimento e gestione della memoria. Sebbene non sia completo e possa contenere errori, serve come guida utile per la preparazione all'esame.

Caricato da

salmaelmo04
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
8 visualizzazioni8 pagine

Appunti Esame

Il documento fornisce un riepilogo delle nozioni fondamentali di informatica per studenti di ingegneria aerospaziale, includendo esempi di codice in C su vari argomenti come la manipolazione di float, vettori, matrici, file e liste dinamiche. Ogni sezione presenta frammenti di codice pratici e spiegazioni su operazioni comuni come ordinamento, riempimento e gestione della memoria. Sebbene non sia completo e possa contenere errori, serve come guida utile per la preparazione all'esame.

Caricato da

salmaelmo04
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 8

Fondamenti di Informatica (per aerospaziali)

Questo file è stato creato per avere qualcosa a portata di mano all’esame di fondamenti di
informatica (per aerospaziali). Non è assolutamente completo e ci sono quasi sicuramente delle
inesattezze o errori, ma in linea generale funziona. Se qualcuno volesse ulteriormente migliorarlo
lascio il codice LaTeX qua.

1 Varie
1.1 Troncare un float

float num = 0.23103


printf("%.2f", num);

Output: 0.23

1.2 Condizione if

if(1)
printf("Ciao!");
Output: Ciao!

if(0)
printf("Ciao!");
Output: ---

2 Vettori
2.1 Verifica vettori uguali

int flag = 1;

for(i = 0; i<MAX && flag; i++){


if (v1[i]!=v2[i]){
flag=0;
}

1
}

2.2 Riempimento indefinito


ex. riempi un vettore fino a che l’utente non inserisce /

printf("Inserisci␣una␣sequenza␣di␣caratteri.␣Con␣#␣termini.␣");
do{
printf("Inserisci␣un␣carattere:␣");
scanf("%c", &valore);
getchar();
if(valore!=’#’)
v[i] = valore;
}while(valore != ’#’);

2.3 Scorrimento circolare vettore


Nello scorrimento circolare, la cifra che si trova in ultima posizione diventa quella in prima posizione
dopo lo scorrimento.

temp = v1[MAX-1];
for(i = MAX-1; i>0; i--){
v1[i] = v1[i-1];
}
v1[0] = temp;

2.4 Bubble Sort Crescente


[1, 45, 3, 6] = [1, 3, 6, 45]
int i, k;
int temp;
for (i = 0; i < NUM - 1; i++){
for (k = 0; k < NUM - 1 - i; k++){
if (v[k] > v[k + 1]){
temp = v[k];
v[k] = v[k + 1];
v[k + 1] = temp;
}
}
}

2.5 Bubble Sort Decrescente


[5, 8, 3, 6] = [8, 6, 5, 3]
int i, k;
int temp;

2
for (i = 0; i < NUM-1; i++){
for (k = 0; k < NUM - 1 - i; k++){
if (v[k] < v[k + 1]){
temp = v[k];
v[k] = v[k + 1];
v[k + 1] = temp;
}
}
}

3
3 Matrici
3.1 Stampa matrice
Questo codice stampa una matrice r x c

for(r = 0; r<MAX; r++){


for(c = 0; c<MAX; c++){
printf("%d", matrix[r][c]);
}
printf("%d", matrix[r][c]);
}

3.2 Riempimento matrici


Questo codice chiede un numero n e riempie la matrice di dimensione MAX a partire da n fino a n
+ MAX incrementando di 1.
printf("Inserisci␣un␣valore␣n:␣");
scanf("%d", &n);
getchar();

for(r = 0; r<MAX; r++){


for(c = 0; c<MAX; c++){
matrix[r][c] = n;
n++;
}
}

4
4 Files
4.1 Apertura e lettura file

FILE *fp;
int n;

if(fp = fopen("name.txt", "r")){


do{
fscanf(fp, "%d", &n);
if(!feof(fp){
//fai quello che devi fare
}
}while(!feof(fp));
}
else printf("Errore␣apertura␣file!");

fclose(fp);

5
5 Liste dinamiche
5.1 Inserimento in testa
Ad ogni iterazione viene creato un chunk di tipo nodo ”temp” e vengono scambiati l’indirizzo di
testa e temp-¿next.
#include <stdio.h>
#include <stdlib.h>

typedef struct nodo{


int val;
struct nodo *next;
}nodo;

int main(){
int ancora;
nodo *temp;
nodo *testa = NULL; //inizializzazione a 0
}

do{
temp = (nodo *)malloc(sizeof(nodo));
temp->next = testa;
testa = temp;
printf("Inserisci␣il␣valore");
scanf("%d", &(testa->val));
}while(ancora);

6
5.2 Inserimento in coda
Bisogna appoggiarsi ad una funzione secondaria.
#include <stdio.h>
#include <stdlib.h>

typedef struct nodo{


int dato;
struct nodo *next;
}nodo;

nodo *testa = NULL; //inizializzazione testa a 0

int main(){
//...
do{
if(!inscoda()){
printf("Memory␣Error.");
return 0;
}

//richiesta e salvataggio di ancora

}while(ancora)

int inscoda(){
prova *temp;
//caso 1: testa vuota
if(!testa){
if(testa=(nome*)malloc(sizeof(nome)){
printf e scanf valore;
testa -> next = 0;
return 1;
} else return 0; //caso in cui malloc fallisce
}
//caso 2: testa piena;
else {
//questo for mi cicla fino ad arrivare alla fine della lista;
for(temp = testa; temp -> next != 0; temp = temp -> next);
//arrivato alla fine creo un nuovo chunck e lo collego
if(temp->next = (nome*)malloc(sizeof(nome))){
temp -> next -> next = 0;
printf e scanf valore;
return 1;
} else return 0;
}
}

7
5.3 Ricerca elemento
In questo esempio è costruita una funzione che cerca un elemento in una lista e, se lo trova, ne
restituisce il puntatore.
//la funzione ritorna un puntatore a tipo lista;
nome* cerca(int valore){
nome * prova;
//scorro la lista con un for e impongo le condizioni
for(temp = testa; temp != 0 && temp -> dato != valore; temp = temp -> next);

return temp;
}

5.4 Nuclearizzazione elemento


Nelle liste devo sempre state attento a tre casi particolari: elemento in testa, elemento in coda,
elemento nel mezzo. Questo esempio è stato implementato solo per il caso in cui l’elemento sia nel
mezzo. Per risolvere bisogna implementare controlli specifici.
int delete(int valore){
nodo* temp, *t1;

//controllo che la testa non sia vuota


if(!testa)
return 0;
//caso in cui l’elemento da eliminare sia il primo
if(testa->dato == valore){
temp = testa;
testa = testa -> next;
free(temp);
return 1;
}
for(temp=testa->next,t1=testa; temp!=0 && temp->dato !=quale; t1=t1->next,
temp=temp->next;)

if(temp){
t1 -> next = temp -> next;
free(temp);
return 1;
}
else return 0;
}

Potrebbero piacerti anche