Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de...

75
Introducción Computación

Transcript of Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de...

Page 1: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Introducción

Computación

Page 2: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

ObjetivoPROPÓSITO DEL CURSOEste curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

La programación es una herramienta fundamental en el desarrollo profesional de todo ingeniero en la actualidad.

Se revisan los conceptos fundamentales de programación en el lenguaje C haciendo énfasis en la resolución de problemas.

Este curso apoya directamente a los cursos de Programación y Programación Numérica e indirectamente a todas las materias de su carrera.

OBJETIVOS GENERALESDescribir la estructura de un programa en el lenguaje C.

Analizar problemas y diseñar e implementar soluciones como programas de computadora.El alumno desarrollará un proyecto de programación y lo implementará utilizando el lenguaje C. Al finalizar los alumnos deberán ser capaces de escribir programas en C basados en consola.

Page 3: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Plan del cursoTemario

Primer parcial

UNIDAD 1. CONCEPTOS BÁSICOS DE PROGRAMACIÓN

Segundo parcial

UNIDAD 2: TOMA DE DECISIONES

UNIDAD 3: ESTRUCTURAS DE REPETICIÓN

UNIDAD 4: ARREGLOS

Tercer parcial

UNIDAD 5: DEFINICIÓN DE FUNCIONES

UNIDAD 6: CADENAS DE CARACTERES

PROYECTO FINAL

Page 4: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

CalificaciónMETODOLOGÍALos temas de cada unidad serán impartidos por el profesor. Se incluirán ejemplos prácticos de cada tema.

EVALUACIÓNPara la evaluación se realizarán 2 exámenes parciales y un examen final.

Presentación de un proyecto de programación.

CALIFICACIÓN

Cada calificación parcial: 60% examen 40% tareas 10% participaciónCalificación final: 60% examen 40% proyecto 10% participación

Calificación ordinaria: 1er parcial 30%2do parcial 30%final 40%

BIBLIOGRAFÍA

Como programar en C y C++, Deitel y Deitel. Prentice Hall. Segunda edición.El lenguaje de programación C, Kernighan, Brian W., Prentice Hall

Page 5: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Computador digital

Es un dispositivo electrónico programable, diseñado para llevar a cabo tareas de manipulación de información con gran rapidez.

El rango de aplicaciones abarca desde usos comerciales (facturación, control de inventario, etc) hasta aplicaciones científicas o ingenieriles como control de experimentos de un laboratorio, extensivos cálculos en dinámica de fluídos, o el control de naves espaciales hasta juegos altamente entretenidos.

Se utilizan en todas las actividades humanas, sobretodo en las científicas.

Es indispensable para el trabajo de un Ingeniero o científico.

Page 6: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Arquitectura simplificada de un computador

Hardware

Se denomina así a todos los componentes físicos del computador o sistema de cómputo.

Los componentes principales de un computador (Hardware) son:

Unidad central de Procesamiento (CPU) Memoria de acceso aleatorio (RAM)

Memoria de acceso sólo a lectura (ROM)

Dispositivos de Entrada y Salida

Page 7: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Algunos dispositivos de Entrada Salida

•Medios de almacenamiento masivo (Diskettes, discos magnéticos, ópticos, magneto-ópticos, cintas magnéticas, memorias USB, etc.) utilizadas como un medio masivo no volátil de almacenamiento de datos.

•Teclado: Dispositivo de entrada de información.

•Monitor: Dispositivo de salida de información.

•Mouse: Dispositivo de entrada de datos por apunte y selección.

•Impresor: Dispositivo de salida de información en papel.

•Puertos de comunicación: Canales de comunicación de datos entre computadores.

•Conversores Analógico-Digitales y Digitales-Analógicos de datos: Son canales de entrada o salida de datos en forma analógica.

Page 8: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Software

Son los programas que dirigen la operación del Hardware para la solución de un problema, siendo su funcionalidad fácilmente modificable.

Según su funcionalidad se lo puede clasificar en:

•Sistema Operativo (S.O.)

•Aplicaciones

•Sistemas de desarrollo

Page 9: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Sistema Operativo El sistema operativo es un conjunto de programas que se encargan de realizar la administración de todos los recursos que posee un computador. Además provee a los programas de una interfase con el Hardware.

