Corso Linguaggio C Base/Intermedio

Programmazione
Corso Linguaggio C Base/Intermedio

Il corso ha lo scopo di aumentare il bagaglio nozionistico e gli strumenti di programmazione acquisiti dallo studente, al fine di risolvere problemi piu' complessi e gestire progetti di medie dimensioni.
Questo corso e' il naturale proseguimento del corso di Linguaggio C di livello base.

Lo studente iniziera' il suo percorso intermedio con una panoramica sulle librerie di funzioni specifiche previste dal C standard (ANSI), necessarie per risolvere problemi che prevedono l'utilizzo di funzioni matematiche, l'interpretazione di date e ore, e operazioni di manipolazione a livello binario.
Si proseguira' con maggiori dettagli relativi alla definizione delle funzioni, implementando concetti complementari come le funzioni a parametri variabili e le funzioni ricorsive.

La parte centrale del corso e' rappresentata dal mondo dei puntatori e tutte le diverse tecniche ed implementazioni fondate su questo concetto.
Lo studente imparera' a gestire strutture dati dinamiche attraverso algoritmi avanzati, definire tipi di dato astratto, gestire diversi flussi di dati e tipologie di file.
Queste tecniche risultano fondamentali per la stesura di progetti di medie dimensioni che si prefiggono di risolvere problemi di natura complessa.

Il percorso si concludera' con un approfondimento sulle metodologie di debugging e di organizzazione del proprio codice sorgente al fine di gestire al meglio un progetto di media complessita'.
Lo studente imparera' ad individuare e correggere i tipici errori logici e di runtime presenti nei programmi articolati, suddividendo la propria logica funzionale in maniera ottimale cosi' da ridurre al minimo il numero di malfunzionamenti ed agevolare la manutenzione del progetto.

Ogni parte del corso prevede una o piu' esercitazioni pratiche individuali o di gruppo al fine di rafforzare e mettere in pratica i concetti acquisiti.

chiedi informazioni

Programma Didattico

Il Programma si compone delle seguenti
Unità Didattiche:

Modulo 1 - Linguaggio C Base
Unita' Didattica 1 - Concetti preliminari
  • Funzionamento del calcolatore elettronico
  • Dettagli sul sistema centrale e il sistema periferico
  • Processo di eleborazione di un programma
  • Microprocessore e linguaggio macchina
  • Compilatore e linguaggio ad alto livello
  • Punti di forza del C e contesti applicativi
  • Differenze e somiglianze con il C++ e altri linguaggi
Unita' Didattica 2 - Compilazione
  • File eseguibili e file sorgenti
  • Sorgente principale e librerie esterne
  • Processo di compilazione di un sorgente
  • Il Preprocessore e il Linker
  • Scegliere e configurare l'ambiente di lavoro (IDE)
  • Strutturare un programma base
  • Compilazione ed esecuzione attraverso IDE
  • Strumenti di testing e debugging
Unita' Didattica 3 - Programmazione di base
  • Parole chiave, istruzioni e commenti
  • Direttive di inclusione
  • Flusso di esecuzione di un programma
  • Concetto di blocco di istruzioni
  • Entry point e il blocco main
  • Variabili e operatori
  • Funzioni, parametri e valori di ritorno
  • Input e output elementare
Unita' Didattica 4 - Variabili e operatori
  • Tipi nativi e operatori supportati
  • Specificatori e qualificatori di tipo
  • Dichiarazione e inizializzazione di una variabile
  • Regole per la scelta degli identificatori
  • Dimensione di una variabile e funzione sizeof
  • Identificare i limiti con la libreria limits
  • Variabili costanti e macro
  • Ambito di visibilita'
  • Variabili globali e variabili locali
  • Operatore di assegnazione
  • Operatori aritmetici e espressioni combinate
  • Ordine di valutazione degli operatori
  • Conversioni implicite ed esplicite
  • Operatori di dichiarazione
Unita' Didattica 5 - Input e Output
  • La libreria stdout
  • Funzioni elementari: getc, putc, gets, puts, ecc...
  • Funzioni avanzate: printf e scanf
  • Interpretazione della stringa di controllo
  • Sequenze di escape
  • Specificatori di formato
  • Intervenire sull'ampiezza di campo e la precisione
  • Intervenire sull'allineamento
  • Utilizzo avanzato della funzione printf
  • Acquisire una variabile per riferimento
  • Intervenire sul numero di caratteri letti e il peso massimo
  • Intervenire sui caratteri di delimitazione
  • Utilizzo avanzato della funzione scanf
     
