Programación I.

Documentos relacionados
Tema 2 Introducción a la Programación en C.

FUNDAMENTOS DE INFORMATICA

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

HISTORIA DE C Creado entre 1972 por Brian Kernighan y Dennis Ritchie para escribir el código del sistema operativo UNIX. A mediados de los ochenta se

SYLLABUS de la Asignatura. Programación INF1201

Lenguajes de Cuarta Generación

Estructura de Computadores Grado en Ingeniería Informática Curso

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior INTRODUCCIÓN

Tema 2: Introducción a los Computadores

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

FUNDAMENTOS DE INFORMÁTICA

Algoritmos y Lenguajes de Programación

Fundamentos de Programación 2017-I

FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos y Programas

FUNCIONAMIENTO DEL ORDENADOR

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

Contenidos: Definiciones:

Programación I Teoría I.

Capítulo 3 CICLO DE VIDA DE UN PROGRAMA. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

INTRODUCCIÓN A COMPILADORES Y LENGUAJES FORMALES FUNDAMENTOS DE COMPILADORES

Tema: Introducción a la Programación Estructurada

EL LENGUAJE C. INTRODUCCIÓN y AMBIENTES.

INTRODUCCION AL LENGUAJE C PARA SISTEMAS EMBEBIDOS

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Presentación del Curso Presencial. Programación en Java Nivel Básico

Qué es un programa informático?

roducción a la programación con el lenguaje C usando el entorno de trabajo Dev-C. Nociones básicas de programación

ESTRUCTURA DE COMPUTADORES GUÍA DOCENTE

ROGRAMA DE CURSO Código Nombre EL4102. Arquitectura de Computadores Nombre en Inglés Computer Organization SCT

Introducción a la programación

Programación Estructurada

Nociones Básicas de un Sistema Computador. Clase 2 Introducción a la Programación

Lenguajes de Programación

Facultad de Ingeniería Industrial y de Sistemas v1.1 Pre Maestría LENGUAJES DE PROGRAMACION

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Intención didáctica Éste programa de estudio se sugiere que contenga una parte teórica y práctica. Por tanto se diseñó cinco unidades.

Universidad Católica de Santiago del Estero Facultad de Matemática Aplicada Carrera de Ingeniería en Electrónica

IFCD0111 Programación en Lenguajes Estructurados de Aplicaciones de Gestión

Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para computadora, en el que cada paso del algoritmo se

Tema 04: Lenguajes de programación y el lenguaje C

INGENIERÍA EN COMPUTACIÓN. INGENIERÍA EN COMPUTACIÓN División Departamento Licenciatura

Introducción a la Programación. Concepto de algoritmo. Algoritmos computacionales: pseudocódigo y diagramas de flujo. Programa.

Programación en Lenguajes Estructurados de Aplicaciones de Gestión. Certificados de profesionalidad

Programa Regular. Programación y Bases de Datos es una materia obligatoria correspondiente al segundo año de la carrera de Bioingeniería.

Introducción a la programación

Programación para Ingeniería Eléctrica

Acción que el procesador puede ejecutar sin necesidad de información suplementaria

Unidad I: Organización del Computador. Ing. Marglorie Colina

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Introducción. El proceso de traducción

FUNDAMENTOS DE INFORMÁTICA

Unidad 2: Taller de Cómputo. Estructura y Componentes de la Computadora UNIDAD DOS: INTRODUCCIÓN

Estructura de Computadores Estructura y Tecnología de Computadores Curso

Transcripción:

Programación I toni.navarrete@upf.edu jesus.ibanez@upf.edu

Profesores teoría Toni Navarrete e-mail: despacho: toni.navarrete@upf.edu 371 Jesús Ibáñez e-mail: despacho: jesus.ibanez@upf.edu 381

Introducción Filosofía: aprender a programar programando Web de la asignatura: http://www.tecn.upf.es/~tnavarrete/programacio1/ Bibliografía básica The C Programming Language, Second Edition by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall. http://cm.bell-labs.com/cm/cs/cbook/index.html

El plan Docente

El plan docente: objetivo de la asignatura El objetivo fundamental de esta asignatura es que los alumnos adquieran las bases de la algorítmica y estructuras de datos, así como que sean capaces de desarrollar fluidamente programas de tamaño medio utilizando el lenguaje C

El plan docente: competencias Competencias generales Instrumentales: CG1: Capacidad de síntesis CG2: Capacidad de análisis Sistémicas CG3: Capacidad para aplicar el conocimiento en la práctica CG4: Interés por la calidad Competencias específicas CE1: Capacidad para trabajar con un compilador y debugador CE2: Dominio de los tipos de datos estáticos básicos y compuestos CE3: Dominio de las estructuras de control CE4: Capacidad de resolución de problemas mediante diseño descendente y dominio de la utilización de funciones CE5: Dominio de los tipos de datos dinámicos y de la gestión dinámica de memoria CE6: Documentación y estructuración de código