En los S.O.s modernos se pretende que la programación se independice del hardware específico del computador sobre el cual corre, permitiendo transportabilidad de programas entre computadores de arquitectura disímil.

Page 10: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Aplicaciones

Son programas o conjuntos de programas que llevan a cabo tareas específicas:

•Manejo de Bases de Datos

•Cálculo científico

•Procesamiento de textos

•Diseño asistido por computador

•Control de procesos

•Planillas de cálculo

•Sistemas de graficación

•Planificación empresarial

•etc.

Page 11: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Sistemas de desarrollo Son conjuntos de programas destinados a la generación de aplicaciones. Estos se pueden clasificar de diversas maneras

De acuerdo a su nivel de abstracción

Lenguajes de bajo nivel de abstracción: Son lenguajes en que el programador debe especificar las tareas que debe realizar el computador, desde un punto de vista muy cercano al hardware (Assembler, código de máquina, etc.)

Lenguajes de alto nivel de abstracción: El programador manipula entidades abstractas, sin involucrarse en los detalles de su implementación interna (Pascal, Fortran, C, Java, etc).

Page 12: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Sistemas de desarrollo (continuación)

De acuerdo a las metodologías de programación utilizadas

Lenguajes Imperativos: Son aquellos en que el programador debe especificar en forma detallada el flujo del programa. (Assembler, C, Basic, Fortran, Pascal, etc.).

Lenguajes Declarativos: Son aquellos en que el programador debe poner énfasis en la definición del problema, más que en su solución, descansando esta última en mecanismos del lenguaje mismo. (Prolog, Lisp, etc).

Lenguajes Orientados a Objetos: El programador define entidades (objetos) caracterizadas por un estado interno, y un conjunto de mecanismos capaces de modificarlo. Esto permite abstraer entidades físicas con más facilidad, brindando una manera más directa para la modelización de un problema. (C++, Smalltalk, Objective C, Eiffel, CLOOS, ADA, HyperCard, etc.)

Lenguajes Mixtos: Son aquellos que permiten al programador mezclar metodologías de programación (Mathematica, SMP, Nexpert Object, etc.).

Page 13: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Sistemas de desarrollo (continuación)

De acuerdo a la manera de ejecutar un programa

Intérpretes: Son aquellos en que existe un proceso adicional al programa, que se encarga de ir traduciendo las sentencias del programa a lenguaje de máquina, durante la ejecución misma. Otorgan flexibilidad, pero a costa de pérdida de eficiencia.

Compiladores: El proceso de traducción a código de máquina se realiza antes de la ejecución. Esto aumenta considerablemente la eficiencia, a costa de pérdida en la flexibilidad durante el desarrollo de un programa.

Ambientes de programación: Son ambientes ricos para el programador, facilitando la tarea de desarrollo, depuración y prueba de un programa.

Page 14: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Tarea

1. Describa brevemente la función de los elementos que constituyen un sistema de cómputo.

2. Desde su punto de vista, ¿cree usted que sea importante saber programar una computadora? ¿Por qué si o por que no?

Page 15: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo de CPU

Page 16: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

CPU

EJEMPLO DE PROCESADOR

El procesador contiene un acumulador para almacenar uno de los operandos antes de realizar las operaciones binaria y almacenar el resultado después de éstas.

00000000 00000 00000000

00001 00000000

00010 00000000

... ...

11111 00000000

Memoria dir contenido

Acumulador

Page 17: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Formato de las instrucciones

Las instrucciones constan de secuencias de 8 bits.

Los primeros tres bits se utilizan para el código de la operación.

Los últimos cinco bits representan la dirección del operando.

0 1 1 0 1 1 0 1

Código de la instrucción Dirección del operando

Page 18: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

CONJUNTO DE INSTRUCCIONES

Códigode operación

Significado

001 Load (carga): cópiese el valor de la palabra direccionada en elacumulador

010 Store (almacena): cópiese el valor del acumulador en la palabradireccionada

011 Add (suma): reemplácese el valor actual del acumulador por lasuma del valor actual y el valor de la palabra direccionada.

