Elementos de Un Programa
-
Upload
jesus-m-ruiz -
Category
Documents
-
view
215 -
download
0
description
Transcript of Elementos de Un Programa
-
Luis Rodrguez Baena ([email protected])Universidad Pontificia de SalamancaEscuela Superior de Ingeniera y Arquitectura
Fundamentos de Programacin I
2. Elementos de un programa
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 2
Datos y tipos de datos Los datos constituyen los elementos bsicos sobre
los que trabajar un algoritmo. La eleccin de un tipo de dato determinar el algoritmoutilizado para procesarlos.Algoritmos + estructuras de datos = programas (Nicklaus Wirth).
Por ejemplo:Si un programa procesa una lista de alumnos
Requerir un algoritmo con una estructura repetitiva que repita elmismo proceso para todos los alumnos hasta que finalice la lista.
Si un programa necesita hacer distincin entre las personassolteras o casadas Requerir de un algoritmo con una estructura selectiva que permita
hacer la distincin entre los dos estados posibles que puede tomar elestado civil de una persona.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 3
Datos y tipos de datos (II) Dato: unidad mnima de informacin con la que puedetrabajar un programa.
El concepto de informacin mnima puede cambiar de un programaa otro en funcin de los tipos de datos que maneje. Por ejemplo, mientras que FORTRAN puede trabajar con nmeros complejos,las primeras versiones de BASIC slo podan trabajar con nmeros reales.
Tipo de dato: conjunto de valores distintos que puede tomarun dato. La mayora de los lenguajes tienen un conjunto de tipos de datossimilar. Cada lenguaje puede nombrarlos o almacenarlos de forma distinta. Aunque el procesador slo trabaja con datos binarios, los lenguajesde alto nivel realizan una abstraccin de la informacin.
El tipo de dato indica al programa como tiene que interpretar esa secuenciade bits. Por ejemplo, la secuencia de bits 0000000001000001 puede ser interpretada porun programa como
El valor numrico decimal 65 si se considera como un tipo de dato numrico. El carcter A, si se considera como un tipo de dato carcter.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 4
Clasificacin de los tipos de datos
Tipos de datos
Simples
Estructurados
Estndar
Definidos por elusuario
Numricos
Lgicos
Alfanumricos
Subrango
Enumerados
Enteros
Reales
Carcter
Cadena
Estticos
Dinmicos
Conjuntos
Arrays
Registros /estructuras
Cadena
Archivos
Punteros
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 5
Datos simplesUn dato simple es aquel que no se puede subdividiren otros ms pequeos. Por el contrario un dato estructurado estara compuesto deotros datos que sern a su vez simples o estructurados.
Datos estndar (datos primitivos o integrados). Datos que son directamente soportados por el lenguaje deprogramacin.
Vamos a considerar los siguientes tipos de datosestndar. Numricos. Lgicos. Carcter. Cadena. Punteros.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 6
Datos simples (II) Datos numricos.
Entero. Podr contener cualquier valor numrico entero. En C, segn su tamao en bytes pueden ser int, short, long.
Real. Cualquier valor numrico con parte decimal. En C podrn ser float y double.
Datos carcter. Podrn contener cualquier carcter vlido. En C se corresponde con el tipo de dato char y se puede considerar tambin como un dato
entero. Datos lgicos.
Slo podrn contener los valores si/no, verdad/falso. En C no existen de forma directa y las expresiones lgicas devuelve 0 si es falsa o 1 si es
verdadera. El archivo de cabecera stdbool.h contiene especificaciones que enmascaran esto.
Datos de tipo cadena. Podrn contener una secuencia de caracteres. En C no existen directamente y se consideran arrays de caracteres terminados en un carcter
nulo. Datos de tipos puntero.
Contienen exclusivamente direcciones de memoria dnde se almacenen otros datos. Se ven en profundidad en la asignatura de Fundamentos II
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 7
Datos simples (III) Datos definidos por el usuario. El usuario (programador) decide el conjunto de valores que
puede almacenar el tipo de dato. Es necesario indicar el nombre del tipo y el conjunto devalores.
Segn la forma en que se especifica el conjunto de valores. Datos enumerados.
Se enumeran de forma explcita cada uno de los valores que puede contener. Ejemplos:
daSemana = {lunes,martes,mircoles,jueves,viernes,sbado,domingo}
Una dato de tipo diaSemana podr contener cualquiera de estos valores. En C se puede hacer algo parecido con las constantes enumeradas.
Datos subrango. Son un subconjunto de algn tipo de dato ya definido. Ejemplos:
sigloXX = 1900..1999semanaLaboral = lunes..viernes
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 8
Datos estructurados Datos compuestos de otros datos.
Se podrn tratar tanto individualmente como en su conjunto. Segn su forma de almacenamiento en memoria podrn ser:
Estticos. Se reserva un espacio fijo para almacenarlos y siempre ocupan la mismaposicin de memoria.
Dinmicos. El espacio que ocupan y su posicin pueden variar a lo largo de la ejecucindel programa.
En la asignatura de Fundamentos de Programacin I setratarn la siguientes estructuras de datos estticas: Arrays. Registros. Cadenas.
Se pueden considerar tambin un dato estructurado puesto que estncompuestas de datos ms simples (caracteres). Otros datos estructurados estticos son:
Archivos (se vern en Fundamentos de Programacin II). Conjuntos.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 9
ConstantesDatos que no cambian su valor a lo largo de laejecucin del programa. Constantes literales. Representacin de la informacin que contiene el dato. Segn el tipo de informacin que contengan pueden ser.Enteras.
Formadas por los dgitos de 0 a 1 y pueden estar precedidas por elsigno -.Reales.
Representacin en coma fija. Formadas por los dgitos de 0 a 1, el punto decimal y pueden estarprecedidas por el signo .
Por ejemplo, 567.56 o -34.678.
Representacin en coma flotante. Adems de la mantisa, van seguidas por la base (representada por laletra E) y el exponente.
Por ejemplo, 2.34E02 (sera 2,34 x 102) o 1.034E-21 (sera 1,034 x 10-21).
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 10
Constantes (II) Constantes literales (continuacin). Lgicas.
Representas mediante las palabras reservadas verdad o falso. C no tiene este tipo de constantes, aunque el archivo de cabecera stdbool.hdefine las constantes true y false que valen 1 y 0 respectivamente.. Carcter.
Cualquier carcter del juego de caracteres utilizado encerrado entrecomillas. C distingue entre constantes de carcter y de cadena.
En C el delimitador de caracteres es la comilla simple. Cadena. Secuencia de caracteres del juego de caracteres utilizado encerrado entrecomillas.
En C, el delimitador de cadenas es la comilla doble. Constantes simblicas. Constantes a las que se asigna un nombre nemotcnico(identificador). El compilador sustituir todas las apariciones de ese nombre porsu valor asignado en la declaracin de la constante.
En C se pueden declarar mediante el modificador const.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 11
Variables Datos que pueden variar su contenido a lo largo de laejecucin de un programa. El nombre de la variable es un identificador vlido. Las variables primitivas se almacenan en una zona dememoria que se reserva al arrancar el programa (pila) yqueda inaccesible cuando termina. Cuando en el programa se indica que se va a utilizar, por ejemplo,una variable entera.
Antes de la ejecucin del programa se busca una zona de memoria losuficientemente grande como para almacenar un dato entero. A esa zona de la memoria se le asigna un identificador (un nombre). Mientras que se ejecuta el programa al utilizar ese identificador se estarhaciendo referencia a esa zona de memoria. Al terminar el programa, el identificador desaparece, por lo que no sepuede utilizar esa zona de memoria, ya que no se puede hacer referenciaa ella.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 12
Expresiones
Modifican los datos presentes en el algoritmo. Conjunto de variables, constantes, operadores y llamadas a funciones
que siempre devuelven un valor. El valor ser de un tipo determinado que depende de los operadores y los
operandos de la funcin. Segn el tipo de dato que devuelven habr expresiones:
Numricas. Lgicas. De cadena.
En un algoritmo, las expresiones algebraicas comunes tendrn que sertraducidas a expresiones algortmicas:
bd
ca2
52
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 13
Expresiones aritmticas Dan como resultado un valor de tipo numrico. Estn compuestas de operandos numricos y operadores aritmticos. El lenguaje algortmico UPSAM utiliza los siguientes operadores aritmticos:Operador Significado Ejemplo Operador en C
** Exponenciacin 2 ** 3 equivale a 23No existe en C. La funcinpow(2,3). La funcin seencuentra en la bibliotecamath.h
+ Suma aritmtica 3 + 5 devolvera el valor 8 3 + 5- Resta. Como operador unario (con un solooperando) actuar como el signo negativo
8 3 devolvera el valor 5. -6 equivaldraal valor negativo de 6. 8 - 3
* Multiplicacin 6 * 4 devolvera 24 6 * 4/ Divisin real 5 / 2 devolvera 2.5 5 / 2mod Mdulo (resto) de la divisin entera 5mod 2 devolvera 1, el resto de dividir5 entre 2 5 % 2
div Divisin entera 5 div 2 devolvera 2, el resultado de ladivisin entera de 5 entre 2.No existe. Si los operandosson enteros el operador /devuelve la divisin entera
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 14
Expresiones aritmticas (II) No todas las variables numricas pueden aceptar cualquier expresin numrica.
Es importante determinar el tipo de dato (entero o real) devuelto por una expresin numrica. Valores devueltos por las expresiones aritmticas:
Dependen de los operadores y el tipo de dato de los operandos. Los operadores +, - y *:
Si todos los operandos son enteros el resultado es entero. Si algn operando es real el resultado es real.
Operador /. El resultado es real.
Operador **. El resultado es real.
Los compiladores suelen solucionar la exponenciacin mediante logaritmos, por lo que el convenienteconsiderar el resultado como real.
Operadores mod y div. El resultado es entero.
Operacin Resultado Tipo de dato Operacin Resultado Tipo de dato3+4 7 Entero 2*4.5 9.0 Real5/2 2.5 Real 4/2 2.0 Real15 mod 4 3 Entero 2**3 8.0 Real
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 15
Expresiones lgicas Devuelven un dato lgico (verdad o falso). Utilizan operadores relacionales y los operadores lgicos. Operadores relacionales.
Analizan la relacin entre dos operandos del mismo tipo. Pueden ser de cualquier tipo, pero siempre del mismo tipo.
Operador Significado Ejemplo Operador en C= Igual que 2 = 3 devuelve falso ==< Menor que 3 < 5 devuelve verdad Mayor que 8 > 3 >= Distinto de 5 2 devuelve verdad !=
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 16
Expresiones lgicas (II) Operadores de relacin en datos de tipo carcter ycadena. Los operadores de relacin se pueden utilizar en expresiones detipo carcter y cadena. Se compara el cdigo numrico asociado a cada carcter que mso menos est ordenado alfabticamente.
Hay que tener en cuenta que normalmente: Cualquier letra mayscula es menor que cualquier minscula. Cualquier dgito es menor que cualquier letra. Algunos caracteres (por ejemplo la o las vocales acentuadas) tienen uncdigo mayor que los caracteres estndar.
Estas expresiones son verdaderas:A < Bc > A > zMALAGA > MADRID
En C se pueden comparar caracteres, pero para compararcadenas hay que utilizar la funcin strcmp de la bibliotecastring.h.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 17
Expresiones lgicas (III) Operadores lgicos.
Evalan dos expresiones lgicas. Su resultado siempre es lgico. Operadores:
y (en C, &&). o (en C, ||). no (en C, !).
La tabla de verdad de estos operadores es:a b a y b a o b no a
verdad verdad verdad verdad falsoverdad falso falso verdad falsofalso verdad falso verdad verdadfalso falso falso falso verdad
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 18
Expresiones de cadena
Operan sobre cadenas o caracteres y utilizanoperadores de cadena.
Operador de concatenacin: &, +. El resultado de la concatenacin de dos cadena es otracadena formada por la unin de ambas.
"Fundamentos" & "de Programacin" devolvera lacadena "Fundamentosde Programacin
C no tiene este operador. Para concatenar cadenas seutiliza la funcin strcat de la bilioteca string.h.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 19
Prioridad de los operadoresUna operacin puede estar compuesta por varios
operadores y operandos de distinto tipo. Las operaciones siempre se hacen por parejas deoperandos (en los operadores binarios), comenzando por eloperador de mayor prioridad.
A igualdad de prioridad las operaciones se hacen deizquierda a derecha.
El parntesis altera el orden natural de las operaciones.Si existen varios parntesis anidados se comienza por el msinterno.
Si existen varios parntesis al mismo nivel se evalan deizquierda a derecha.
Cada lenguaje puede tener un orden de prioridadpropio.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 20
Prioridad de los operadores (II)
Tabla de prioridades.
Lenguaje UPSAM C+ prioridad - (unario), no - (unario), !
**, *, /,mod, div *, / %+, -, + (concatenacin), & +, -= ==, ==, !=y &&
- prioridad o ||
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 21
Prioridad de los operadores (III)
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 22
InstruccionesUn programa estar compuesto de una serie deproposiciones, sentencias o instrucciones queindican al ordenador las tareas a realizar y en elorden en que lo deben hacer.
A pesar de la complejidad aparente quepresentan los lenguajes de programacin, lostipos de instrucciones se pueden resumir en trescategoras: Instruccin de asignacin. Instrucciones de entrada y salida. Instrucciones de control.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 23
Instruccin de asignacin La asignacin modifica el valor de una variable. Modifica el contenido de un rea de memoria.
El formato general de la instruccin de asignacinsera el siguiente:nombreVariable expresinsubtotal precioProducto * unidadesProducto
Evala la expresin que aparece a la derecha. Asigna el valor de la expresin en la variable de laizquierda.
En C, el operador de asignacin es el smbolo =. Adems existen operadores de asignacin que implicanexpresiones aritmticas como +=, -=, *=, /=, %=. En C la asignacin en s misma se considera tambin unaexpresin.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 24
Instruccin de asignacin (II) El tipo de la expresin debe ser el mismo que el tipode la variable. Conversin de tipos. Algunos lenguajes realizan una conversin de tipos,convirtiendo automticamente el valor de la expresin altipo de la variable siempre que sea posible.Esto no ser posible en todas las expresiones.
Cuando se permite la conversin de tipos, puede habercasos de perdida de precisin cuando el tipo de dato de lavariable tiene un tamao menor que el tipo de dato de laexpresin. En C en las asignaciones se hace una conversinautomtica del tipo de dato si la variable tiene unacapacidad mayor que la expresin.En caso contrario el resultado queda indeterminado.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 25
Instruccin de asignacin (III) La variable puede aparecer a ambos lados del
operador. En la asignacin
a a + 5Primero evala la expresin situada a la derecha.Despus asigna el valor a la variable a.
El anterior valor de la variable a se pierde.En C el operador de asignacin += hara esto.
a = a + 5 es equivalente a a+=5 Para realizar esto es necesario que la variable que apareceen la expresin tenga un valor inicial.Algunos lenguajes inicializan la variable a 0.
Esto no ocurre en todos los lenguajes. C no inicializa las variables a 0.
Es una buena prctica inicializar siempre las variables.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 26
Instrucciones de entrada y salida Permiten proporcionar informacin al algoritmo ydevolver informacin al usuario. Instruccin de salida. escribir(listaDeExpresiones) La listaDeExpresiones son una o ms expresionesseparadas por comas.
Instruccin de entrada. leer(listaDeVariables) La ejecucin del programa se detiene hasta que se leproporcionan datos. Cada uno de los datos proporcionados se asignan a unavariable.Es necesario que los datos proporcionados sean del mismo tipoque la variable.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 27
Instrucciones de entrada y salida (II)
En C las instrucciones de entrada y salida son funcionesalmacenadas en la biblioteca stdio.h. La instruccin de salida en C es
printf( cadenaFormato, listaExpresiones) Escribe el resultado de la lista de expresiones aplicando el formato de lacadena de formato.
printf(%i ms %i es igual a %i,3,4,3+4) sacara por pantalla3 ms 4 es igual a 7
La instruccin de entrada en C esscanf(cadenaFormato, listaPunteros)
Lee por teclado una lista de valores separados por blanco y lostrata de asignar a las variables de la lista de punteros.scanf(%i %i %i,&a,&b,&c) si la entrada de teclado es 45 65 78
asignara a la variable a el valor 45, a la variable b el valor 65 y a la variable cel valor 78.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 28
Instrucciones de control
Modifican el flujo normal (secuencial) de un programa. Todas utilizan una bifurcacin.
Bifurcacin condicional. Bifurcacin incondicional.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 29
Elementos de un algoritmo Los algoritmos se pueden especificar mediante lenguaje natural o utilizandoalguna herramienta de programacin.
Algunas herramientas son flexibles (diagramas de flujo). Otras son ms rgidas y se acercan a un lenguaje de programacin (pseudocdigo yLenguaje Algortmico UPSAM 2.1).
Un algoritmo expresado en pseudocdigo estar compuesto de una serie deelementos que se deben utilizar mediante una sintaxis precisa. Aunque no tienen por qu ser tan rgidos como un lenguaje de programacin, respetaresa sintaxis ayudar a que el resto de las personas entiendan el algoritmo.
Elementos de un algoritmo: Variables y constantes, palabras reservadas, identificadores, comentarios,declaraciones.
Palabras reservadas. Cada lenguaje tiene un conjunto propio de palabras reservadas. El compilador tratar esas palabras de forma especial. Construcciones que forman parte del lxico del lenguaje y que tienen un significadoespecial en un programa fuente escrito en un lenguaje de programacin determinado.
En nuestro lenguaje algortmico se sealarn en negrita o subrayado.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 30
Elementos de un algoritmo (II) Identificadores.
Palabras creadas por el programador con los caracteres permitidos por ellenguaje y que permiten identificar los distintos objetos creados por l comolos nombres de variables. Tienen que estar formados por caracteres del juego de caracteres permitidospor el lenguaje.
ASCII, Unicode. Aunque hay implementaciones de C que permiten un juego de caracteres extendido, esms portable utilizar los caracteres ASCII estndar.
Estos no incluyen los caracteres especficos del idioma espaol como la o las vocales acentuadas. En nuestro caso: cualquier carcter alfabtico del idioma espaol, caracteres numricos oel guin bajo (_).
El lenguaje UPSAM 2.1 no es sensible a maysculas. Otros lenguajes (C, Java) si lo son.
Deben comenzar por un carcter alfabtico. Se considera como carcter alfabtico cualquier carcter o ideograma que describa uncarcter alfabtico o un dgito en cualquier idioma.
En la prctica, se consideran de longitud ilimitada. C es capaz de admitir hasta 63 caracteres
No pueden ser igual que las palabras reservadas.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 31
Elementos de un algoritmo (III) Comentarios. Documentacin interna del programa. {comentario} , /*comentario*/ o //comentario
En C: //Comentario (comentarios de una sola lnea). /* Comentario */ (para comentarios de ms de una lnea).
Instrucciones. De asignacin, de entrada/salida, de control.
Declaraciones. Instrucciones no ejecutables que definen los elementos utilizadosen un algoritmo. Declaracin del nombre del algoritmo, tipos de datos, constantesy variables. Declaracin de subprogramas. Declaracin del inicio y el fin del cdigo del algoritmo.
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 32
Estructura de un algoritmo enpseudocdigoLa estructura de un algoritmo escrito en ellenguaje algortmico UPSAM 2.1 sigue elesquema siguiente:
algoritmo NombreDelAlgoritmo//Seccin de declaraciones globales[Declaracin de tipos de datos][Declaracin de constantes
simblicas][Declaracin de variables]//Cuerpo del algoritmoinicio
//Cdigo del algoritmofin
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 33
Estructura de un algoritmo enpseudocdigo (II) Declaracin de constantes.
Se utilizan para declarar las constantes simblicas.
Declaracin de variables. Se deben declarar todas las variables que utilice el algoritmo.
tipoDeDato podr ser cualquier tipo de datos estndar o definido por el usuario,simple o estructurado. De momento ser entero, real, lgico, carcter o cadena.
constidentificador1 = expresin1identificador2 = expresin2constpi = 3.141592 //pi ser una constante realradio = 23 //radio ser una constante enteraexiste = verdad //Existe ser una constante lgicaciudad = 'Madrid' //ciudad ser una constante de cadenalongitudCircunfereciaFija = 2 * pi * radio
vartipoDeDato : ListaIdentificadores [= expresinInicializacin]...
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 34
Estructura de un algoritmo enpseudocdigo (III) Declaraciones en C.
C no tiene secciones especiales de declaraciones para constantes y variables. Pueden declararse en cualquier lugar del programa. Si es posible, conviene agruparlas al comienzo del programa y utilizar un
comentario para indicarlo. Declaraciones de variables.
Cada variable puede llevar una expresin de inicializacin.
Declaracin de constantes. La palabra reservada const indica que un dato es constante.
tipoDato listaDeVariables
//Declaracin de variablesint a,b,c;float d = 3.45;boolean e;char f,g,h;char *i = "hola"
//Declaracin de constantesconst float PI = 3.141592 //PI ser una constante real
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 35
Estructura de un algoritmo enpseudocdigo (IV) Ejemplo de algoritmo en lenguaje UPSAM 2.1.algoritmo clculoPrecioVentaconst
IVA = 0.18varreal : total, precioProducto, subtotal, totalIVA , totalConIVAentero : unidadesProductoiniciototal 0leer(precioProducto)// precioProducto = 0 indica que no hay ms productosmientras precioProducto 0 hacer
//Calcula el subtotal de un productoleer(unidadesProducto)subtotal precioProducto * unidadesProductototal total + subtotal//Para salir, introducir un precioProducto = 0leer(precioProducto)fin_mientras
totalIVA total * IVAtotalConIVA total + totalIVAescribir('Total (sin iva):', total)escribir('IVA (16%):', totalIVA)escribir('Total a pagar:', totalConIVA)fin
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 36
Estructura de un algoritmo enpseudocdigo (V) Ejemplo de programa en C./*
El nombre del archivo fuentecalculoPrecioVenta.c es el nombre del algoritmo
*/#include int main(void){
/*Declaracion de constantes */const float IVA = 0.18;/*Declaracion de variables */float total=0, precioProducto,subtotal,totalIVA,totalConIVA;int unidadesProducto;printf("%s","\nPrecio del producto (0 para terminar):");scanf("%f",&precioProducto);
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 37
Estructura de un algoritmo enpseudocdigo (VI) Ejemplo de programa en C.
while(precioProducto !=0){printf("%s","\nUnidades producto:");scanf("%i",&unidadesProducto);subtotal = precioProducto * unidadesProducto;total += subtotal;printf("%s","\nPrecio del producto (0 para terminar):");scanf("%f",&precioProducto);
}totalIVA = total * IVA;totalConIVA = total + totalIVA;printf("\nTotal (sin iva): %.2f\n",total);printf("IVA (18%%): %.2f\n",totalIVA);printf("Total a pagar: %.2f\n",totalConIVA);return 0;
}
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 38
Ejercicios1. Cules de los siguientes datos seran vlidos para procesar por un
lenguaje de descripcin de algoritmos? Por qu?. En caso de que sean correctos de qu tipo seran?
a) 45.6765b) 6.34X-4c) $Hola$d) "Hola'e) 'Hola'f) 0,45g) 4.06E-12h)-3.12E+43i) verdad
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 39
Ejercicios (II)2. Cules de los siguientes identificadores sern vlidos? Por qu?
a) xb) A32c) 2000Ad) TotalxAoe) Daf) 3B16g) Nombre_Apellidosh) Nombre-Apellidosi) SueldoBase_Dia
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 40
Ejercicios (III)3. Convierta a expresiones algortmicas las siguientes expresiones
algebraicas.
a) 4NM
b) 2QPNM
c)RPDQM
n24
d) RQ
PNM
-
Universidad Pontificia de Salamanca. Escuela Superior de Ingeniera y Arquitectura(CC) Luis Rodrguez Baena, 2012 41
Ejercicios (IV)
4. Cul sera el resultado de las siguientes expresiones?