Informática 1

  • Ing. Ignacio Javier Bonelli (Profesor)

  • Ing. Hector Levi (JTP)




Curso: R1021

  • Sábado de 08:30 a 12:30 hs
  • Medrano

Preguntas sobre ustedes...


  • ¿Algún Recursante?
  • ¿Técnicos o Bachiller?
  • ¿Formación en programación? (Si/Algo/No)
  • ¿Lenguaje? (JS, Python, otro)
  • ¿Cantidad de materias cursando?
  • ¿Como pasaron el curso de ingreso?

Dictado 2022


¡Presencial!


Aproximadamente 28 clases...

Informática 1

  • Materia exigente para los que no tienen ninguna formación en programación.
  • Única materia del departamento de electrónica en el primer nivel.
  • Contenidos mínimos:
    • Estructura de una computadora. Sistemas de numeración y aritmética binaria. Diagramas de flujo.
    • Introducción al lenguaje C. Control de flujo en C. Funciones en C. Punteros y arreglos en C
    • Estructuras y uniones en C. Campos de bits. Manejo de archivos en C. Archivos de texto y archivos binarios.
    • Uso del lenguaje C en aplicaciones de bajo nivel. Operaciones a nivel de bits.

Por que programar?

Electrónica vs Sistemas

  • Sistemas: Grandes, abstracción, no instalan su maquina, no saben de hardware, etc...
  • Electrónica: Mundo Analógico inicialmente (y todavía un poco). Ahora mucho Digital. Por lo tanto programación es IMPORTANTE.
    • Digitales Antes: Inicialmente baja integración, por lo tanto solo compuertas lógicas, contadores, divisores, etc...
    • Digitales Ahora: MicroControlador, MicroProcesador, DSP, SoC/ASIC, FPGA.

Electrónica Digital vs Analógica

  • Electrónica Analógica
    • Electrónica Aplicada
      • Amplificadores (mono etapa y multi-etapa), Realimentación (negativa y positiva)
        • Mono Etapa => Electrónica Básica
        • Multi Etapa => Electrónica de bloques (nuevamente abstracción)
      • Sistemas analógicos de transmisión de señales: Moduladores, Realimentación, etc..

Electrónica Digital vs Analógica

  • Electrónica Analógica
    • Teoría de Circuitos: Filtros (y otras cosas)
      • Pasivos y con elementos simples
      • Activos con amplificadores multi-etapa (nuevamente abstracción)
      • Digitales usando lo que se ve en "Análisis de señales y sistemas" (aka Matemática Discreta)
    • Sistemas de control
      • Analógicos, realimentados, etc...
      • Digitales con lógica programada

¿Por que vemos C?

  • ¿No es un leguaje viejo?
  • ¿Por que no ver uno mas nuevo?
  • ¿Es mas difícil que otros? ¿Por qué?
  • Números de github provistos por githut.info

Sumario de Repositorios

Lenguajes más activos

Resumiendo

  • Razones de aprende informática 1 en Electrónica:
    • La conquista del mundo digital en todo lo referente a electrónica.
    • Necesidad de programación en electrónica tanto para microcontroladores como computadoras
  • Por Qué los temas:
    • Programación Estructurada: Estrategias para resolver problemas y paradigmas de la programación. Dividir problemas en partes.
    • Lenguaje C: Ampliamente usado, sintaxis extendida, posibilidad de programar estructuradamente, rapidez de ejecución, gran flexibilidad, amplia librería, etc...
    • Linux: Código abierto, facilidades en C, mucha documentación, etc...

Temario Abreviado

  • Estructura de una Computadora
  • Sistemas de Numeración y representación numérica
  • Introducción a la Programación Estructurada
  • El soporte del Sistema Operativo
  • Introducción al Lenguaje C
  • Control de Flujo en Lenguaje C
  • Funciones en Lenguaje C
  • Arreglos en C
  • Punteros en C
  • Manejo de Strings
  • Manejo de archivos en C
  • Uso del Lenguaje C en aplicaciones de bajo nivel y operaciones de Bits
  • Librerías avanzadas: Paralelismo y redes de dato.

Evaluaciones

  • Primer parcial (Jul/16): Punteros, String, Arreglos, Argumentos main, Funciones, ...
  • Segundo parcial (Nov/26): Archivos, Uniones y campos de bit, Sockets, Multiprocesamiento, ...
  • ¿Examenes practicos? (menos que un parcial, mas que un práctico, llevan nota)
  • Entrega de TPs y firma de los TPs al final de la cursada
  • Recuperatorios unificados en Diciembre y en Febrero

Condiciones de promoción

La Universidad

  • Dedicación, paciencia y decisión
  • Aprender a aprender
  • Búsqueda de fuentes de información
  • La cursadas y los finales
  • Programa de carrera


Confucio (551-478 a. C.) pensador/filosofo chino:

  • "Me lo contaron y lo olvidé;
  • lo vi y lo entendí;
  • lo hice y lo aprendí".

Como aprendemos segun William Glasser

Contacto


