1Metodologa de la Programacin IISIS 1101 B
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 1
SIS 1101 B
Programacin Estructurada
M.Sc. Ing. Carlos Balderrama Vsquez 227/09/2009
Objetivo General Que los estudiantes logren conocer y usar
eficientemente las distintas estructuras de datos para desarrollar algoritmos ms sencillos y ptimos y que ante distintas situaciones problemticas decidan con
M.Sc. Ing. Carlos Balderrama Vsquez 327/09/2009
situaciones problemticas decidan con criterio apropiado las estructuras de datos ms convenientes y apliquen las tcnicas de programacin ms adecuadas
2Objetivos Especficos
Conocer cul es la estructura de un programa escrito con un lenguaje de alto nivel
Distinguir distintos tipos de datos y las operaciones que se pueden realizar sobre ellos
Conocer las instrucciones de entrada y salida Aplicar todos estos conocimientos a la
resolucin de problemas sencillos
M.Sc. Ing. Carlos Balderrama Vsquez 427/09/2009
Bibliografa
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 5
Bibliografa a Emplear Fundamentos De
Programacin. Libro De Problemas. Algoritmos, Estructuras De Datos , Luis Joyanes Aguilar; Luis Rodrguez Baena; (McGRAW-HILL/INTERAMERICANA DE ESPAA,
Programacion En C++, Luis Joyanes Aguilar Mcgraw-hill (2000, 1 edicin)
M.Sc. Ing. Carlos Balderrama Vsquez 627/09/2009
NA DE ESPAA, S.A.U.)
Como Programar en C/C++ - H.M. Deitel / P.J. Deitel - Deitel, Deitel, Prentice Hall,
Programacion En C++. Algoritmos, Estructura de datos, Joyanes Aguilar Luis, Mcgraw-hill (2006, 2 edicin)
3Bibliografa Programacion en
C++ Para Ingenieros (Spanish Edition)by Fatos Xhafa, Pere-Pau Vazquez Alcocer, and Jordi Marco Gomez (Paperback - Jul 2006)
M.Sc. Ing. Carlos Balderrama Vsquez 727/09/2009
2006)
ftp://sistemas.edu.bo/cbalderrama/sis1101
www.sistemas.edu.bo/modlee/sis1101
Introduccin
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 8
Que es un programa?
La unin de una secuencia de instrucciones que un computador puede interpretar y ejecutar y un conjunto de p y j y jestructuras de datos que almacenan la informacin sobre la que la operan las instrucciones
4Que es un lenguaje de programacin? Es una tcnica de comunicacin estilizada
que se utiliza para controlar el comportamiento de una maquina ( l t t d )(usualmente un computador)
Como los lenguajes humanos, los lenguajes de programacin tienen reglas sintcticas y semnticas para definir el significado
Que es un lenguaje de programacin? Herramienta que permite a un
programador especificar de manera precisa: sobre qu datos una p qcomputadora debe operar, cmo deben ser estos almacenados y transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias
Que es un lenguaje de programacin? Ejemplos:
PascalC/C++JAVAFORTRANLISP
5M.Sc. Ing. Carlos Balderrama Vsquez 1327/09/2009
Caractersticas de los lenguajes de programacin Tipos de datos Estructuras de datos Instrucciones y Control de flujo Instrucciones y Control de flujo Filosofa de diseo Compilacin e Interpretacin
Paradigmas de programacin
Orientado a aspectos Concurrente Declarativo Funcional Imperativo Lgico Multiparadigma Orientado a objetos Scripting
6Lenguajes Funcionales
Definen programas y subrutinas como funciones matematicas
Muchos de estos lenguajes estan unidos a Muchos de estos lenguajes estan unidos a herramientas de calculo matematico
Ejemplos: Clean, Erlang, Haskell, Mathematica
Lenguajes basados en logica
Especifican un conjunto de atributos que una solucin debe tener, en vez de un conjunto de pasos para obtener la solucin
En este paradigma se definen reglas lgicas y En este paradigma se definen reglas lgicas y luego un motor de inferencia lgico permite extraer conclusiones o responder a preguntas planteadas al sistema
Ejemplos: ALF, Curry, Prolog, Oz
Programacin imperativa Opuesta a la programacin declarativa,
este paradigma describe la computacin en trminos de un estado del programa y d i t i bi di hde unas instrucciones que cambian dicho estado.
Los programas imperativos son una secuencia de comandos para que el computador realice
7Programacion Estructurada
Hace uso de las estructuras de control de flujo
Es Turing completa esto quiere decir que Es Turing completa, esto quiere decir que todo algoritmo computable puede ser escrito en trminos de programacin estructurada
Programacin procedimental
Es un paradigma de programacin basado en el concepto de llamado de procedimientos
Procedimientos, tambien conocidos como rutinas subrutinas metodos o funcionesrutinas, subrutinas, metodos o funciones simplemente consienen series de pasos computacionales.
Cualquier procedimiento puede ser llamado en cualquier punto durante la ejecucion de un programa, incluyendo otros procedimientos o en l mismo
Programacin Orientada a Objetos La idea detrs de la POO, es que un programa
de computador puede ser visto como abarcando una coleccin de unidades individuales objetos que actan unos con otrosindividuales, objetos, que actan unos con otros
Opuesto a la forma de ver tradicional en la cual un programa debe ser visto como una coleccin de procedimientos o simplemente una lista de instrucciones para el computador
8Estructura de un programa en C++programa en C++
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 22
Introduccin
El lenguaje C se desarrolla a mediados de los aos 70 por B. Kernighan Y D. Ritchie.
Ligado al sistema operativo UNIX.E l j d lt i l f ilid d d Es un lenguaje de alto nivel con facilidades de bajo nivel.
Permite programacin estructurada (como Pascal o Mdula) y manipulacin de cantidades mnimas de informacin (como el ensamblador).
Buen lenguaje para programar, pero mal lenguaje para aprender a programar.
Introduccin
9Versiones de C
32 Palabras Reservadascharchar voidvoid defaultdefault returnreturn
intint ifif breakbreak autoauto
floatfloat elseelse continuecontinue externextern
doubledouble dodo gotogoto registerregister
longlong whilewhile structstruct constconst
shortshort forfor unionunion staticstatic
signedsigned switchswitch enumenum volatilevolatile
unsignedunsigned casecase typedeftypedef sizeofsizeof
Estructura del programa
M.Sc. Ing. Carlos Balderrama Vsquez 2727/09/2009
10
Comentarios
Comentarios multi-lnea Comienzan con /* y terminan con */ No puede anidarse un comentario dentro de otro.
Comentarios de una sola lnea (C++, Java, Delphi). Comienzan al principio de la lnea con //
Ejemplo:
//Esto es un comentario/* Esto tambin es
un comentario */
# include Ciertos clculos se realizan de forma rutinaria en muchos programas y son
escritos por casi todos los programadores. Por ejemplo el calculo de una raz cuadrada es una serie de operaciones matemticas que seria largo y extenso de calcular para cada programa, en borland c++ para facilitar esto se ofrecen al programador las bibliotecas de funciones que realizan las operaciones comunes. Con las bibliotecas, solo necesitamos una instruccin de llamada a cada funcin.
Las funciones de biblioteca no solo realizan operaciones matemticas, sino manipulan muchas otras operaciones comunes. Por ejemplo, hay funciones de biblioteca que realizan operaciones de lectura y escritura de discos.
Las bibliotecas son suministradas al compilador generalmente en la cabecera del programa y son todas de extensin .h. Aqu se incluye una lista de las mas utilizadas, hay ms, que debes buscar en la bibliografa adecuada.
M.Sc. Ing. Carlos Balderrama Vsquez 2927/09/2009
Bibliotecas
M.Sc. Ing. Carlos Balderrama Vsquez 3027/09/2009
11
Identificadores Se utilizan para nombrar variables,
funciones, etiquetas y elementos definidos por el usuario.
Los primeros seis caracteres deben ser significativos (distinguirse de otro similar) ysignificativos (distinguirse de otro similar) y mximo puede tener hasta 31 caracteres.
El primer carcter debe de ser una letra o subguin. Posteriormente pueden ser letras, nmeros, signos de subrayado.
Existe diferencia entre maysculas y minsculas.
Identificadores
1 No pueden emplearse palabras reservadas como identificadores.
1 No pueden emplearse nombres de1 No pueden emplearse nombres de funciones que ya existan en el programa o en la librera de funciones de C.
1 No puede llamarse main.
Convenciones Empezar los nombres de funciones y de variables
con una letra minscula. Las constantes escritas con #define van con
maysculas como #define PI 3.1416 Las palabras intermedias comienzan con p
maysculas.sumaMatrices
Utilizar el subguin para separar palabras intermedias.suma_Matrices
Emplear nombres cortos para optimizar. (i, j, k, cont)
12
Constantes
Constantes de carcter.Ej. a, 0, \0x5, \0, \n, \t, $, \\, NULL
Constantes enteras.Ej 5 +5 5 \05 \0 5 5L 5U 5l tEj. 5, +5, -5, \05, \0x5, 5L, 5U, 5lu, etc.
Constantes reales.Ej. 0.5f, 0.5, 5e-01f, 5.0e-01, (float)5, etc.
Constantes de texto (Cadenas o Strings)Esto es una cadena
# define Se utiliza para asignar un identificador a
una constante.#define PI 3.1416#define NCOLS 20
El pre-procesador de C, sustituye la ocurrencia de PI por el valor 3.1416 en todo el programa antes de efectuar la compilacin, del mismo modo se sustituye NCOLS por 2.
Variables Una variable es una localidad de memoria
cuyo valor puede ser cambiado durante la ejecucin del programa.
Todas las variables deben de ser declaradas para se utilizadas. espacio(s) ; Ejemplo:
int a;float area, radio, volumen;
13
const Es un modificador de acceso que me
permite asignar a una variable un valor constante, es decir que una vez asignado a dicha variable su valor no podr ser modificado durante el programamodificado durante el programa.const esp = valor;
Ejemplo:const int a=10;const char pais[]=MXICO;const char *nombre=VLADIMIR;
volatile Es un modificador de acceso que me
permite cambiar el valor de una variable por medios no explcitamente especificados por el programa. Por p p p gejemplo la direccin de una variable global que apunta a un puerto externo.volatile esp =
valor; Ejemplo:
volatile unsigned char *puerto = 0x30;
Datos tipo enteros: unsigned: sin signo signed: con signo unsigned short: corto sin signo signed short: corto con signo unsigned long: largo sin signo signed long: largo con signo
M.Sc. Ing. Carlos Balderrama Vsquez 3927/09/2009
14
Datos tipo carcter
unsigned: sin signo signed: con signo
Datos tipo real double: doble signed: doble largo
M.Sc. Ing. Carlos Balderrama Vsquez 4027/09/2009
M.Sc. Ing. Carlos Balderrama Vsquez 4127/09/2009
Operadores Son palabras o smbolos que implican una
accin sobre ciertas variables. Pueden ser unarios (1 variable), binarios(2 variables) o ternarios (3 variables).
Operadores AritmticosO d R l i l Operadores Relacionales
Operadores Lgicos Operadores de Asignacin Operadores de Direccin Operadores de Bits
15
Operadores Aritmticos
Operador Nombre Descripcin
+ Suma 5+2 7
- Resta 5-2 3
* Multiplicacin 5*2 10
/ Divisin 5/2 2
% Mdulo 5%2 1
(tipo de dato) Cast forzado (double)5 5.0
Operadores RelacionalesOperador Nombre Descripcin
== Igual a if (a==s)
!= Diferente de if (a!=null)
> Mayor que if (a>0.5)
< Menor que if (a= Mayor o igual que if (a>=2f)
16
Operadores de AsignacinOperador Abreviado No Abreviado
= a=2; a=2;
++ n++; n=n+1;
n ; n=n 1;-- n--; n=n-1;
+= n+=2; n=n+2;
-= n-=2; n=n-2;
*= n*=2; n=n*2;
/= n/=2; n=n/2;
%= n%=2; n=n%2;
Operadores de BitsOperador Nombre Descripcin
>2;
>> Corrimiento a la b=a
17
Operadores De Direccin
Operador Nombre Descripcin
* Operador indireccin
Me da el valor que est almacenado en una direccin de memoria.direccin de memoria.
Tambin sirve para declarar una variable apuntador.
& Operador direccin
Me da la direccin de memoria de una variable.
Precedencia de Operadores( ) [ ] -> Alta prioridad! ~ + - ++ -- & * sizeof Unarios* / % + - Aritmticos> Corrimiento de bits> Corrimiento de bits< >= == != Relacionales& ^ | && || ?: Bits / Lgicos / Condicional= *= /= %= += -= &=^= |= =
Asignacin
, Evaluacin
Ejemplo#include #include #define VALOR 5.7double modulo3D( double x, double y, double z );double mod3; /* Variable global */double modulo3D( double x, double y, double z ){return(sqrt(x*x+y*y+z*z);
}
int main( void ){int x, y, z;x=y=z=VALOR;mod3=modulo3D(x,y,z);printf(\nEl mdulo es: %lf,mod3);return(0);
}
18
Funciones de Entrada y SalidaEntrada y Salida
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 52
ENTRADA - SALIDA ESTANDAR Son funciones definidas en la librera estndar. Para
usarlas es necesario incluir el fichero de cabecera de las funciones
#include
Estas funciones son: printf( ) Salida de datos con formato scanf( ) Entrada de datos con formato getchar( ) Entrada de caracteres. 1 caracter putchar( ) Salida de caracteres. 1 caracter fflush( ) Borrado del buffer del teclado.
M.Sc. Ing. Carlos Balderrama Vsquez 5327/09/2009
funcion printf ( ) Escribe una serie de caracteres en la salida
estndar (pantalla). Prototipo int printf (conts char *formato int printf (conts char formato
[,argumentoJ); Devuelve: Nmero de caracteres escritos.
float pi=3.141596; printf("El nmero pi vale %f ,pi);
M.Sc. Ing. Carlos Balderrama Vsquez 5427/09/2009
19
Formato: Cadena de caracteres, entre comillas dobles, que especifica cmo va a ser la salida. Incluye caracteres y especificaciones de formato.
Argumento: Indica las variables a escribir.E ifi i d f t Especificaciones de formato:
% [ancho] [.precision] ancho: Mnimo nmero de posiciones
reservadas para la salida. precisin: Mnimo nmero de posiciones
reservadas para la parte decimal.M.Sc. Ing. Carlos Balderrama Vsquez 5527/09/2009
Caracteres de Control
M.Sc. Ing. Carlos Balderrama Vsquez 5627/09/2009
funcion scanf ( ) Lee datos de la entrada estndar (teclado) , los
interperta y los almacena en los argumentos. Incluye caracteres y especificaciones de formato.
Prototipo int scanf (conts char *formato [,argumento]...);
Devuelve: El nmero de datos ledos. Si es cero indica que
no han sido asignados datos.
M.Sc. Ing. Carlos Balderrama Vsquez 5727/09/2009
20
Formato: Cadena de caracteres, entre comillas dobles, que especifica cmo van a ser introducidos los datos.
Segn se especifique en el formato , as debern ser introducidos los datos.A t I di l di i d Argumento: Indica las direcciones de variables que almacenarn los datos (&).
int a; float b; char c; scanf(%d %f %c" , &a, &b , &c) ; 5 2.3 b
M.Sc. Ing. Carlos Balderrama Vsquez 5827/09/2009
#include void main (void){ int a,r; // declaramos dos enteros
float b; //declaramos un realchar c, s[20]; // declaramos un carcter y una cadenaprintf (Introducir un entero, un real y un carcter :\n);
f (%d %f % & &b & )r=scanf (%d %f %c, &a, &b, &c);printf (N de datos leidos: %d,r);printf (Datos leidos: %d %f %c,a,b,c);
}
M.Sc. Ing. Carlos Balderrama Vsquez 5927/09/2009
#include void main(void){ char nombre[20], apellido[20];
printf (Introduce el nombre: );scanf (%s, nombre); //solo lee hasta el primer
// espaciofflush (stdin);printf (\nApellidos: );scanf ( ,apellidos);printf (\n\nNombre y Apellidos: %s %s ,nombre,apellidos);
}
M.Sc. Ing. Carlos Balderrama Vsquez 6027/09/2009
21
# include
Biblioteca de E/S por consola Este programa usa la definicin de cout
para escribir por consola y cin para leerpara escribir por consola y cin para leer informacin del teclado.
M.Sc. Ing. Carlos Balderrama Vsquez 6127/09/2009
M.Sc. Ing. Carlos Balderrama Vsquez 6227/09/2009
Ejercicios
1.- Escrbase un programa C que produzca por pantalla el siguiente mensaje:
Hola, estamos en clase.,
2.- Imprimir por pantalla:
Hola,estamos enclase.
22
Ejercicios (continuacin)
3.- Escribir un programa C que lea tres enteros y en diferentes lneas imprima:
A) El valor de su suma.El l d diB) El valor de su media.
C) El valor del producto.
4.- Escribir un programa C que lea cuatro enteros y en diferentes lneas imprima el valor del mayor y el valor del menor.
Estructuras de controlcontrol
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 65
Estructura Condicional (if) La forma mas simple de la estructura es:
if (expresion) accion ;
La sintaxis de una instruccin if asociada con un bloque de instrucciones es:
if (expresion) { Accion1; Accion2; Accion3; }
M.Sc. Ing. Carlos Balderrama Vsquez 6627/09/2009
23
Estructura Condicional (if) La forma completa de la estructura es: if (expresion) Accion1; else Accion2;
La sintaxis de una instruccin if asociada con un La sintaxis de una instruccin if asociada con un bloque de instrucciones es:
if (expresion) { Accion1; Accion2; Accion3; }
else { Accion4; Accion5; Accion6; }
M.Sc. Ing. Carlos Balderrama Vsquez 6727/09/2009
#include < stdio.h >#define SI 1 //similar a una etiqueta con un valor#define NO 0void main(void){ char ch;int mayu, numero, otro;mayu=numero=otro= NO // las igualamos todas a NOprintf("\n Introduzca un caracter ");printf( \n Introduzca un caracter... );scanf(" %c", &ch);if ( ch > = 'A' && ch < = 'Z' ) mayu = SIelse if ( ch > = '0' && ch < = '9') numero = SI;else otro = SI
}
M.Sc. Ing. Carlos Balderrama Vsquez 6827/09/2009
#include < stdio.h >void main(void) /* Menor de 3 numeros * I{ int x,y ,z;printf(" \nlntroduzca los 3 numeros.") ;scanf(%d %d %d", &x, &y, &z);if (x
24
#include #include #include #include #pragma hdrstop#pragma argsusedint main(int argc, char* argv[]){ int a,b,c,d;float real,ima;clrscr();printf("Introduzca los valores de a,b,c\n");scanf("%d %d %d",&a,&b,&c);if ( a== 0 && b== 0) printf("\n Ecuacin degenerada ");
else if( a==0) printf("\n La raiz es %f", -c/b);else {real = -b / (2*a);
d = b*b -4*a*c;ima = sqrt ( fabs(d) / 2 * a);if( d >= 0)
printf("\n Raices reales: %f, %f", real+ima, real-ima);else { printf("\n Raices complejas: ");
printf("\n %f + %f", real, fabs(ima));printf("\n %f - %f", real, fabs(ima));
}}
getch();return 0;
}M.Sc. Ing. Carlos Balderrama Vsquez 7027/09/2009
Estructura condicional (switch) Estructura de seleccin multipleswitch ( opcion){
case 1: ...;break;
case 2: ...;break;
case 5: ...;break;
default: ....;}
M.Sc. Ing. Carlos Balderrama Vsquez 7127/09/2009
#include < stdio.h >void main (void){ int numero ;printf("\n Introduzca un numero ");scanf('1 %d", &numero);switch(numero ){ 0 i tf("\ E CERO "){ case 0: printf("\n Es un CERO ");
break;case 1: printf("\n Es un UNO ");
break;default: printf("\n No ni CERO ni UNO
");}
} M.Sc. Ing. Carlos Balderrama Vsquez 7227/09/2009
25
#include < stdio.h > void main(void) { float salida[100] ,t; int opcion; printf("\n Introduzca una opcion "); scanf(" %d" , &opcion); switch( opcion ) {case 0: /* Rampa * / for(t=0; t
26
#include void main(void){ int numero = 0;
while ( numero < 10){ i f ( \ d d{ printf ("\n EI cuadrado es
%d", numero*numero );numero++;
}}
M.Sc. Ing. Carlos Balderrama Vsquez 7627/09/2009
Estructura repetitiva (do)
do accion while (condicon); Bucle con condicin de salida.do {do {
Accion1; Accion2; Accion3;
} while ( condicion ) ;
M.Sc. Ing. Carlos Balderrama Vsquez 7727/09/2009
#include void main(void){ int conta=0;do { conta++;
printf ("\n EI valorprintf ( \n EI valor es %d", conta );} while ( conta < 10);
}
M.Sc. Ing. Carlos Balderrama Vsquez 7827/09/2009
27
#include void main(void){ char ch;do { scanf("%c", &ch);
printf("\n%c",ch);} while ( ch != * );
}
M.Sc. Ing. Carlos Balderrama Vsquez 7927/09/2009
Estructura repetitiva (for)
for ( i=... , i=... , incr i ) accion1;
M.Sc. Ing. Carlos Balderrama Vsquez 8027/09/2009
#include void main(void){ int conta;for( conta = 0; conta < 10; conta = conta +1 )printf ("\n EI valor es %d", conta ); Jprintf("\n Ha terminado el bucle. Conta = %d", conta );
}
M.Sc. Ing. Carlos Balderrama Vsquez 8127/09/2009
28
#include < stdio.h >void main(void) /* Factoriales de los numeros entre
1 y 5{ int t, aux;int fac;for (t=1; t< =5; t++){ aux = t;fac = 1;do { fac = fac * aux.
aux--; // Rutina de factorial} while ( aux > 0);printf('.\n E1 factorial de %d es %d", t, fac);
}}
M.Sc. Ing. Carlos Balderrama Vsquez 8227/09/2009
Gracias
27/09/2009 M.Sc. Ing. Carlos Balderrama Vsquez 83
Consultas a:[email protected]
Ejercicios (continuacin)6.- La relacin entre grados Celsius y grados Fahrenheit es la siguiente:C=(5/9)(F-32)
Escrbase un programa C usando la es tructura while que imprima doscolumnas de enteros, la primera debe contener los mltiplos de 20 comenzando en cero y terminando en 300 que indican grados Fahrenheit, la segunda debe contener
di t d C l i d d d l t d isus correspondientes grados Celsius redondeados a valor entero, es decir:
0 -1740 4..
20 -6300 148
Nota: utilizar el carcter \t que inserta un tabulador entre dos valores.7.- Reescrbase el programa del ejercicio 6 utilizando una estructura for.
29
Ejercicios (continuacin)
8.- Programacin del comando cat. Se trata de escribir un programa que emule el comando cat> nombre_fichero diponible en UNIX. Para ello escrbase un programa llamado micat.c con
j t bl ll d i t t t tejecutable llamado micat que tome un texto por el teclado finalizado en punto y lo reproduzca en la pantalla. As la orden micat >nombre tomar un texto desde el teclado y lo pondr en el fichero nombre.Utilizar el programa micat para copiar ficheros y para visualizarlos por la pantalla.
Ejercicios (continuacin)
9.- Comando wc de UNIX. Disear un programa que cuente el nmero de caracteres, lneas y palabras de un fichero , y pde texto.
Ejercicios (continuacin)10.- Escribir programas que impriman los siguientes patrones por
separado, uno debajo del siguiente.
* ************ ************ ************ ************ ************ ************ ************ ************ ************ *
Top Related