Algoritmos y Lenguajes de Programación

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

1. Computadores y programación

Introducción a la programación

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

TEMA 3: El proceso de compilación, del código fuente al código máquina

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

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

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

Técnicas de Programación

Tema III: Introducción al lenguaje de programación

Lenguaje de Programación

PROGRAMACIÓN UNIDADES

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

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

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Informática, computadora, y programación. Fundamentos de programación. El hombre y sus primeros intentos de procesar la información

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

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Unidad II: Análisis semántico

Programación Orientada a Objetos

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Introducción a la Programación.

Instituto Tecnológico de Celaya

Lenguajes de programación Última modificación 2008/10

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

UNIVERSIDAD DE GUADALAJARA

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

Tema II: Metodología para la construcción de programas. Profesora: Nelly García Mora

LÓGICA DE PROGRAMACIÓN

Actividad de Evaluación Brandon Emmanuelle Cuevas Rangel GPO: 303 Carrera: Informática 3er Semestre Joel Rocha Barocio Cienega de Flores N.L.

FUNCIONAMIENTO DEL ORDENADOR

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Computadora y Sistema Operativo

Unidad III El lenguaje de programación C

: Algorítmica y Estructura de Datos I

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD DE CIENCIAS PROGRAMA DE MATEMÁTICAS PLAN DE ESTUDIOS

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

TEMA 1: SISTEMAS MODELADOS POR ECUACIONES DIFERENCIALES EN INGENIERÍA QUÍMICA. CLASIFICACIÓN. GENERALIDADES.

Lección 01. Introducción a los Lenguajes de Programación. Contenido. Conceptos Básicos. Lenguaje de Programación. Introducción al Lenguaje Maquina

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Pontificia Universidad Católica del Ecuador

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

Guía práctica de estudio 05: Diagramas de flujo

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Nombre de la asignatura: LENGUAJE DE PROGRAMACIÓN PARA INGENIERÍA. Básico ( ) Profesional ( X ) Especializado ( ) Práctica ( )

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Misión Sucre P.N.F. de Informática U.C.: Algoritmia y Programación. Elaborado por: Ing. Víctor Valencia

Fundamentos de programación. Diagramas de flujo, Diagramas N-S, Pseudocódigo y Java

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y Programas

Programa de Asignatura Programación Visual I

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

2.2 Nombres, Ligado y Ámbito

Diseño Estructurado de Algoritmos

Estructuras de control

Tema II: Metodología para la construcción de programas

Un. VI. Generador de código intermedio.

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

COMUNICACIÓN ENTRE EL CLIENTE Y SERVIDOR SIN PHP Y CON PHP. INTÉRPRETE PHP Y GESTOR DE BASES DE DATOS (CU00804B)

Construcción de tablas de análisis sintáctico LL(1)

Algoritmos. Diagramas de Flujo. Informática IV. L. S. C. Heriberto Sánchez Costeira

Introducción a la Operación de Computadoras Personales

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

Tema V Generación de Código

Processadors de Llenguatge II. Compiladores

Diseño Estructurado de Algoritmos

Java para no Programadores

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Programación I. Carrera: ECM Participantes Participantes de las academias de ingeniería electrónica de los Institutos Tecnológicos.

Dpto. Lenguajes y Ciencias de la Computación E.T.S.I. Telecomunicación. Laboratorio de Programación Uso del depurador en Dev-C++

ARQUITECTURA DE COMPUTADORAS II. Propósito del curso : Ingeniería Ingeniería en Sistemas. Hardware. Clave de la materia: 413

Bloque II. Elementos del lenguaje de programación Java

Escuela de Ingeniería en Informática Empresarial SYLLABUS

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

LENGUAJES DE PROGRAMACIÓN WEB (PHP1, HTML52)

Lenguajes de Programacion

INICIACIÓN A LA PROGRAMACIÓN I

TEMA 2. CONCEPTOS BÁSICOS DE ALGORÍTMICA

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

Introducción a los sistemas digitales

Tema 1: Computadores y Programas

Transcripción:

Introducción y horario Algoritmos y Lenguajes de Programación 543242-2 mariomedina@udec.cl Código: 543242-2 Carrera: Ing. Civil Electrónica Clases 7 de Marzo a 28 de Junio Horario clases Martes, 9:10 a 11:00, TM 3-3 CAMBIO DE HORARIO Y DE SALA! Viernes, 9:10 a 10:00, TM 3-14 Control de asistencia Administrivia Materiales del curso Profesor: Oficina 215, Escuela de Ingeniería Teléfono: 2203506 Correo electrónico: mariomedina@udec.cl Correo alternativo: mariomedina@gmail.com Web: http://mondrian.die.udec.cl/~mmedina InfoAlumno (http://infoda.udec.cl) Enlaces a software Copias de transparencias Tareas Otros materiales Notas Foros Subir tareas (!) Horario y lugar de las prácticas Software Horario de prácticas A anunciar Ayudante A anunciar Prácticas en el laboratorio Experiencias pasadas indican que prácticas se aprovechan mejor si se hacen frente al PC No hay práctica hasta que se anuncie en clases! Compilador C Dev-C++ (http://www.bloodshed.net/dev/) Bueno, bonito y barato (gratis!) Disponible a través de enlaces en InfoAlumno Instalado en los laboratorios de la Facultad de Ingeniería Otros compiladores A su cuenta y riesgo Tareas serán revisadas usando Dev-C++ 1

Evaluaciones Tareas (30%) Cada 2 semanas aprox. 2 Exámenes (20% c/u) Mediados de semestre Fin de semestre Proyecto final obligatorio (30%) Final de semestre Recuperación (Se pondera 30%/70%) Examen práctico, oral ó escrito Política de copias Copia en una tarea 1 para todos los involucrados Se me perdió el diskette Se me olvidó la tarea en un PC del laboratorio No sé cómo pasó Copia en la segunda tarea 1 en la asignatura Copia en el proyecto 1 en la asignatura Bibliografía a usar Escójala Ud.! Pero qué texto escojo? Curso no tiene texto guía Libro clásico: B. Kernighan y D. Ritchie, El lenguaje de programación C, 2da. Edición El nuevo testamento Otros apuntes y tutoriales Aprenda lenguaje ANSI C como si estuviera en primero http://c.conclase.net Google! Objetivos del curso Lenguajes de programación Aprender a programar Aprender sobre estructuras de datos Aprender sobre algoritmos Aprender a escribir programas Aprender lenguaje C Objetivo: indicarle al computador lo que deseamos que haga Calcula el promedio de las tareas Lenguaje natural Computador no lo entiende! Computador sólo entiende código binario Secuencia de 1s y 0s 00110110111011011.... 2

Programación de computadores Computadores sólo hacen lo que se les pide Operaciones sumamente básicas Sumar 2 números Verificar si un dato es igual a 0 Saltar de una instrucción a otra Programar un computador implica expresar la solución a un problema en términos que éste entienda Programas y algoritmos Programa: colección de instrucciones de computador necesarias para resolver un problema determinado Algoritmo: método utilizado para resolver el problema Un algoritmo dado puede expresarse de miles de maneras, dependiendo del Lenguaje de programación Sistema computacional Programador Ejemplo: Es n par ó impar? Brecha linguística Algoritmo: 1. Dividir n por 2 2. Verificar el resto 3. Si es 1, n es impar 4. Si es 0, n es par Programa en C: if n%2 == 1 printf Impar\n ; else printf Par\n ; Cómo pasar del algoritmo al programa? Brecha linguística traducción Lenguajes de programación ayudan a cerrar la brecha linguística entre lo que queremos decir y lo que el computador entiende Lenguaje natural y lenguaje formal Niveles de lenguajes Lenguaje natural Usado para comunicación oral y escrita Producto de evolución, no invención Lenguaje formal Diseñado para un propósito específico Matemáticas: usa lenguaje formal para hablar de relaciones entre símbolos y números Química: lenguaje formal para átomos y moléculas Computación: lenguaje formal para expresar procedimientos (algoritmos) Lenguajes de programación Lenguajes formales para expresar computaciones Lenguajes de alto y bajo nivel Relación entre el lenguaje de programación y el lenguaje binario de la máquina Bajo nivel: correspondencia 1-a-1 entre instrucciones de programa y código binario Alto nivel: correspondencia 1-a-muchos 3