Bibliografía Obligatoria

  • H.M. Deitel, P.J.Deitel. Como programar C, C++ y Java, 4o Edición . Editorial: Pearson Addison-Wesley.
  • B. Kernighan, D.Ritchie. El lenguaje de programación C, 2o Edición. Prentice Hall.
  • R. Stevens(2005). Programación Avanzada en el entorno UNIX, 2o Edición. Addison Wesley.
  • L. Null, J. Lobur. Essentials of Computer Organization and Architecture. Pennsylvania State University. Jones and Bartlett Publishers
  • W. Stallings. Organización y Arquitectura de Computadores 7a. Edición. Ed. Prentice Hall.

Material de referencia

Material Español



Material en ingles

¿Que vamos a hacer?

Primer ejemplo C: Suma



#include <stdio.h>

int main(void) {

	int A=4,B=6;
	int R;

	R=A+B;

	printf("%d\n",R);

	return 1;
}

Herramientas: Geany

Compilando en la terminal


ignacio@ubuntu-sl410:~/info1$ ls -l
-rw-rw-r-- 1 ignacio ignacio   63 Apr  1 12:14 suma.c
ignacio@ubuntu-sl410:~/info1$ cat suma.c  
#include <stdio.h>

int main(void) {

        int A=4,B=6;
        int R;

        R=A+B;

        return R;
}
ignacio@ubuntu-sl410:~/info1$ gcc -o suma suma.c
ignacio@ubuntu-sl410:~/info1$ ls -l
-rwxrwxr-x 1 ignacio ignacio 8468 Apr  1 12:16 suma
-rw-rw-r-- 1 ignacio ignacio   63 Apr  1 12:14 suma.c
ignacio@ubuntu-sl410:~/info1$ suma
bash: suma: command not found
ignacio@ubuntu-sl410:~/info1$ ./suma
10
	

Herramientas: Bless (c)

Herramientas: Bless (bin)

¿Que hicimos?


C a Assembler y luego binario

Probando

Herramientas:



Instalando geany y gcc:


$ apt-get install geany build-essential

Codigo:

Historia

Video sobre los principios de Unix y las máquinas para las que fue diseñado (en inglés)

Ley de Moore y su probable fin (en inglés)

Historia



Apollo Guidance Computer

Que hace una computadora

  • Almacena datos (texto, música, videos, etc...)
  • Muestra datos
  • Procesa datos (operaciones aritmético lógicas)
  • Interactua con el mundo físico
    • Toma datos
    • Controla dispositivos externos

Estructura de una Computadora

  • PC
  • Notebook
  • Tabletas
  • Celular
  • Smart TV
  • Etc...


¿Cuales son sus partes?

  • Identificación de partes comunes
  • Como se organizan?
  • Que hay dentro

Estructura de una Computadora

  • Unidades fundamentales (bit y byte) y sus múltiplos.
  • Memoria:
    • Definición de memoria
    • Capacidad de memoria
    • Tipos de memoria
  • Unidad Central del Proceso (CPU):
    • Unidad Aritmética y Lógica (ALU)
    • Unidad de Control (interno y externo)
    • Registros (Generales, Contador de Programa, etc...)

Estructura de una Computadora

  • Dispositivos de entrada/salida (I/O)
  • Ejecución de instrucciones:
    • Fase de búsqueda de instrucciones
    • Secuencia de Instrucciones (Programa)
  • Conceptos de Hardware y Software:
    • Interacción entre ambos elementos.
  • Diferentes plataformas:
    • PC
    • Embeeded PC
    • Microcontroladores
    • Celulares

CPU

Aritmetical Logical Unit (ALU) Arquitectura 1, Arquitectura 2 y VHDL paper

Computadora

Computadora

Almacenamiento

  • Los bytes almacenados pueden representar
    • Un número (sistemas de representación numérica)
    • Un código (como por ejemplo caracteres – ASCII)
    • Instrucciones
  • Medios:
    • Memoria (RAM, ROM, FLASH...)
    • Discos Magnéticos (HDD)
    • Discos Ópticos (CD, DVD, BlueRay...)
    • Pendrives
    • Sdcard
    • etc...

Unidad 1

Estructura de una Computadora

  • Antecedentes históricos
  • Definición de unidades fundamentales (bit y byte) y sus múltiplos
  • Definición de memoria. Capacidad de memoria. Tipos de memoria
  • Buses
  • Unidad Central del Proceso (CPU)
  • Unidad Aritmética y Lógica (ALU)
  • Unidad de Control | Contador de Programa

Unidad 1

Estructura de una Computadora

  • Dispositivos de entrada/salida (I/O)
  • Ejecución de instrucciones. Fase de búsqueda de instrucciones. Secuencia de Instrucciones: Programa.
  • Conceptos de Hardware y Software. Interacción entre ambos elementos.
  • Asimilación de los conceptos teóricos enunciados en el modelo teórico, de modo que los alumnos puedan verificarlos tangiblemente en diferentes plataformas: PC, Embeeded PC, Microcontroladores.

Videos OnLine (EducAr)