Unita' Didattica 6 - Istruzioni di controllo
  • Alterare il flusso di esecuzione del programma
  • Variabili Booleale e operatori logici
  • Operatori relazionali ed espressioni condizionali
  • Blocchi condizionali e costrutti fondamentali
  • Costrutto di selezione tramite If-Else
  • Costrutto di selezione tramite Switch-Case
  • Costrutto di iterazione tramite While e Do-While
  • Costrutto di iterazione tramite For
  • Istruzioni per il controllo dell'iterazione 
  • Labels e istruzioni di salto incondizionale
     
Unita' Didattica 7 - Array
  • Aggregazione di variabili
  • Proprieta' fondamentali degli array
  • Concetto di indice e accesso casuale
  • Dichiarazione e inizializzazione di un array
  • L'operatore di accesso
  • Operazioni di assegnazione tra array
  • Operazioni di iterazione su array
  • Array multidimensionali
  • Operazioni di iterazione annidata
Unita' Didattica 8 - Stringhe di caratteri
  • La libreria string
  • Stringhe come array di caratteri
  • Carattere di terminazione
  • Dichiarazione e inizializzazione di stringhe
  • Funzioni per l'assegnazione
  • Funzioni di confronto
  • Funzioni di manipolazione e accesso
  • Funzioni per il riconoscimento di caratteri
  • Tabella ascii e manipolazione aritmetica
  • Stampa su stringhe con sprintf
  • Lettura da stringa con sscanf
Unita' Didattica 9 - Funzioni
  • Ambito di visibilita e flusso di esecuzione di una funzione
  • Passaggio per valore e per riferimento
  • Memoizzazione
  • Concetto di stack e funzioni annidate
  • Prototipo e definizione di una funzione
  • Specificare il valore di ritorno
  • Procedure con valore di ritorno void
  • Specificare gli argomenti
  • Ritornare il controllo con la funzione return
  • Organizzazione del codice sorgente attraverso funzioni
  • Organizzazione delle funzioni attraverso file di inclusione
Modulo 2 - Linguaggio C Intermedio
Unità Didattica 1 - Funzioni Matematiche
  • La liberia Math
  • Utilizzo di approssimazioni e troncamenti
  • Radice quadrata ed elevamento a potenza
  • Funzioni esponenziali e logaritmiche
  • Funzioni trigonometriche
  • Problemi tipici risolvibili con funzioni matematiche
Unità Didattica 2 - Funzioni Temporali
  • La libreria Time
  • Diversi formati per la gestione del tempo
  • Rappresentare e manipolare i riferimenti temporale
  • Ricavare l'orologio di sistema e il fuso orario
  • Implementare funzionalita' di cronometro
  • Ritardare l'esecuzione delle istruzioni
Unità Didattica 3 - Operazioni a livello binario
  • Manipolazione delle variabili a livello binario
  • Operatori di AND, OR inclusivo e OR esclusivo
  • Operatori di scorrimento
  • Operatore di inversione
  • Contesti tipici in cui la manipolazione binaria risulta vantaggiosa
  • Concetto di bitmap
  • Manipolazione delle bitmaps attraverso bitmasks
  • Gestione delle variabili di stato attraverso bitmaps
Unità Didattica 4 - Definizione Funzioni avanzate
  • La libreria stdarg
  • Funzioni a parametri variabili
  • Utilizzo dei parametri argc e argv della funzione main
  • Ricorsivita' delle funzioni
  • Stesura di un algoritmo ricorsivo e buone norme
  • Trasformare un algoritmo iterativo in ricorsivo
  • Utilizzo delle ricorsioni di coda
  • Concetto di funzione pura e programmazione funzionale
Unità Didattica 5 - Puntatori
  • Allocazione delle variabili in memoria
  • Concetto di l-valutee r-value
  • Operatore di indirizzo
  • Dichiarazione e inizializzazione di un puntatore
  • Operatore di deferenziazione
  • Puntatori e memoria dinamica (heap)
  • Funzioni per l'allocazione dinamica della memoria
  • Gestire un array come un puntatore
  • Aritmetica dei puntatori
  • Puntatori costanti e puntatori a costante
  • Puntatori a funzione
  • Puntatori doppi
  • Array di puntatori
  • Puntatori come argomenti e valore di ritorno
  • Errori di run-time tipici dei puntatori
Unità Didattica 6 - Definizione di tipi
  • Definire un identificatore di tipo con typedef
  • Aggregare le variabili attraverso una struttura
  • Definizione di una struttura
  • Dichiarazione e inizializzazione di strutture
  • Operatore di accesso per strutture statiche
  • Puntatori a struttura e allocazione dinamica
  • Operatore di accesso per strutture dinamichet
  • Array di strutture
  • Strutture come argomenti e valori di ritorno
  • Strutture di tipo bitfield
  • Strutture di tipo union
  • Strutture di tipo enum