100 Substract (resta): reemplácese el valor actual del acumuladorpor el resultado que se obtiene al restar, del valor actual, el

valor de la palabra direccionada.101 Branch (salta): Pásese a ejecutar la

instrucción contenida en la palabra direccionada.110 Branch if not 0 (salta si no 0): Pásese a ejecutar la

instrucción contenida en la palabra direccionada solamente siel valor actual del acumulador es diferente de cero.

111 Halt (alto): termina ejecución.

Page 19: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Dirección de la instrucción Código de la operación Operando00000 001 0101000001 010 0110000010 001 0111000011 011 0101100100 010 0111000101 001 0110000110 100 0110100111 010 0110001000 110 0001001001 111 00000

EJEMPLO DE PROGRAMA

Page 20: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Programa con mnemónicos

Direccion Mnemónico Operando00 carga 1001 almacena 1202 carga 1403 suma 1104 almacena 1405 carga 1206 resta 1307 almacena 1208 salta si no 0 0209 alto

Page 21: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

DirecciónContenido

00000 0010101000001 0100110000010 0010111000011 0110101100100 0100111000101 0010110000110 1000110100111 0100110001000 1100001001001 1110000001010 0000001101011 0000010001100 0000000001101 0000000101110 0000000001111 00000000

en binario

Programa

Datos

CONTENIDO DE LA MEMORIA ANTES DE LA EJECUCIÓN

Page 22: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

CONTENIDO DE LA MEMORIA DESPUÉS DE LA EJECUCIÓN

DirecciónContenido

00000 0010101000001 0100110000010 0010111000011 0110101100100 0100111000101 0010110000110 1000110100111 0100110001000 1100001001001 1110000001010 0000001101011 0000010001100 0000000001101 0000000101110 0000110001111 00000000

en binario

Page 23: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Problema de ejemploSe desea evaluar la fórmula 3A + 2B – C, con A = 5, B = 8, C = 3.

Se requieren al menos 3 localidades de memoria, una para A, otra para B y otra para C. Elegimos las localidades con direcciones 10, 11 y 12 para ese propósito. Para guardar el resultado se usará la dirección 13.

Para evaluar la fórmula se harán los siguientes pasos:

1. Cargar el valor de A en el acumulador2. Sumarle el valor de A al acumulador3. Sumarle el valor de A al acumulador4. Sumarle el valor de B al acumulador5. Sumarle el valor de B al acumulador6. Restarle el valor de C al acumulador7. Almacenar resultado8. Terminar

Calcula 3A

Calcula 3A + 2B

Calcula 3A + 2B – C

}}

Page 24: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Programa

Dir Mnemónico Operando00 carga 1001 suma 1002 suma 1003 suma 1104 suma 1105 resta 1206 almacena 1307 alto

Dirección Contenido

00000 00101010

00001 01101010

00010 01101010

00011 01101011

00100 01101011

00101 10001100

00100 01001101

00111 11100000

Page 25: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo 2

Se desea un programa para sumar los primeros 20 números impares.

En una localidad de memoria se almacenará el impar que se va a sumar.

Otra localidad almacenara la suma de los impares.

Se usará una localidad para contar el número de impares sumados (20).

En dos localidades mas se almacenarán las constante utilizadas, 1 y 2.

Page 26: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Algoritmo

1. Cargar el total 2. Sumar el número impar 3. Guardar el resultado en total4. Cargar el número impar 5. Sumar 26. Guardar el número impar7. Cargar el contador de impares8. Restar 19. Guardar contador de impares10. Si no es cero ir al principio del programa (línea 1)11. Terminar

Page 27: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Programa

00000 carga 19 0011001100001 suma 18 0111001000010 almacena 19 0101001100011 carga 18 0011001000100 suma 20 0111010000101 almacena 18 0101001000110 carga 16 0011000000111 resta 17 1001000101000 almacena 16 0101000001001 salta si no 0 1100000001010 alto 11100000

Dir mnemónico binario

01000 0000101001001 0000000101010 0000000101011 0000000001100 00000010

01000 0000000001001 0000000101010 0001010101011 0110010001100 00000010

Datos antes de la ejecución