El plan docente: tipos de actividades Sesiones de teoría Sesiones de ejercicios (seminarios) Sesiones de prácticas Ejercicios de auto-evaluación Consultar calendario!

El plan docente: evaluación Dos partes principales: Fundamentos teórico-prácticos: exámenes parcial (25%) y final (75%) 1 punto extra actividades seminarios (ejercicios) Prácticas: prácticas parcial (25%) y final (75%) Cada parte supone un 50% de la nota final, aunque es necesario aprobar ambas para superar la asignatura Otras actividades de auto-evaluación Septiembre

Importante! En esta asignatura se dan las bases necesarias para (sólo las de primer curso): Programación II, Programación III, Estructuras de Datos I Álgebra II, Análisis Numérico, Sistemas Operativos

Introducción Hardware: la parte física, la máquina Software: los programas que se ejecutan sobre esa máquina

Arquitectura von Neumann CPU ALU CU Registros RAM CPU = Unidad Central de Proceso ALU = Unidad Aritmético Lógica CU = Unidad de Control RAM = Memoria principal (Random Access Memory) Bus E/S

Lenguaje máquina La Unidad de control entiende una serie de combinaciones de bits que determinan diferentes instrucciones Ejemplo: 0001 1001 0010 1100 (16 bits)

Lenguaje máquina La Unidad de control entiende una serie de combinaciones de bits que determinan diferentes instrucciones Ejemplo: 0001 1001 0010 1100 (16 bits) Problemas: Extremadamente difícil escribir y leer No portable (específico para una unidad de control concreta)

Lenguaje ensamblador Cada tipo de instrucciones tiene una traducción Ejemplo: LOAD A ADD B STORE C

Lenguaje ensamblador Cada tipo de instrucciones tiene una traducción Ejemplo: LOAD A R1 LOAD B R2 ADD R1 R2 STORE C R1 Problemas: Aún difícil escribir y leer No portable

Lenguaje de alto nivel Las instrucciones son de un nivel superior, más cercano a cómo se piensa una solución Más fáciles de escribir y leer Son independientes de la máquina Ejemplo: C = A + B

Lenguaje de alto nivel Las instrucciones son de un nivel superior, más cercano a cómo se piensa una solución Más fáciles de escribir y leer Son independientes de la máquina Ejemplo: C = A + B Desventaja: Hay que traducirlo a lo que la máquina entiende (código máquina): más lento

Niveles Lenguajes de Alto Nivel C=A+B Lenguajes Ensambladores LOAD A R1 LOAD B R2 ADD R1 R2 STORE C R1 Lenguajes Máquina 000110011100 110100010111 100101100101

Compilador vs intérprete Compilador Intérprete Solución híbrida: máquina virtual

Compilación #include <stdio.h> main() { printf("hola mundo!"); } errores Compilador Código fuente a.out a.exe Código máquina

Compilación Se compila antes de ejecutar Detecta errores sintácticos Cuando ya no hay errores, genera el código máquina (fichero ejecutable) No necesita el compilador para ejecutar

Interpretación.................. Código fuente Coge una instrucción Intérprete La traduce a código máquina y la ejecuta 0011001010011

Interpretación El proceso de traducción se realiza mientras se ejecuta, instrucción a instrucción Se necesita el intérprete para poder ejecutar

Solución híbrida: la máquina virtual (Java)

Solución híbrida: la máquina virtual (Java) Se compila el código fuente y se obtiene código máquina de una máquina virtual Al código máquina virtual se le denomina byte-code La máquina virtual en realidad es un intérprete que después va ejecutando (traduciendo a código máquina real) instrucción a instrucción el byte-code

Lenguaje C Historia Principios 70 s: Dennis Ritchie, Laboratorios Bell de AT&T, creado para desarrollar UNIX 1983: ANSI C 1990: estándar ISO Primer programa #include <stdio.h> main() { printf("hola mundo!"); }

Comentando el código Es conveniente documentar el código: /* comentarios de varias líneas */ // comentario en una línea # include <stdio.h> /* la línia anterior ha d estar sempre que fem operacions de lectura o escriptura. Tot i això, hi ha compiladors que no ho necessiten*/ main () { //el codi del programa anirà entre les dues claus printf("hola mundo!"); //això escriu Hola mundo! per pantalla }

Compilación Librerías de C Edita hola.c compila hola.o Linka a.out a.exe Código fuente Código objeto Ejecutable gcc hola.c

Diseño de programas Problema Algoritmo Programa El Proceso de Diseño de Programas tiene dos fases: Resolución de Problemas Crea un algoritmo que resuelve un problema Implementación Traduce el algoritmo a un lenguaje de programación

Bloques 2 y 3 Un programa es como una receta. Contiene una lista de ingredientes (variables) y una lista de instrucciones (sentencias) que le dicen al ordenador qué hacer con las variables. Las variables pueden representar datos numéricos, caracteres,... Bloque 2: ingredientes : cómo escribimos los datos que hemos de utilizar Bloque 3: instrucciones : cómo escribimos las órdenes que se han de ejecutar