Lenguajes de bajo nivel Lenguajes de alto nivel Lenguaje ensamblador o assembly El más cercano al código binario Correspondencia 1-a-1 LOAD R1, Dato ADD R1, R2 MULT R2, R4 STORE R4, Result 0101000100011001 0101001100010010 0101110100100100 0101001001001010 Distintos niveles de abstracción Más lejos de la máquina Máscercade laspersonas Más fáciles de programar Portables entre sistemas Deben ser traducidos a código binario Lenguajes interpretados y compilados Lenguajes mixtos Lenguajes interpretados Ventajas de la interpretación Código Fuente Intérprete Programa intérprete lee el programa (código fuente) y lo ejecuta paso a paso Independencia de la plataforma Mismocódigofuente Tipos dinámicos Tipos de datos definidos en tiempo de ejecución Facilidad de depuración Interactividad con usuario Programas más pequeños Lenguajes compilados Ventajas de la compilación Código Fuente Compilador Prog. Ejecu table Ejecutor Compilador traduce código fuente a código objeto Ejecutor carga el programa y lo ejecuta Ejecución de código es más rápida Traducción a lenguaje de máquina ya fue hecha Código generado es más eficiente Compilador tiene acceso a todo el código, lo que facilita la optimización del código Principal desventaja es el ciclo de trabajo Editar-Compilar-Depurar Lento y tedioso 4

Lenguajes mixtos Esquemas mixtos Código Fuente Compilador Prog. Inter medio Compilador traduce código fuente a código intermedio Ejecutor carga el programa, lo transforma en código objeto y lo ejecuta Ejecutor Compilador traduce programa fuente a lenguaje intermedio (bytecode), de nivel más alto que lenguaje de máquina Bytecode se puede ejecutar eficientemente sobre una máquina virtual Presenta una abstracción del computador real Simplifica optimización de código Busca ventajas de compilación e interpretación Ventajas de los esquemas mixtos Algunos lenguajes de alto nivel Ejecución de código rápida Traducción a lenguaje intermedio ya fue hecha Traducción a lenguaje de máquina es fácil Código intermedio generado eficiente Ciclo de trabajo más rápido Código intermedio es portable Tipos y alcances dinámicos Compilados C C++ FORTRAN COBOL Pascal C# BASIC Ruby Interpretados Javascript BASIC Scheme MATLAB Mathematica Smalltalk Maple Mixtos Python Perl PHP Java Qué es un programa? Secuencia de instrucciones que realizan una computación, que puede ser: Matemática: maneja números Simbólica: maneja texto Programar consiste en expresar una tarea grande y compleja en subtareas cada vez más pequeñas, hasta finalmente expresar la tarea usando las instrucciones del computador Instrucciones de un lenguaje computacional Todo lenguaje computacional posee instrucciones de Entrada de datos Salida de datos Operaciones matemáticas Verificación de condiciones Repetición 5

Qué es la depuración? Sintaxis de un lenguaje Programación es un proceso complejo Errar es humano! Proceso de eliminar errores de un programa se llama depuración (debugging) Consume el 80% del tiempo! Errores detectados por el compilador Errores detectados por el ejecutor Errores no detectados! Todo lenguaje tiene una sintaxis Sintaxis: reglas sobre la estructuras válidas en el lenguaje Castellano: Tilde en palabras agudas terminadas en n, s o vocal Sustantivos propios llevan mayúsculas Lenguaje C: Estudiaremos su sintaxis en este curso El compilador revisa la sintaxis Lenguajes de programación tienen más reglas sintácticas que lenguajes hablados Compilador interpreta literalmente todo lo escrito No perdona errores Ej: C = A//B; Entrega mensajes indicando posible causa Saber interpretar estos mensajes Errores de tiempo de compilación Errores pueden detectados al ejecutar Errores de tiempo de ejecución Error no aparece hasta ejecutar el programa Ejemplo: C = A/B; Código es válido Qué pasa si B = 0? Programa se cae al ejecutarse (A veces) indica que hubo una división por cero Errores de lógica del programa Lectura recomendada Programa compila y se ejecuta sin problemas Programa no hace lo que queremos Pero, programa sólo hace lo que le decimos que haga! Error en la lógica del programa Depurador ayuda a encontrar errores logicos Requiere bastante intervención humana! Peter Norvig, Aprende a programar en 10 años http://loro.sourceforge.net/notes/21-dias.html Programar es difícil Programar bien es aún más difícil Sólo se puede aprender haciendo! 6