Datos después de la ejecución

01000 contador de impares01001 constante 101010 número impar01011 suma total01100 constante 2

Dir uso

100 decimal

Page 28: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

TareaEscriba un programa para la CPU que evalúe la siguiente expresión:

4*A – 3*B + 10

Pruebe el programa para a) A = 5 y B = 4 b) A = 3 y B = 6 explique los resultados.

001 – load: cargar en el acumulador

010 – store: almacena en memoria

011 – add: suma al acumulador

100 – substract: resta al acumulador

101 – branch: salta a la instrucción direccionada

110 – branch if not 0: salsa si no cero a la instrucción direccionada

111 – halt: detiene

Page 29: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

SISTEMA BINARIO

Utiliza solo dos dígitos, 0 y 1. Un número en binario representa una suma de potencias de 2. Ejemplo:

1101002 = 1x25+ 1x24+ 0x23+ 1x22+ 0x21+ 0x20

= 32 + 16 + 0 + 4 + 0 + 0 = 5210

Para convertir de decimal a binario se sigue el siguiente esquema:

105 52 26 13 6 3 1 0

2 210 105 52 26 13 6 3 1

0 1 0 0 1 0 1 1

El binario se obtiene de la secuencia inversa de los residuos

El número binario equivalente es: 11010010

Page 30: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

discusiónDiscuta y defina los siguientes conceptos

CPU Bit

Memoria Byte

Dirección de memoria Número binario

Contenido de una localidad Programa

Instrucción Mnemónico

Código de instrucción

Operando de una instrucción

Acumulador

Salto incondicional

Salto condicional

Page 31: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Características de C

C es un lenguaje de programación de propósito general. Sus principales características son:

•Programación estructurada •Economía de las expresiones •Abundancia en operadores y tipos de datos. •Codificación en alto y bajo nivel simultáneamente. •Reemplaza ventajosamente la programación en ensamblador (assembler). •Utilización natural de las funciones primitivas del sistema. •No está orientado a ningún área en especial. •Producción de código objeto altamente optimizado. •Facilidad de aprendizaje (;-)).

Page 32: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Breve Historia

El lenguajes C nació en los Laboratorios Bell de AT&T

Asociado con el Sistema Operativo UNIX

Su eficacia y claridad han hecho que el lenguaje asembler apenas haya sido utilizado en UNIX.

Este lenguajes está inspirado en el lenguaje B escrito por Ken Thompson en 1970

B era un lenguaje evolucionado e independiente de la máquina, inspirado en la lenguajes BCPL concedido por Martin Richard en 1967.

En 1972, Dennis Ritchie, modifica el lenguaje B, creando el lenguaje C y reescribiendo el UNIX en dicho lenguaje.

La novedad que proporcionó el lenguaje C sobre el B fue el diseño de tipos y estructuras de datos.

Page 33: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

En suma …

Una de las peculiaridades de C es su riqueza de operadores,

Tiene sus inconvenientes:

Carece de instrucciones de entrada/salida, de instrucciones para manejo de cadenas de caracteres.

La excesiva libertad en la escritura de los programas puede llevar a errores en la programación.

C ha demostrado ser un lenguaje extremadamente eficaz y expresivo.

Page 34: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Primer ejemplo

// Fig. 1.2: fig01_02.cpp

// Primer programa en C++.

#include <iostream>

// la función main comienza la ejecución del programa

int main()

{

std::cout << "¡Bienvenido a C++!\n";

system(“PAUSE”);

return 0; // indica que el programa terminó satisfactoriamente

} // fin de la función main

Biblioteca para entrada y salida

Sentencia de salida

Espera una tecla

Page 35: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Compilar usando Dev-C++1. Escribir el código

2. Guardar en disco

3. Compilar

4. Ejecutar (correr)

Page 36: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Programa en ejecución

std::cout << "¡Bienvenido a C++!\n";

system(“PAUSE”);

return 0;

Cambio de línea

Page 37: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Error de compilación

Señalamiento de error

Explicación del error

expected “;” before “return”

esperaba “;” antes de “return”

Page 38: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Proceso de escritura de programas

Escribir programa en

el editor de texto

Compilar el programa

