fundamentos de programación curso propedéutico maestría en ingeniería electrónica

29
Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Upload: xavier-farias-hernandez

Post on 02-Feb-2016

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Fundamentos de Programación

Curso Propedéutico

Maestría en Ingeniería Electrónica

Page 2: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Breve historia de CC es un lenguaje de programación creado en 1969 por Ken Thompson y Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.

Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix.

C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje débilmente tipado de medio nivel pero con muchas características de bajo nivel.

Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel.

Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.

Page 3: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Entorno de C++

EditorDisco

PreprocesadorDisco

CompiladorDisco

Editor de enlacesDisco

Crea el programaarchivo .c o .cpp

Procesa directivas

Genera código objetoarchivo .obj

Crea archivo ejecutablearchivo a.out o .exe

Page 4: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Entorno de C++ (cont.)

Cargador

Disco

Pone el programa ejecutable en memoria

Memoria principal

CPU

Memoria principal

La CPU ejecuta las instrucciones en la memoria

Page 5: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Compilación con Turbo C++El compilador de Turbo C++ es el ejecutable tcc.exe

Los programas pueden editarse en cualquier editor de texto simple como Edit, Notepad, o en el ambiente de Turbo C++ (tc.exe).

Puede usarse también el ambiente JGrasp debidamente configurado.

Para compilar desde cualquier ruta, asegúrese que la ruta a los ejecutables de Turbo C++ se encuentre en la variable PATH del sistema.

Ejemplo:

c:>edit uno.cpp

c:>tcc uno.cpp

c:>uno

Bienvenido a C++!

c:>

Crea uno.obj y uno.exe, si no hay errores

Carga y ejecuta uno.exe

Crea uno.cpp

Page 6: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Compilación en UnixExisten muchos compiladores de C.

El cc es el compilador estándar de Sun.

El compilador GNU de C es gcc, el cual es bastante popular y esta disponible en varias plataformas.

Existen también compiladores equivalentes de C++ los cuales usualmente son nombrados como CC.

Sun provee CC y GNU GCC. El compilador de GNU es también denotado como g++.

El comando básico de compilación es:

gcc programa.c

O

gcc -o programa programa.c

donde programa.c es el nombre del archivo

Page 7: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Primer programa en C

#include <iostream.h>

// la función main comienza la ejecución// del programaint main(){ cout << "¡Bienvenido a C++!\n"; return 0; // indica que el programa // terminó satisfactoriamente} // fin de la función main

Necesaria para entrada y salida

Sentencia de salida

Debe regresar algún valor

Los comentarios empiezan con //

Page 8: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Características de los programas en C

Todo programa en C tiene el siguiente formato

[Archivos de inclusión]

[Declaraciones globales]

int main(){

sentencias;

return 0;

} Debe haber una función main.

El código ejecutable va en esta función.

Page 9: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Secuencias de escape

\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 10: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Ejemplos de secuencias de escape

#include <iostream.h>int main(){ cout << "¡Bienvenido a "; cout << “C++!\n"; return 0; }

#include <iostream.h>int main(){ cout << "¡Bienvenido\na\nC++!\n"; return 0; }

Una línea mediante dos sentencias

Varias línea mediante una sentencia

Page 11: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Pregunta rápida

#include <iostream.h>int main(){ cout << “Introducción a\nlas computadoras"; cout << “ y a la\n programación"; cout << “ en\n C++\n"; return 0; }

¿Que salida genera el siguiente programa?

Page 12: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 13: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 14: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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: 0456 = 302

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 15: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 16: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Ejemplo//Ejemplo de secuencias de escape#include <iostream.h>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; return 0; }

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

Salida

Page 17: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Ejemplo de asignaciones//Ejemplo de asignaciones#include <iostream.h>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"; return 0; }

Que valores se imprimen?

Page 18: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Tarea #1Escriba un programa en C que despliegue los siguientes letreros

Curso propedéuticoMaestría en Ingeniería ElectrónicaFacultad de Ciencias

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

***************

Escriba un programa que imprima la siguiente tabla. Utilice tabuladores.

Color R G BRojo 255 0 0Verde 0 255 0Blanco 255 255 255Gris 128 128 128

Escriba un programa que declare las variables a y b como enteras y las variables c y d como reales. Asigne valores aceptables a cada variable. ¿Es posible asignar una variable entera a una real? ¿Es posible asignar una variable real a una entera? Escriba código para probar lo anterior y asigne diferentes valores. ¿Por que se dice que C es débilmente tipado?

Page 19: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 20: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 21: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 22: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 23: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Suma de enteros

// Programa de suma.#include <iostream.h>// 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 24: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Memoria del programa de suma

38integer1

54integer2

92suma

ContenidoVariables

(direcciones de memoria)

Page 25: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 26: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Solución//Programa para calcular el área de un triángulo#include <iostream.h>#include <math.h>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 27: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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 28: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

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.h>#include <math.h>int main(){ float a,b,c; // lados del triángulo float s; //semiperímetro float area; // área del triángulo

cout << "Teclee la longitud 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 29: Fundamentos de Programación Curso Propedéutico Maestría en Ingeniería Electrónica

Tarea #2

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.

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

2122

12

21

yyxx

qqkF

k = 8.99x109.