Unità Didattica 7 - Algoritmi e Strutture dati dinamiche
  • Algoritmi di ricerca e ordinamento di array
  • Dichiarazione di array dinamici
  • Proprieta' e limiti degli array dinamici
  • Liste monodirezionali e bidirezionali
  • Definizione e dichiarazione di una lista
  • Algoritmi per l'accesso e la manipolazione delle liste
  • Implementare funzionalita' di stack o coda
  • Strutture ad albero
  • Definizione e dichiarazione di un albero
  • Algoritmi ricorsivi per l'accesso e la manipolazione degli alberi
  • Implementare mappe ad accesso casuale
  • Implementare insiemi ordinati e disordinati
  • Strutture a grafo
  • Definzione e dichiarazione di un grafo
  • Algoritmi di base per lavorare con i grafi
Unità Didattica 8 - File e flussi di I/O
  • Concetto di flusso di Input e di Output
  • Flussi e libreria stdio
  • Flussi standard: stdin, stdout e stderr
  • Funzioni per leggere e scrivere sui flussi
  • Concetto di bufferizzazione e manipolazione dei buffer
  • Flussi di tipo FILE
  • Dichiarazione di un puntatore di tipo FILE
  • File binari e file di caratteri
  • Modalita' di apertura e chiusura di un file
  • Carattere di terminazione di file
  • Funzioni per leggere e scrivere da file binari e di caratteri
  • Funzioni di posizionamento
  • Tecniche di alterazione
  • Rimozione e rinomina
  • Gestione dei file temporanei
  • Utilizzo dei file per l'interazione con i dispositivi
Unità Didattica 9 - Debugging
  • Utilita' e tecniche di debugging
  • Scelta dello strumento di debugging
  • Compilare un sorgente con i simboli di debugging
  • Interruzione di un programma attraverso breakpoint
  • Interruzioni condizionate
  • Esecuzione a passi
  • Esaminare il contenuto delle variabili attraverso watchpoint
  • Esaminare lo spazio occupato e i tempi di esecuzione
  • Risolvere problematiche comuni: errori di segmentazione, cicli infiniti, ecc.. 
     
Unità Didattica 10 - Organizzazione dei sorgenti
  • Gestione dei progetti di medie dimensioni
  • Organizzazione delle cartelle del progetto
  • Suddividere le funzionalita' in librerie
  • File di intestazione e file oggetto
  • Concetto di translation unit e visibilita' degli identificatori
  • Meccanismi di inclusione indipendente
  • Direttive di inclusione condizionale
  • Minimalizzazione della funzione main
  • Creazione di librerie statiche e librerie dinamiche

chiedi informazioni

RICHIEDI INFORMAZIONI

Verrai ricontattato da un nostro consulente

Privacy

Le Opinioni dei Nostri Corsisti

Aziende