fuente

Hay errores?

Ejecutar

el programa

si

no

o Ctrl-F9

o Ctrl-F10

Page 39: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Secuencias de escape para la salida

\n Salto de línea, también endl

\t tabulación horizontal

\r retorno de línea

\\ diagonal invertida

\” imprime comillas

\OOO visualiza un carácter cuyo código ASCII es OOO en octal.

\xHHH visualiza un carácter cuyo código ASCII es HHH enhexadecimal.

Sirven para modificar la salida de datos

Se utilizan con cout para formatear la salida

Page 40: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplos de secuencias de escape

#include <iostream>using spacename std;int main(){ cout << "!Bienvenido a "; cout << "Dev-C++!\n"; system(”PAUSE”); return 0; }

#include <iostream>using namespace std;int main(){ cout << "¡Bienvenido\n\"a\"\nC++!\n"; system(“PAUSE”); return 0; }

Una línea mediante dos sentencias

Varias línea mediante una sentencia

Page 41: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

#include <iostream>using namespace std;int main(){ cout << "nombre\tdirección\ttelefono\n"; cout << "juan\tolmo 204 \t8-12-12-34\n"; cout << "maria\tpino 565 \t8-34-27-16\n"; system("PAUSE"); return 0; }

#include <iostream>

using namespace std;

int main()

{

cout << "nombre\tdirección\ttelefono\njuan\tolmo 204 \t8-12-12-34\nmaria\tpino 565 \t8-34-27-16\n";

system("PAUSE");

return 0;

}

Page 42: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

tarea

int main(){ cout << “Introducción a\nlas computadoras"; cout << “ y a la\n \t\"programación\""; cout << “ en\n \tC++\n"; return 0; }

¿Que salida genera el siguiente programa?

Escriba un programa que genere la siguiente salida utilizando una sola línea de salida.

Nombre Puesto Sueldo:

Juan Gerente $10,000

Lety TIC $20,000

Page 43: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Variables

Las variables permiten almacenar valores de diferentes tipos.

Sus características son

nombre – un identificador válido

tipo – int, float, double, char, etc.

valor – el valor almacenado

En C es necesario definir todas las variables que se utilicen

Las variables se declaran con la siguiente sintaxis:

tipo var1, var2, … ;

Ejemplos:

int a, b, c;

float r, s;

Declara a, b y c como enteras

Declara r y s como reales

Page 44: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Tipos de datos numéricos

Tipo Longitud Rangounsigned char 8 bits 0 a 255char 8 bits -128 a 127enum 16 bits -32,768 a 32,767unsigned int 16 bits 0 a 65,535short int 16 bits -32,768 a 32,767int 16 bits -32,768 a 32,767unsigned long 32 bits 0 a 4,294,967,295long 32 bits -2,147,483,648 a 2,147,483,647float 32 bits 3.4*(10^-38) a 3.4*(10^+38)double 64 bits 1.7*(10^-308) a 1.7*(10^+308)long double 80 bits 3.4*(10^-4932) a 1.1*(10^+4932)

La siguiente tabla resume los tipos de datos numéricos en Turbo C++

Page 45: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Constantes numéricas

Las constantes numéricas enteras pueden escribirse en decimal, hexadecimal u octal.

Decimal – secuencias de dígitos decimales con o sin signo (+, -).

Hexadecimal – secuencias de dígitos hexadecimales (0..9, a..f, o A..F) que inicia con 0x.

Ejemplo: 0x00ff o 0x00FF = 255

Octal – secuencias de dígitos octales (0..7) que inicia con 0.

Ejemplo: 04567 = 30210

Las constantes reales se especifican como secuencias de dígitos decimales y el punto decimal.

Los números en notación científica se expresan indicando el multiplicador de 10 mediante E+nn o e+nn.

Ejemplo: 12.4 x 104 = 12.4E+4 o 12.4E4

Page 46: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Operación de asignación

La operación básica para el uso de variables es la asignación

El tipo de constante a asignar debe de ser congruente con el tipo con el que fue declarada la variable.

Para la asignación se utiliza el símbolo =

Ejemplos:

a = 5;

b = 8;

cout << a << b;

Imprime

58

Page 47: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo//Ejemplo de secuencias de escape#include <iostream>using namespace std;int main(){ int a,b,c,d; //4 variables reales a = 45; b = 23; c = 368; d = 345;

cout << "Impresión de \"variables\"\n"; cout << "a\tb\tc\td\n"; cout << a << "\t" << b << "\t" << c << "\t" << d << endl; system(“PAUSE”); return 0; }

