mail unicampaniaunicampania webcerca

    Salvatore VENTICINQUE

    Insegnamento di ELEMENTI DI PROGRAMMAZIONE

    Corso di laurea in INGEGNERIA ELETTRONICA E INFORMATICA

    SSD: ING-INF/05

    CFU: 9,00

    ORE PER UNITÀ DIDATTICA: 72,00

    Periodo di Erogazione: Primo Semestre

    Italiano

    Lingua di insegnamento

    ITALIANO

    Contenuti

    Tecniche di sviluppo di programmi con approccio procedurale.
    Sintassi del linguaggio C.
    Compilatore, debugger e ambienti di sviluppo integrati.
    Progetto di semplici algoritmi e di sviluppare programmi a partire da algoritmi noti.

    Testi di riferimento

    Libro di Testo
    Alessandro Bellini, Andrea Guidi "Linguaggio C - guida alla programmazione", McGraw-Hill Quinta edizione
    Altri testi consigliati
    Kernighan, Ritchie – “Il linguaggio C”, Pearson
    Pasquale Foggia, Mario Vento - "Algoritmi e strutture dati", McGraw Hill

    Obiettivi formativi

    Acquisizione di conoscenze di base inerenti il modello di programmazione procedurale e del ciclo di sviluppo del software.
    Comprensione delle tecniche fondamentali per lo sviluppo di programmi in linguaggio ad alto livello.
    Conoscenza del linguaggio C. capacità Abilità nel progettare semplici algoritmi e capacità di codificarli in linguaggio C. Capacità di utilizzo di compilatori, debuggers e ambienti di sviluppo integrati.

    Prerequisiti

    Nessuno

    Metodologie didattiche

    Lezioni frontali e esercitazioni al calcolatore, in aula e in laboratorio.

    Metodi di valutazione

    Prova di programmazione in C
    Colloquio orale

    Altre informazioni

    Disponibili su:
    https://elearning.unicampania.it

    Programma del corso

    Approccio alla programmazione
    Introduzione all'informatica. Concetto di informazione. Rappresentazione dell'informazione. Problemi, risoluzione automatica e algoritmi. Proprietà di un algoritmo. Concetto di variabile. Operazioni elementari. Processo di definizione di una soluzione a un dato problema rispetto a un esecutore. Rappresentazione degli algoritmi. Diagrammi di flusso e strutture della programmazione procedurale. Concetto di tipo astratto.
    Ciclo di sviluppo del software
    Organizzazione funzionale del software e concetto di architettura software. Riuso. Cenni alle problematiche relative all'ingegneria del software e al ciclo di sviluppo. Classificazione dei linguaggi di programmazione, generazioni, livelli di astrazione, prospettiva storica, paradigmi: procedurale, funzionale, dichiarativo, ad oggetti. Interpreti e compilatori. Macchine astratte.
    Il linguaggio C
    Introduzione al C: concetti fondamentali, struttura di un programma C. Cenni al linguaggio C. Compilazione, collegamento, tool di sviluppo. Tipi, variabili, operatori ed espressioni in C. Costrutti di programmazione in C. Concetto di sottoprogramma. Sottoprogrammi in C. Librerie notevoli. Passaggio dei parametri. Concetto di puntatore; aritmetica dei puntatori; puntatori tipizzati e puntatori a void, puntatori costanti e a costanti. Allocazione dinamica. Introduzione alle liste semplici. Riferimenti. Gestione dei file; meccanismo C. Compilazione separata; spazi dei nomi; cenni alla modularizzazione del software. Area dati, stack, heap, area codice di un processo.  
    Algoritmi Notevoli
    Algoritmi notevoli: Inserimento in ordine e ordinamento per fusione, Bubble Sort, ricerca lineare, ricerca in array ordinato, ricerca dicotomica binaria. Concetto di complessità computazionale.  La ricorsione.
    Ambienti e tecnologie per la programmazione
    Installazione del compilatore. Compilazione a linea di comando. Ambienti IDE. Utilizzo del compilatore. Operazione di linking. Semplici tecniche di debug con e senza uso del debugger.

    English

    Teaching language

    Italian

    Contents

    Development techniques for procedural programming.
    C language.
    Compilers, debuggers and integrated development environments.
    Design of simple algorithms and of coding well known algorithms.

    Textbook and course materials

    Book references
    Alessandro Bellini, Andrea Guidi "Linguaggio C - guida alla programmazione", McGraw-Hill Quinta edizione
    Other suggested readings and manuals
    Kernighan, Ritchie – “Il linguaggio C”, Pearson
    Pasquale Foggia, Mario Vento - "Algoritmi e strutture dati", McGraw Hill

    Course objectives

    Base knowledge about the procedural programming model and the software development life-cycle. Comprehension of fundamental techniques for the development of programs with high level programming language. Knowledge of C language, design and coding capability of simple algorithms. Capabilities to use compilers, debuggers and development environment.

    Prerequisites

    None

    Teaching methods

    Theoretical lessons in presence and classroom exercises by PC.

    Evaluation methods

    C programming
    Oral discussion

    Other information

    Avilable at:
    https://elearning.unicampania.it

    Course Syllabus

    Introduction to programming
    Introduction to Computer Science. Concept of information. Representation and coding of information. Problems, automatic resolution and algorithms. Properties of algorithms. Types, variables, constant and operators. Implementing a solution for a specific solver. Von Neumann and Harvard models. Algorithm representation. Flow charts and control flow programming constructs. Definition of abstract types.
    Software development life-cycle
    Functions based organization of software and software architecture concept. Software reuse. Hints on software engineering issues and on software development life-cycle. Programming languages classifications according to historical properties, abstraction level, programming paradigm (functional procedural declarative, object oriented). Interpreters and compilers. Abstract machines.
    C programming language
    Introduction programming language: fundamental concepts, program structure. Language syntax. Compiling, linking programs. Developing tools. Types, variables, operators and expression. Syntax and semantic of control flow C constructs. Procedures and functions. Standard libraries. Exchange of parameters. Arrays and structs. Type casting. Pointers; pointer arithmetic; void pointers and typed pointers; constant pointers and pointers to constants. Dynamic memory allocation. Simple example of linked list. Input/output and files. Hints on modular design of software. Process model.
    Relevant algorithms
    Sorting algorithms: selection sort, bubble sort, insertion sort, quick sort. Linear search, binary search in ordered array. Computational complexity. Recursive solutions vs iterative solutions.
    Programming environments and technologies.
    Compiler installation. Command line compilation. Integrated development environments. Compiler and linker utilization. Debugging technique with and without debugger.

    facebook logoinstagram buttonyoutube logotypelinkedin logotype