Privati

  • Corso ideale per chi parte dalle basi

    "Per quanto mi riguarda questo corso e credo anche altri sono veramente strutturati bene e ho davvero acquisito tantissime nozioni."

    - Luca Ferraroni -
  • Corso Soddisfacente

    "Sinceramente nulla di negativo da segnalare, il docente se qualcosa non è chiaro lo rispiega ed inoltre è disponibile a chiarire concetti anche al di fuori dell orario del corso."

    - Anna Parmigiani -
  • Ottimo corso per chi è alle prime armi

    "Non ho nessuna critica per quello che mi riguarda mi sono trovata molto bene."

    - Giulia Bonseri -
  • Percorso formativo più che positivo

    "Questo è il primo corso che frequento è mi sono trovato molto bene, non ho riscontrato alcun problema."

    - Anonimo -
  • Corsi ben strutturati

    "Nessuna critica particolare, tutto molto ben gestito. Magari solo inserire qualche ora per la correzione degli esercizi a casa."

    - Sofia Cavalli -
  • Corso di Grafica

    "Non ho critiche costruttive, il corso é stato esattamente come me lo aspettavo."

    - Martina Galetti -
  • Corso di Grafica molto completo

    "Nessuna critica, sono molto contenta di aver partecipato al corso."

    - Anonimo -
  • Corso ottimo

    "Non ho critiche in quanto la qualità dei vostri corsi è molto buona."

    - Marco Priori -
  • Formazione mirata

    "Il corso è andato molto bene. Una sola osservazione: avrei voluto fare più ore, a volte non bastano quelle svolte per singolo argomento."

    - Fabio Toscani -
  • Percorso completo

    "Sono molto soddisfatta, non ho critiche."

    - Alice Ghisolfi -
  • Insegnanti molto preparati

    "La qualità è ottima, la preparazione dell'insegnante anche!"

    - Gabriele Villa -
  • Formazione completa e massima disponibilità

    "Mi son trovata molto bene, di conseguenza non ho critiche da fare."

    - Laura Gargano -
  • Formazione di alta qualità, durata da migliorare

    "Il corso è andato molto bene. L'unica osservazione è che forse sarebbe meglio che i corsi durino di più. Non 100 ore come questo, ma ad esempio 150/200 ore."

    - Simone Frau -
  • Servizio di qualità e segreteria disponibile

    "Devo ammettere di essermi trovata talmente bene da non avere suggerimenti per migliorare il vostro servizio."

    - Elena Miglioli -
  • Docente molto disponibile

    "Nessuna critica, solo tanti complimenti al docente, bravissimo e super disponibile."

    - Selua Cheti -
  • Corso professionale

    "Non ho critiche, sono molto soddisfatta sia del corso che del docente, un peccato averlo dovuto seguire online e non in sede."

    - Riccardo Pagliari -
  • Ottima organizzazione del corso

    "Corso organizzato benissimo."

    - Ivan Pedratti -
  • Professionali

    Molto professionali

    - Anonimo -
  • Massima disponibilità per le esigenze del cliente

    Personalmente non ho trovato nessun problema per quanto riguarda il corso. Ho apprezzato molto il fatto che durante il lockdown mi è stata offerta la possibilità di riprendere il corso in aula appena possibile. Ho scelto il corso appunto perché era in aula quindi farlo in streaming era un dispiacere per me. La segreteria è stata molto professionale nel dare la possibilità di scegliere a tutti.

    - Alessandro Poli -
  • Ottimo corso

    "Docente decisamente all'altezza del corso (Web Developer), sono finalmente autonomo e alla fine del corso abbiamo messo online ognuno il proprio sito... Grazie!!!!"

    - Mario Zampini -
  • Wordpress senza più segreti

    "Tranne la parte iniziale sull'HTML che è stata un po' teorica, i due professori mi hanno portato a un ottimo livello con Wordpress... abbiamo fatto solo pratica, e messo online un sito da soli."

    - Ilaria Cravelli -
  • Ottimo percorso

    "Ho seguito un lungo corso di autocad e 3dsmax, professore preparato, corso completo. Ho preso la certificazione passandola al primo colpo! scuola da consigliare."

    - Gianni de colombo -
  • Grafica Pubblicitaria e Comunicazione Digitale

    "Personale qualificato, ottimi docenti. Personalmente mi ritengo molto soddisfatta di questa scelta. Lo consiglio a tutti."

    - Mara Magistris -
  • Grafica Pubblicitaria e Comunicazione Digitale

    "Contattai SinerVis perchè era l'unica agenzia formativa che offriva corsi anche nel periodo estivo. 
    Mi servivano degli attestati di frequenza.
    Dopo qualche mail e un incontro, che consiglio a tutti per togliere ogni dubbio, decisi di iscrivermi ai corsi di Grafica Pubblicitaria (Adobe) e di Autocad.

    Personale gentile, disponibile e pronto a venire in contro ad ogni esigenza e in grado di offrire diverse soluzioni.
    Insegnanti davvero molto preparati, professionali, disponibili e, soprattutto molto bravi ad insegnare.
    Le aule sono belle e si lavora bene grazie all'attrezzatura hardware e software moderna ed aggiornata.
    La sede di Torino è molto comoda da raggiungere anche per chi, come me, arriv da fuori città. È situata nelle vicinance dell'entrata/uscita dell'autostrada e si trova parcheggio facilmente.

    In generale, sono rimasto davvero molto soddisfatto. Se avessi intenzione di iniziare un nuovo corso, la SinerVis sarà la prima agenzia a cui penserò.
    Consiglio a tutti la SinerVis!

    - Ivano Gallino -
  • AutoCAD

    "Ho frequentato il corso AUTOCAD 2D docenti preparati e molto professionali con spiegazioni chiare e dettagliate."

    - Danila Golisano -
    Danila Golisano
  • Tecnico Reti

    "Ringrazio per l'esperienza formativa che ho potuto acquisire e rivolgo al Vs team i miei complimenti per organizzazione, competenza e disponibilità.

    Se dovessi avere necessità in futuro mi rivolgerò nuovamente a Voi.

    Un saluto."

    - Gianpaolo Grimaldi -

Scegli la Migliore Formazione per i Tuoi Obbiettivi

 
Aule Attrezzate

Strumenti e ambiente al top per la tua formazione

 
Corsi A Distanza

Ottieni facilmente le tue competenze ovunque tu sia

 
Massima Flessibilità

Il tuo tempo è importante per noi, per cui dedichiamo ogni attenzione nella programmazione del tuo percorso formativo

 
Massima Competenza

Scegliamo ogni tuo docente con cura per garantirti strumenti e metodi aggiornati ed efficaci

 
Massimo Supporto

Staff di consulenti super attivi per ogni tua domanda

 
Qualità Certificata

La sicurezza della massima conformità alle norme di riferimento di corsi e percorsi altamente qualificanti