Impresión de "variables"a b c d45 23 368 345

Salida

Page 48: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Tarea//Ejemplo de asignaciones#include <iostream>using namespace std;int main(){ int a,b,c; // 3 variables enteras float x,y,z; //3 variables reales a = 5; b = -2; c = 8; x = a; a = b; y = x; z = 8.5; x = z; cout << "a=" << a << "\nb=" << b << "\nc="<< c << "\n"; cout << "x=" << x << "\ny=" << y << "\nz="<< z << "\n"; system(“PAUSE”); return 0; }

Que valores se imprimen?

Page 49: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Algunos operadores en C

Operación Operador Ejemplo

Suma + 5 + 8

Resta - 5 – 2

Multiplicación * 4 * 8

División / 2 / 7

Módulo % 5 % 3

Operadores aritméticos

Page 50: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Reglas de precedencia

El operador () se utiliza para modificar la precedencia de los operadores

Operador Operación Precedencia

( ) Paréntesis Precedencia más alta. Se evalúan primero los más anidados

*, / o % Multiplicación, división, módulo

Se evalúan de izquierda a derecha

+ o - Suma o resta Se evalúan de izquierda a derecha

Page 51: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplos de operadores

cd

ba

Notación estándar Notación en C

a + b – d/c

dca mod a % c + d

32

cba

(a + b)/(2*c + 3)

bcca

4 (a - c)/(4*b*c) o

(a - c)/4/b/c

Page 52: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo#include <iostream>//calcula el área y el volumen de una esferausing namespace std;main(){ float r,area,volumen;//radio, area y volumen de la esfera r = 4.5; area = 4*3.1416*r*r; volumen = 4*3.1416*r*r*r/3; cout << "el radio de la esfera es " << r << "\n"; cout << "el área de la esfera es " << area << "\n"; cout << "el volumen de la esfera es " << volumen << "\n"; system("PAUSE");}

24 rarea

334 rvolumen

Page 53: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Orden de evaluación

z = p r mod q + w/x-y z = p * r % q + w / x – y1 2 34 56

dcbdc

a a = (c + b * d)/(c – d)

12 345

a = c + b * d / c – d1 23 45

ERROR

Page 54: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

TareaEscriba las siguientes expresiones en C

Escriba un programa para calcular la fuerza entre dos masa m1 y m2. Utilice G = 6.7 x 10–11, utilice m1 = 2.5 kg m2 = 4.8 kg y r = 7.2 cm, la fuerza está dada por

221

rmm

GF

mM

wRmg

hy

RRRR

R

221 22

21

21

Page 55: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Entrada de datos

Para la lectura de datos desde el teclado puede utilizarse la función cin.

El formato para cin es:

cin >> var;

Al ejecutarse la función cin se detiene la ejecución del programa hasta que se teclee el valor de la variable solicitada.

Pueden leerse varias variables en una sola línea.

cin >> var1 >> var2 >> var3;

Las variables se leen separadas por espacios o la tecla enter.

Page 56: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Suma de enteros

// Programa de suma.#include <iostream>using namespace std;// la función main comienza la ejecución del programaint main(){ int entero1; // primer número que introduce el usuario int entero2; // segundo número que introduce el usuario int suma; // variable en la que se almacena la suma cout << "Digite el primer entero\n"; // indicador cin >> entero1; // lee un entero cout << "Digite el segundo entero\n"; // indicador cin >> entero2; // lee un entero suma = entero1 + entero2; // asignación del resultado a suma cout << "La suma es " << suma << endl; // impresión de suma return 0; // indica que el programa terminó satisfactoriamente

} // fin de la función main

Declaración de enteros

Sentencia de entrada

Asigna valor a variable desde el tecladoOperación de suma Concatenación de flujo

Page 57: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Memoria del programa de suma

38integer1

54integer2

92suma

ContenidoVariables

(direcciones de memoria)

Page 58: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

EjemploSe desea un programa para calcular el área de un triángulo dadas las coordenadas de sus vértices.

El área se calcula utilizando la siguiente fórmula:

23123113322121

yxyxyxyxyxyxarea

Variables de entrada: x1, x2, x3, y1, y2, y3

Variables de salida: area

Page 59: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Solución//Programa para calcular el área de un triángulo#include <iostream>using namespace std;int main(){ float x1,x2,x3,y1,y2,y3; // coordenadas del triángulo float area; // área del triángulo

cout << "Teclee las coordenadas del primer punto: "; cin >> x1 >> y1; cout << "Teclee las coordenadas del segundo punto: "; cin >> x2 >> y2; cout << "Teclee las coordenadas del tercer punto: "; cin >> x3 >> y3;

area = (x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)/2.0;

cout << "área: " << area << endl; return 0; }

Page 60: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Esquema de programa simple

Un programa simple tiene el siguiente esquema general:

•Declaración de variables y constantes

•Lectura de datos de entrada

•Cálculo de valores de salida

•Impresión de resultados

Page 61: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Pasos a seguir

Los pasos a seguir para elaborar un programa simple son:

1. Determinar las constantes, variables de entrada y de salida y su tipo

2. Escribir la declaración de variables

3. Escribir las sentencias de entrada

4. Escribir las expresiones para realizar los cálculos

5. Escribir las sentencias de salida

6. Probar con algunos valores de entrada

Page 62: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo

Escriba un programa que lea el radio de un círculo e imprima su perímetro y área. Defina el valor de pi como 3.141592.

Constates:pi (3.1416)

Variables de entrada:radio – número real

Variables de salida:area – número realperimetro – número real

Declaración de variables de salida:float area, perimetro;

Declaración de variables de entrada:float radio;

Declaración de constante:float pi = 3.1415926535;

Page 63: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Sentencia de entrada:

cout << “Escriba el radio del círculo: “;

cin >> radio;

Cálculo de área y perímetro:

area = pi*radio*radio;perimetro = 2*pi*radio;

Sentencias de salida:

cout << “el área del círculo es: “ << area << “\n”;

cout << “el perímetro del círculo es: “ << perimetro << “\n”;

Page 64: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Programa completo#include <iostream>

using namespace std;

main(){

float pi = 3.1415926535; // valor de pi

float radio; // radio del círculo, variable de entrada

float area, perimetro; // área y perímetro del círculo

cout << “Escriba el radio del círculo: “;

cin >> radio;

area = pi*radio*radio;

perimetro = 2*pi*radio;

cout << “el área del círculo es: “<< area << “\n”;

cout << “el perímetro del círculo es: “<< perimetro << “\n”;

system(“PAUSE”);

}

Page 65: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Tarea

Escriba un programa para calcular la magnitud de la fuerza entre dos cargas eléctricas dadas las coordenadas de las cargas y la magnitud de cada carga. La fuerza se calcula con la expresión

212

212

21

yyxx

qqkF

k = 8.99x109.

Page 66: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Funciones matemáticasLa biblioteca math.h contiene la definición de muchas funciones matemáticas útiles. El siguiente es un listado breve de algunas funciones.

ceil(x)- redondea al entero más pequeño no menor que x.

cos(x)- coseno de x.

exp(x)- ex.

fabs(x)- valor absoluto de x.

floor(x)- redondea al entero más grande no mayor que x.

log(x)- logaritmo natural de x.

log10(x)- logaritmo base 10 de x.

pow(x,y)- xy.

sin(x)- seno de x.

sqrt(x)- raíz cuadrada de x.

tan(x)- tangente de x.

Page 67: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

EjemploCálculo del área de un triángulo conocidas las longitudes de los lados

//Programa para calcular el área de un triángulo#include <iostream>#include <math.h>using namespace std;int main(){ float a,b,c; // lados del triángulo float s; //semiperímetro float area; // área del triángulo cout << "Teclee las longitudes de los lados: "; cin >> a >> b >> c; // lee los lados s = (a + b + c)/2.0; area = sqrt(s*(s-a)*(s-b)*(s-c));

cout << "área: " << area << endl; return 0; }

Page 68: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Solución de cuadrática 1//Programa para resolver una ecuación cuadrática#include <iostream>#include <math.h>using namespace std;int main(){ float a,b,c; // coeficientes float d; //discriminante float x1,x2; // raices cout << "Teclee los coeficientes a,b y c: "; cin >> a >> b >> c; // lee los coeficientes d = pow(b,2)-4*a*c; x1 = (-b-sqrt(d))/2/a; x2 = (-b+sqrt(d))/2/a; cout << "x1: " << x1 << endl; cout << "x2: " << x2 << endl; system("PAUSE"); return 0;}

Page 69: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

TareaUtilice la función raíz cuadrada de C para los siguientes programas

Escriba un programa que lea el valor del área de la superficie de una esfera y calcule e imprima el valor del radio. (área = 4r2)

Escriba un programa que lea las coordenadas de dos puntos en el plano xy y calcule y despliegue la distancia entre dichos puntos.

212

212 yyxxd

Page 70: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Ejemplo de tiro parabólico

Haga un programa que lea la velocidad inicial de un proyectil y el ángulo respecto al eje x y calcule el alcance del proyectil, la altura máxima y el tiempo de vuelo.

h = altura máxima

R = alcance

T = tiempo de vuelo

g

vh

2

sen 022

0

g

vR 0

20sen2

gv

T 00sen2

Page 71: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Constantes:

PI – 3.14159265

g - 9.81

Los datos de entrada son la velocidad inicial y el ángulo del disparo:

v0 – velocidad inicial (tipo float)

ang – ángulo del disparo (tipo float)

Los datos de salida son:

h – altura máxima (tipo float)

R – alcance máximo (tipo float)

T – tiempo de vuelo (tipo float)

Declaraciones

float vo, ang; // datos de entrada

float h,R,T; // datos de salida

Page 72: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Lectura de datos:

La velocidad inicial la supondremos en m/s.

El ángulo del tiro lo supondremos en grados

NOTA: las funciones trigonométricas suponen el argumento en radianes.

cout << “Teclee velocidad inicial (en m/s): ”;

cin >> v0;

cout << “Teclee angulo del tiro (en grados): ”;

cin >> ang;

ang = ang*PI/180; // conversión a radianes

Page 73: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

Cálculo de resultados

h = v0*v0*sin(ang)*sin(ang)/2/g;

R = v0*v0*sin(2*ang)/g;

T = 2*v0*sin(ang)/g;

Salida de resultados

cout << “altura maxima: ” << h<< endl;

cout << “alcance maximo: ” << R<< endl;

cout << “tiempo de vuelo: ” << T<< endl;

Page 74: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

#include <iostream>#include <conio2.h>#include <math.h>

using namespace std;

main(){ float PI = 3.14159265; float g = 9.81; float v0,ang;// datos de entrada float h,R,T; // datos de salida

textbackground(LIGHTGRAY); clrscr(); textcolor(RED); cout << "TIRO PARABOLICO\n"; cout << "Teclee velocidad inicial (en m/s): "; cin >> v0; cout << "Teclee angulo del tiro (en grados): "; cin >> ang; ang = ang*PI/180; // conversión a radianes h = v0*v0*sin(ang)*sin(ang)/2/g; R = v0*v0*sin(2*ang)/g; T = 2*v0*sin(ang)/g; cout << "altura maxima: " << h << " m" << endl; cout << "alcance maximo: " << R << " m" << endl; cout << "tiempo de vuelo: " << T << " s" << endl;

system("PAUSE");}

Color de fondo

Color de texto

Borra

Pantalla

Biblioteca para manejo de entrada y salida

Page 75: Introducción Computación. Objetivo PROPÓSITO DEL CURSO Este curso está dirigido a los alumnos de primer ingreso en la carrera de Ingeniero Electrónico.

En la opción de Herramientas (tools) Opciones del compilador (compiler options) en la opción

Agregar estos comandos a la línea de comandos del enlazador

(Add these commands to the linker command line)

-lconio