Lenguaje C ++ PDF
Lenguaje C ++ PDF
MANUAL
DE
FUNDAMENTOS DE PROGRAMACION
y
LENGUAJE C + +
AÑO LECTIVO
2007- 2008
Prof. Felipe Hernández Mora
Computadora
Datos
Resultados
Programa
HARDWARE
Una computadora esta constituida por componentes físicos que junto con los
dispositivos que realizan las tareas de entrada y salida de información se conoce con el
término de hardware (o soporte técnico).
SOFTWARE
. Dispositivos de entrada
. Dispositivos de salida
. Unidad central de proceso (CPU) o procesador
. Memoria interna
. Memoria externa
Prof. Felipe Hernández Mora
CPU
Dispositivos
Memoria central de salida
Dispositivos de
entrada
Unidad de control
Memoria
Unidad lógica y externa
aritmética
Los dispositivos de salida permiten visualizar los resultados del proceso de los datos. El
monitor o pantalla es un dispositivo que visualiza la información que se ingresa desde el
teclado, así como los resultados que el computador envía. La impresora es otro
dispositivo que nos permite obtener copias impresas de los resultados enviados por la
computadora.
La Unidad Central de Proceso, denominado también CPU (del inglés Central Processor
Unit) en la jerga de la informática, es el verdadero “cerebro” del computador, es el que
dirige y controla el proceso y manipulación de la información realizada por la
computadora. La CPU realiza la lectura de la información de un dispositivo de entrada,
procesa la información y almacena los resultados del proceso en la memoria auxiliar
para su posterior uso. La CPU consta de dos componentes: la Unidad de Control y la
Unidad Aritmética Lógica.
FLASH MEMORY
Es un dispositivo que nos permite guardar información usando el puente USB. Es muy
pequeño y podemos grabar 64, 128, 256, 512 Mb y 1.2 hasta 4Gb de información. Basta
conectar en el puerto USB para que Windows XP lo reconozca.
Evaluacion
OBJETIVOS DE LA PROGRAMACION
La programación de ordenadores debe perseguir tres objetivos fundamentales:
CORRECCION: Un programa es correcto si hace lo que debe hacer. Para
determinar si un programa cumple con sus funciones es muy importante
especificar claramente que debe de hacerle programa antes de desarrollarlo y
una vez acabado compararlo con lo que realmente hace.
CLARIDAD: Es muy importante que el programa sea lo mas claro y
legible posible para mejorar el mantenimiento del software. Cuando se acaba
de describir el código del programa, se deben buscar errores y corregirlos.
Mas concretamente, cuando el programa esta concluido, es necesario hacerle
ampliaciones o modificaciones, según la demanda de los usuarios, esta labor
puede ser llevada a cabo por el mismo programador que implementó el,
programa o por otros.
Mensaje de
error
Prof. Felipe Hernández Mora
Interpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
PROGRAMA
Es una lista de instrucciones que la computadora debe seguir para procesar datos y
convertirlos en información. Las instrucciones se componen de enunciados usados en
lenguaje de programación como Basic, Pascal o C.
Características de un programa:
. Debe ser confiable y funcional
. Advertir errores de entrada obvios y comunes
. Documentado adecuadamente
. Ser comprensible
. Codificado en el lenguaje apropiado
DATOS
Son las características propias de cualquier entidad. Por ejemplo, los datos de una
persona como su nombre, edad, fecha de nacimiento, domicilio, número de teléfono,
etc.
INFORMACIÓN
Es el conocimiento relevante producido como resultado del procesamiento de datos y
adquirido por la gente para realzar el entendimiento y cumplir ciertos propósitos.
Prof. Felipe Hernández Mora
PROCESAMIENTO DE DATOS
Consiste en la recolección de datos de entrada que son evaluados y ordenados para ser
colocados de manera que produzcan información útil.
Los siguientes son los pasos que se deben cumplir para resolver con éxito un problema
de programación:
4.- Diagramación
Luego de obtener el algoritmo apropiado pasamos a dibujar gráficamente los pasos de
este algoritmo. Esto es precisamente un diagrama de flujo, la representación grafica de
un algoritmo.
Inicio A
4.- Diagramación
Errores
6.- Codificación
del programa
Fin
A
Prof. Felipe Hernández Mora
TIPOS DE LENGUAJE
Atendiendo al número de instrucciones necesarias para realizar una tarea específica
podemos clasificar a los lenguajes informáticos en dos grandes bloques: de bajo nivel y
de alto nivel.
Los de bajo nivel son de cualquier computadora puede leer y seguir, están escritos en
forma de ceros y unos. Los de alto nivel son lenguajes de programación que se asemejan
a las lenguas humanas usando palabras y frases fáciles de entender. En un lenguaje de
bajo nivel cada instrucción corresponde a una acción ejecutable por el ordenador,
mientras que en los lenguajes de alto nivel una instrucción suele corresponder a varias
acciones.
dependencia del hardware. Tiene la desventaja del uso óptimo de los recursos del
hardware, permitiendo la obtención de un código muy eficiente. Ejemplo de algunos
códigos nemotécnicos son: STO para guardar un dato, LOA para cargar algo en el
acumulador, ADD para adicionar un dato, INP para leer un dato MOV para mover un
dato y ponerlo en un registro, END para terminar el programa, etc.
b.- Una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a varias
instrucciones en lenguaje máquina. Se llaman de procedimientos porque están diseñados
para expresar la lógica capaz de resolver problemas generales. Entre estos tenemos:
Basic, Pascal, Cobol, C, Fortran.
Lenguajes naturales
Lenguajes orientados a aplicaciones en inteligencia artificial, como Lisp y Prolog.
Dentro de este campo destacan las aplicaciones en sistemas expertos, juegos, visión
artificial (Jurasic Park) y robótica. Lisp es un lenguaje para procesamiento de listas y
manipulación de símbolos. Prolog es un lenguaje basado en la lógica, para aplicaciones
de base de datos e inteligencia artificial.
Podemos decir entonces, que los lenguajes de alto nivel, tienen las ventajas de mayor
legibilidad de los programas, portabilidad, facilidad de aprendizaje y facilidad de
modificación.
En el sistema educativo:
ASSET C MODULA II
LOGO BASIC PILOT
PASCAL
INTÉRPRETES Y COMPILADORES
Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que
haya escrito en el lenguaje de alto nivel (código fuente) y lo convierten a código objeto
(casi ejecutable)
Código Fuente Código Objeto
Código Ensamblador
TRADUCCION
(Ensamblador, interprete, compilador)
COMPILADOR
Programa Fuente
Compilador
Errores
Programa Listado del
Objeto programa
Datos de Entrada
Pruebas
Resultados
INTERPRETE
Con el intérprete, cada vez que necesitamos ejecutar el programa tenemos que volver a
analizarlo porque no hay código objeto. Con el compilador, aunque más lenta la
traducción, solo se realiza una vez.
Taller # 2
Evaluacion
Datos
Un dato es una representación simbólica (numérica, alfabética, etc.…), de un atributo o
característica de una entidad. El dato no tiene valor semantico (sentido) en si mismo,
pero convenientemente tratado (procesado) se puede utilizar en la realización de
cálculos o toma de decisiones. Es de ejemplo muy común en el ámbito informático.
En programación un dato es la expresión general que describe las características de las
entidades sobre las cuales opera un algoritmo.
Tipos de datos
Todos los datos tienen un tipo de asociación con ellos. Un dato puede ser un simple
carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la
naturaleza del conjunto de valores que puede tomar una variable.
Numéricos
Simples Lógicos
Alfanuméricos (string)
Tipos de
Datos Arreglos (Vectores, Matrices)
Estructurados Registros
(Des. Por el
Usuario) Archivos
Apuntadores
Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representa el resultado de una comparación entre datos (numéricos o
alfanuméricos).
Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que
permiten representar valores identificables de forma descriptiva, esto incluye
nombres de personas, direcciones, etc. Es posible representar numeros como
alfanuméricos, pero estos pierden su propiedad matemática, es decir no es
posible hacer operaciones con ellos. Este tipo de datos se representan encerrados
entre comillas.
Ejemplo:
“PROGRAMA”
“2006”
Identificadores
Ejemplo:
» Nombre
» Num_hrs
» Calif2
Constantes y variables
Después de haber visto cada una por separado, pasemos a explicar las diferencias que
existen entre constantes y variables. A primera vista pudieran parecer conceptos
similares, pero realmente son cosas muy distintas. Y esta distinción viene dada por la
posibilidad que tienen las variables para cambiar de valor.
Principales diferencias:
Expresiones
Por ejemplo:
A+ (b+3)/c
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:
Aritméticas
Relacionales
Lógicas
Operadores y operandos
Aritméticos
Tipos de Relacionales
Operadores Lógicos
Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o
reales. Si ambos son enteros; si alguno de ellos es real, el resultado es real.
Valor
(constante o variable)
Operadores Aritméticos
+ Suma
- Resta
* multiplicación
/ División
Mod. Modulo (residuo de la división entera)
Div Cociente de una división entera
Ejemplos:
Expresión Resultado
8/2 4
12 mod. 8 4
2+6*2 14
1.-^ Exponenciación
2.-*, /, mod. Multiplicación , división , modulo .
3.-+,-Suma y resta
23*2/5=9.2 3+5*(10-6)=5.09
32 +5*(10-(2+4)3=-1021
3.5+5.9-14.0/40=8.24
2.1*(1.5+3.0*4.1)=28.98
OPERADORES RELACIONALES:
Ejemplos:
Si a=20 b=40 c=60
a+b>c Falso
a-b<c verdadero
a-b=c falso
a*b<>c verdadero
Ejemplos no lógicos:
A<b<c
Prof. Felipe Hernández Mora
OPERADORES LOGICOS:
Estos operadores se utilizan para establecer relaciones entre valores lógicos.
Estos valores pueden ser resultado de una expresión relacional.
OPERADORES LOGICOS
And Y
Or O
Not Negación
OPERADOR AND
OPERADOR OR
OPERADOR NOT
Operando Resultado
T F
F T
Ejemplos:
A=10 b=12 c=13 d=10
1) ((a>b)or(a<c))and((a=c)or(a>=b))
F T F F
Prof. Felipe Hernández Mora
F
T
2) ((a>=b)or(a<d))and((a>=d)and(c>d))
F F T T
F T
F
3) Not(a=c)and(c>b)
F T
FUNCIONES INTERNAS
Las operaciones que se requieren en los programas exigen en numerosas ocasiones,
además de las operaciones aritméticas básicas, ya tratadas, un número determinado de
operaciones especiales que se denominan funciones internas, incorporadas o estándar.
Por ejemplo la función In se puede utilizar para determinar logaritmo de un número y
la función sqrt calcula la raíz cuadrada de un número positivo. Existen otras funciones
que se utilizan para determinar las funciones trigonometricas.
La siguiente tabla muestra las funciones internas más usuales, siendo x el argumento de
la función.
OPERACIÓN DE ASIGNACION
ASIGNACION ARITMETICA
ASIGNACION LOGICA
Tras ejecutar las operaciones anteriores, las variables M, N, P toman los valores, falso,
verdadero respectivamente.
Prof. Felipe Hernández Mora
ASIGNACION DE CARACTERES
Los cálculos que realizan las computadoras requieren para ser útiles la Entrada de los
datos necesarios para ejecutar las operaciones que posteriormente se convertirán en
resultados, es decir, Salida.
Las operaciones de entrada permiten leer determinados valores y asignarlos a
determinadas variables. Esta entrada se conoce como operación de Lectura (read).
Los datos de entrada se introducen al procesador mediante dispositivos de salida
(pantalla, impresora, etc.) la operación de salida se denomina escritura (write).
En la escritura de algoritmos las acciones de lectura y escritura se representan por los
formatos siguientes
Leer (Nom_variable)
Escribir (lista de variables de salida)
Ejemplo:
DATOS
Es la expresión general que describe los objetos con los cuales opera el programa. Por
ejemplo, la edad y el domicilio de una persona, forman parte de sus datos. Los datos se
sitúan en objetos llamados variables.
VARIABLES
Las variables son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información. Son objetos cuyo valor puede ser modificado a lo largo
de la ejecución de un programa. Al definir una variable lo que hacemos es asignar una
dirección o serie de direcciones de la memoria al nombre de la variable. Las variables
Prof. Felipe Hernández Mora
llevan un nombre llamado identificador. Este puede ser una cadena de letras y dígitos,
empezando siempre con una letra. Por ejemplo: Pi, curso99, nom_alum, etc.
Edad I Fact.
25 0 24
IDENTIFICADORES
Los identificadores son palabras creadas por los programadores para dar nombre a los
objetos y demás elementos que necesitamos declarar en un programa: variables,
constantes, tipos, estructuras de datos, archivos, funciones, etc. Puede estar formado por
una secuencia de letras y dígitos (del 0 al 9), aunque también acepta el caracter de
subrayado “_”. Un identificador debe cumplir las siguientes condiciones:
1.- EL primer carácter debe ser una letra (a, b, c,..., z).
2.- La longitud de un identificador es igual a 7 en la mayoría de los lenguajes de
programación.
3.- Un identificador no acepta los acentos ni la ñ
Válidos No válidos
_desc 1num
var1 número3
lugar_nac año_nac
CONSTANTES
Las constantes son objetos cuyo valor permanece invariable a lo largo de la ejecución de
un programa. Una constante es la denominación de un valor concreto, de tal forma que
se utiliza su nombre cada vez que se necesita reverenciarlo. Por ejemplo, si se desea
obtener un reporte para cada uno de los empleados de una empresa, con sus datos
generales, la fecha y cantidad de dinero que recibieron la ultima semana, el dato fecha
puede ser una constante ya que es el mismo para todos.
EL OPERADOR DE ASIGNACION
Prof. Felipe Hernández Mora
A 10 Memoria de la PC
B 15
C A+B A B C 25
10 15
A 10
B 15
A 20 A B C 35
20 15
C A+B
Resulta que C tiene le valor de 35. Observe que primero a A se le asigna el valor 10 y
después el valor 20. La asignación es una operación destructiva. Esto significa que si a
una variable le es asignado un valor y posteriormente se le asigna otro valor, este se
destruye, conservando ahora el nuevo valor.
El operador de asignación se emplea frecuentemente en sentencias tales como N N+
1.
Esto nos dice dar a N un nuevo valor que sea igual al anterior valor más 1. Por ejemplo:
N 10
B 15 N 11 B 15
N N+1
N 9 11 15
N B
B 5
N N+1
B N *(B+5)
N 10 B 100
Prof. Felipe Hernández Mora
C A
A B A 15 B 20 C 15
B C
Para el intercambio de valores se utiliza una variable auxiliar, en este caso C. Primero
guardamos el valor de A en la variable auxiliar C, después asignamos el valor de B a la
variable A (el valor original de A se destruye pero queda almacenado en C), finalmente
asignamos el valor de C a B.
EXPRESIONES
TIPOS DE DATOS
Es el conjunto de valores que puede tomar una variable. Se tiene dos tipos de datos:
Simples como numéricos y alfanuméricos y estructuras de datos que pueden ser internas
o externas.
DATOS NUMÉRICOS
Son aquellos cuyo contenido es una serie de dígitos (0-9) que en conjunto nos
proporcionan un valor numérico ya sea entero (Integer) o real (Float) y pueden ser
Prof. Felipe Hernández Mora
Los números reales tienen parte decimal. El rango de posibles valores es del 3,4E-38 al
3,4E38. Ejemplos:
49 -35 185.25 -346.67 -30450 32760.5 800 -32000.99
DATOS ALFANUMÉRICOS
Dentro de este tipo de datos encontramos los de tipo carácter (Char) que puede ser una
letra del abecedario (a, b, c,…, z, A, B, C,…, Z), dígitos (0, 1, 2, 3,…, 9) o símbolos
especiales (#, $, ^, *, %, *, /, ¡, +, -, …etc.). Una variable de tipo Char solo puede
contener un solo carácter, es decir, no puede almacenar ni frases ni palabras. Ejemplos:
‘b’ ‘B’ ‘$’ ‘3’ ‘%’ ‘+’ ‘/’ ‘F’ ‘v’
LOS OPERADORES
OPERADORES ARITMETICOS
Los operadores aritméticos sirven para realizar operaciones tales como suma, resta,
división y multiplicación. Existen varios tipos de operadores aritméticos:
Tenga cuidado cuando utilice los operadores pues a veces puede obtener resultados no
esperados si no tiene en cuenta su orden de evaluación. Veamos la lista de precedencias,
cuanto más arriba se evalúa antes:
Operador
() Mayor precedencia
^
*, /, Mod, Div
+, - Menor precedencia
a) 4*8 – 2^3 + 10
4*8 - 8+10
2 3
32-18
4
14
10
2-9
5
-7
OPERADORES DE RELACION
Operador Significado
a) X=4, A=3
5 >5*X+3
3
5 > 20+3
4
5 > 23
5
Falso
Falso
Falso
OPERADORES LOGICOS
Operador Significado
AND Y lógico
OR O lógico
NOT No lógico
El operador AND
Este operador combina dos condiciones simples y devuelve verdadero solo si los
dos operandos son verdaderos, en los demás casos devuelve falso.
A B A AND B
VERDADERO VERDADERO VERDADERO
VERDADERO FALSO FALSO
FALSO VERDADERO FALSO
FALSO FALSO FALSO
a) Si a =2 y b= 15
(a < 5) AND (b> 25)
1
VERDADERO AND (b >25)
2
FALSO
b) Si a=30,b=20 y c=15
Prof. Felipe Hernández Mora
(a>b)AND (b>c)
1
VERDADERO AND (b >c)
2
VERDADERO AND VERDADERO
3
VERDADERO
e) Si a=30,b=20,c=20, y d=5
((a<b) AND (b=c)) AND (c<d)
1
(FALSO AND (b=c)) AND (c<d)
2
FALSO
El operador OR
A B A OR B
VERDADERO VERDADERO VERDADERO
VERDADERO FALSO VERDADERO
FALSO VERDADERO VERDADERO
FALSO FALSO FALSO
a) Si a =2 y b= 15
(a < 5) OR (b> 25)
1
VERDADERO OR (b >25)
2
Prof. Felipe Hernández Mora
VERDADERO OR FALSO
3
VERDADERO
c) Si a=30,b=20 y c=15
(a>b)OR (b>c)
1
VERDADERO OR (b >c)
2
VERDADERO OR VERDADERO
3
VERDADERO
e) Si a=20,b=a,c=15, y d=10
((a=b) OR (b<c)) OR (c<d)
1 2
VERDADERO OR (c<d)
4
VERDADERO OR FALSO
5
VERDADERO
El Operador NOT
A NOT A
VERDADERO FALSO
FALSO VERDADERO
a) Si b=15
NOT (b+10>25)
1
NOT (25>25)
2
NOT FALSO
3
Prof. Felipe Hernández Mora
VERDADERO
b) Si N=10 y b=2
NOT ((N^b)>150)
1
NOT (100>150)
2
NOT FALSO
3
VERDADERO
e) Si x=30, y=20
NOT (x-y>0)
1
NOT (10>0)
2
NOT VERDADERO
3
FALSO
Algebra de Boole
Veamos algunas propiedades del algebra de Boole con respecto a los operadores
AND, OR, NOT.
Siendo A, B, y C tres variables booleanas a los que se les ha asignado cualquier
valor lógico:
Propiedad Conmutativa
A AND B<= => B AND A
A OR B <= => B OR A
Propiedad Asociativa
(A AND B) AND C<= => A AND B AND C <= => A AND (B AND C)
(A OR B) OR C<= => A OR B OR C <= => A OR (B OR C)
Propiedad Distributiva
(A AND B) OR (A AND C) <= => A AND (B OR C)
(A OR B) AND (A OR C) <= => A OR (B AND C)
Propiedad de la Negación
NOT (NOT A) <= =>A
Estas operaciones serán útiles para convertir una operación lógica, de un operador a
otro.
VERDADERO
FALSO OR SW
FALSO OR FALSO
FALSO
NOT FALSO
Prof. Felipe Hernández Mora
VERDADERO
i) Si a=10, b=22 ¿Que valor toma la j) Si a=10, b=22 y c=44 ¿Qué valor
variable booleana P en esta expresión? toma la variable booleana P en esta
expresión?
P= (a=b) OR (a<>b)
P= (a=b) AND (c<>a)
P= FALSO (a<>b)
P= FALSO OR VERDADERO
P= VERDADERO
OPERADOR
() Mayor precedencia
^
*, /, mod, div
+, -
=, <>, <, >, <=, >=
NOT
AND
OR Menor precedencia
b) NOT ( 25 Div 7 <5 ) AND NOT ( 6 Div 5 < 6 Mod 2 OR 20 > 25)
Prof. Felipe Hernández Mora
c) A=5, B=10
NOT ( 25>= A ^ 2 ) OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT ( 25>= 25 )OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT VERDADERO OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT VERDADERO OR NOT ( 35-2 <> 10 Div 5 )
NOT VERDADERO OR NOT ( 35-2 <> 2 )
NOT VERDADERO OR NOT ( 33 <> 2 )
NOT VERDADERO OR NOT VERDADERO
FALSO OR FALSO
FALSO
d) A=5, B=15
NOT ( B> (2 >= A Div 2 = 15 ))
NOT ( 15 > ( 2>=5 Div 2 = 15 ))
NOT ( 15 > (2 >= 2 = 15))
NOT ( 15 > ( VERDADERO = 15 )) Error. No se puede realizar la comparación
Entre un valor lógico y un valor
numérico utilizando un operador
relacional.
e) A=10, B=15
NOT ( B= ( 2>= A Div 2 > VERDADERO ))
NOT (15= ( 2>= 10 Div 2 > VERDAERO))
NOT (15= ( 2>= 5 > VERDADERO))
NOT (15= ( FALSO > VERDADERO ))
NOT (15= FALSO)
M= x+y m=(x+y)/(x-y)
x-y
EVALUACION
1.- Resuelva las siguientes expresiones:
C=100 C=100
C>70 AND C> 150 C>70 OR C>150
A=50 A=70
Prof. Felipe Hernández Mora
Taller # 3
EVALUACION
¿Qué es un dato?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los tipos de datos?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Fecha:
Calificación
Prof. Felipe Hernández Mora
Taller # 4
EJERCICIOS
3. - 7+5*(20-(3+5)) respuesta
a) Not F
b) Not V
c) 67
d) Ninguna
4. - (4+1)*5*21 respuesta
a) 45
b) 50-4
c) 23
d) ninguna
Reseña histórica
El termino algoritmo tiene su origen en la palabra algoritmo, el mismo que viene del
nombre del famoso e inolvidable matemático, astrónomo y filosofo musulmán:
Buchafar Mohamed Abenmusa Aldharismi. El cambio de la palabra “algorismo” a
“algoritmo”, no es difícil de entender tomando en cuenta que la gente había olvidado la
derivación original de la palabra. Uno de los primeros diccionarios matemáticos en
alema el Vollstandiges Mathematishes
Lexicon (Leipzing, 1747), de la siguiente descripción de la palabra Algorithmus.
“Bajo este concepto se combinan las naciones de los 4 tipos de de cálculos aritméticos,
suma, multiplicación, resta y división”
En el año 1950, la palabra algoritmo era frecuentemente asociada con el “Algoritmo de
Euclides”, el mismo en que consiste en un conjunto de pasos ordenados para hallar el
máximo común divisor de 2 números dados.
Algoritmo de Euclides.- dados dos números enteros positivos m y n, encontrar su
máximo común divisor, es decir el mayor entero positivo que divide exactamente a la
vez a n y m.
PASO 1.- Leer m y n ( m>n)
PASO 2.- Dividir m por n, y calcular el resto r, (0 < r < n)
PASO 3.- Si r = 0, el algoritmo termina; n es la respuesta, caso contrario ir al paso 4.
PASO 4.- Asignar n en m (m n) y r en n (n r) y volver al paso 2.
Ejemplo
cociente
Para: m=20 __m______n______(entero)___________r___
N=12
20 12 1 8 R=0? No
12 8 1 4 R=0? No
8 4 2 0 R=0? Si
Entonces 4 es la respuesta
Algoritmos cualitativos
Son aquellos pasos o instrucciones de escrito por medio de palabras comunes del idioma
español que sirven para llegar a la obtención de la respuesta o solución de un problema.
Ejemplo.
Se dispone de una cantidad ilimitada de agua, de un recipiente de 5 litros y otra de 4
litros, escribir un algoritmo para colocar exactamente dos litros de agua en el recipiente
de 5 litros.
Solución
1. llenar con agua el recipiente de 5 litros
2. llenar el recipiente de 4 litros con agua de la de 5 litros, de esta manera el
recipiente d 5 litros contendrá un litro
3. Vaciar el recipiente de 4 litros.
4. Poner el contenido de l recipiente de 5 litros en el recipiente de 4 litros.
5. llenar de nuevo el recipiente de 5 litros.
6. llenar el recipiente de 4 litros con agua de la de 5. Estro supone que pasen a la
primera 3 litros, quedando 2 litros en el recipiente de 5.
Algoritmos cuantitativos
Son todos aquellos pasos o instrucciones que involucran cálculos numéricos para
obtener un resultado adecuado.
Ejemplo
Elaborar un algoritmo para calcular las raíces de una ecuación de segundo grado,
conocidos los coeficientes a, b, c.
1. Inicio
2. Poner la ecuación en forma general ax2 bx c 0
3. Calcular el valor de b 2 4ac y ponerse en d
4. Si d>4, continuar con el paso 5, caso contrario ir a 10
5. Calcula la raíz cuadrada de d y poner en w
6. Calcular la primera raíz: x1 = (-b+w)/(2*a)
7. Calcular la segunda raíz x2 = (-b-w)/(2*a)
8. Escribir x1, x2
9. Ir al paso 11
10. escribir las raíces son imaginarias.
11. Fin
Prof. Felipe Hernández Mora
Representación de algoritmos
hay 4 maneras de representar un algoritmo
A.- Representación narrativa
B.- Diagrama de flujo
C.- Diagrama N-S
D.- Seudocòdigo
Evaluaciòn # 7
Taller # 7
¿Qué es un algoritmo?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los tipos de algoritmos?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
escriba el concepto de lenguaje de programación
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
escriba la clasificación de lenguaje de programación.
-----------------------------------------------------------------------------------------------------
--------------------------------------------------------
PROBLEMAS DE ALGORITMOS
Taller # 8
1. Un estudiante se encuentra durmiendo en su casa y tiene que ir a la universidad a
tomar la clase de programación, ¿Qué debe hacer el estudiante?
5. Un campesino necesita pasar un rió, lleva un lobo, una oveja y un saco de lechuga,
pero su canoa es tan chica que en ella cabe el campesino y con el solamente la oveja, el
lobo o el saco de lechuga.
6. Indique los pasos para ayudar a una familia a cruzar al otro lado del puente
7. Para regresar a su destacamento tres soldados debían cruzar un rió, el puente estaba
destruido y el rió es correntoso y profundo. Uno de ellos descubre a dos niños
navegando en una canoa pequeña a remo, la misma que podía resistir a los niños o a un
soldado al mismo tiempo. Indique como hicieron los soldados para poder cruzar el rió.
8. Tres alpinistas desean cruzar un abismo de 100m, dos de ellos pesan 60kg y el otro
80kg. Para poder cruzar existe una cuerda y una polea que resiste 120kg. Indicar los
pasos a seguir para que los tres alpinistas puedan cruzar el abismo.
Seudocòdigo
Es la descripción de un algoritmo para la solución de un problema determinado
utilizando palabras normales de un idioma, en nuestro caso el español. En otras palabras
es la descripción de la solución de un problema utilizando las características de un
lenguaje de programación estructurado como pascal, c++, Visual Basic.
Ejemplo:
Diseñar un algoritmo utilizando seudocodigos para calcular la superficie de un triangulo
Conocidos como datos la base, y la altura.
Algoritmo superfice_triangulo
var.
Base, Altura: entero
Súper : real
Inicio
Escribir (“Ingrese Base:”)
Leer (base)
Escribir (“Ingrese Altura:”)
Leer (altura)
Super (Base*Altura)/2
Escribir (Súper)
Fin
Ejercicios
Describir los algoritmos respectivos, utilizando la descripción narrativa, la técnica de
flujogramas y el seudocodigos de los sgtes. Problemas:
Prof. Felipe Hernández Mora
Var
B,C: Entero
A: Real
Inicio
Escribir (“Ingrese B: ”)
Leer (B)
Escribir (“Ingrese C: ”)
Leer ©
A SQRT(B**2+C**2)
Escribir (A)
Fin
Taller # 6 de seudocòdigo
10. Realizar el pseudocódigo que representa un algoritmo que reciba como dato de
entrada el valor de una temperatura expresada en grados centígrados y nos calcule y
escriba sus equivalentes en grados kelvin.
11. Realizar el pseudocódigo que permita al usuario introducir por el teclado dos notas,
calculando la suma y el producto de las notas, para posteriormente calcular datos
estadísticos.
14. Realizar el pseudocódigo para poder ingresar el valor de la suma de los activos y
pasivos de un balance inicial y obtener el capital.
15. Realizar el pseudocódigo para obtener el valor de los activos de un balance inicial,
se debe ingresar el capital y la suma de los pasivos.
16. Realice un pseudocódigo para obtener el valor del total de pasivos de un balance
inicial, determine usted los datos de entrada
Prof. Felipe Hernández Mora
Bloque
I I+1
Instrucción
Diagramas de flujo
Es la solución de un problema utilizando un conjunto de figuras geométricas (rombos,
rectángulos, cuadrados, círculos, etc...) unidas y relacionadas por medio de segmentos
de recta, con flechas que determinan el orden lógico de un algoritmo, en donde la forma
de una figura geométrica indica la acción a seguir
Ejemplo:
Elaborar un diagrama de flujo para calcular la superficie de un triangulo, conociendo la
base y la altura.
Prof. Felipe Hernández Mora
INICIO
“INGRESE
BASE”
“INGRESE
ALTURA”
S (B*H)/2
FIN
TIPOS DE DIAGRAMAS
En procesamiento de datos se consideran los siguientes diagramas:
Diagrama de flujo del sistema
Por medio de la cual se describe la ruta que siguen los datos, en forma detallada, dentro
de un sistema de tratamiento automático de información.
Diagrama de flujo de programa
En este diagrama se representan las instrucciones que defieren las operaciones y
decisiones lógicas orientadas al computador.
Diagrama de bloques
En este diagrama se representa el bloque general del proceso y los varios programas
constitutivos.
Diagramas de pasada
Es un diagrama que nos muestra que archivos entran y que archivos salen una vez
realizado el procesamiento automático de la información
Prof. Felipe Hernández Mora
SIMBOLOGIA UTILIZADA
Los símbolos o bloques para diagramar existen en gran cantidad y de diversas formas. A
que expondremos aquellos que se encuentran estandarizados por la ANSI (American
National Estándar Institute), que corresponde al instituto Nacional Americano de
Estándares.
1. Inicio y fin del algoritmo
4. Proceso o calculo
5. bloque de decisión
6. PROCESO ESTABLECIDO
Bloque que intrínsecamente ejecuta
3 instrucciones
7. Impresión de resultados
PLANTILLA DE DIAGRAMACION
Para elaborar los diagramas de flujo se utiliza la plantilla de diagramación, que consiste
en una regla rectangular de material plástico en donde viene representados los símbolos
estandarizados.
5. Dos líneas de flujo no deben cruzarse, para evitar esto se recomienda utilizar
conectores o líneas arqueadas.
Diagramas de flujo
Es la solución de un problema utilizando un conjunto de figuras geométricas (rombos,
rectángulos, cuadrados, círculos, etc...) unidas y relacionadas por medio de segmentos
de recta, con flechas que determinan el orden lógico de un algoritmo, en donde la forma
de una figura geométrica indica la acción a seguir
Ejemplo:
Elaborar un diagrama de flujo para calcular la superficie de un triangulo, conociendo la
base y la altura.
INICIO
“INGRESE
BASE”
“INGRESE
ALTURA”
S (B*H)/2
FIN
EVALUACION # 8
1. Qué significa ANSI
Para cumplir con este objetivo los diagramas de flujo se diseñarán utilizando las
siguientes estructuras:
— Secuencial
— Selectiva simple
— Selectiva doble
— Selección múltiple
— Repetitivas
— Anidadas
ESTRUCTURA SECUENCIAL
Secuencia es la realización de un acto inmediatamente después de otro. Las
instrucciones dentro de un diagrama de flujo son ejecutadas en el orden en el cual se
encuentran escritos; los bloques se representarán mediante símbolos estandarizados y su
flujo se indica mediante una flecha.
Ejemplo
Cuáles son las acciones que realiza un estudiante para asistir al colegio.
Los pasos a seguir en su forma macro son:
1.- Iniciar las actividades.
2.- Se levanta.
3.- Se dirige al baño.
4.- Se asea.
5.- Se viste.
6.- Desayuna.
Prof. Felipe Hernández Mora
INICIO
LEVANTARSE
IR AL BAÑO
ASEARSE
VESTIRSE
DESAYUNAR
SALIR DE LA CASA
DIRIGIRSE AL COLEGIO
FIN
ENUNCIADOS DE ASIGNACIÓN
Los enunciados de asignación se utilizan para indicar una acción o proceso,
generalmente la asignación de un valor o un resultado de una operación a una variable.
El enunciado de asignación va siempre dentro de un bloque rectángulo de la siguiente
manera.
INICIAR
PAGO 100
DEUDA 25
FIN
INICIAR
PAGO 300
SUELDO 800
FIN
PAGO tiene un valor inicial, antes de ejecutarse el enunciado de 300, al sumarle 800,
queda con un valor de 1100, después de ejecutarse en el enunciado. El valor de PAGO
tanto en la izquierda como en la derecha cambia de valor. En el transcurso del diseño
del algoritmo mientras no se vuelva a cambiar su valor mediante otro enunciado de
asignación el valor de PAGO sigue siendo 1100.
BLOQUE DE COMENTARIOS
Para escribir los comentarios en un diagrama de flujo, que consisten generalmente en
describir el objetivo del algoritmo y otras explicaciones adicionales se utiliza el
siguiente bloque.
TALLER # 9
EJERCICIOS
1.- Conocidos los valores de A igual a 5 y B a 8. Calcular la suma de A+B, almacenar
el resultado en SUMA. Diseñar el algoritmo y la codificación en Lenguaje Pascal.
Prof. Felipe Hernández Mora
INICIO
Prog. 001
Algoritmo Suma
A 5
B 8
SUMA A +B
FIN
2.- Conocidos los valores de PI igual a 3.141516 y el RADIO igual a 6. Calcular el área
del círculo con la fórmula ÁREA= PI*RADIO**2. Diseñar el algoritmo y la
codificación en Pascal.
INICIO
Prog. 002
Algoritmo Área
PI 3.141516
RADIO 6
AREA PI*RADIO**2
FIN
INICIO
Prog. 003
Algoritmo Superficie
BASE 5
ALTURA 12
S (BASE*ALTURA)//2
FIN
ENTRADA DE DATOS
Para introducir los datos al computador se utilizan los siguientes bloques, que
representan la pantalla y el teclado respectivamente.
“DEME PAGO”
PAGO
Prof. Felipe Hernández Mora
Si en determinados casos se tiene que leer más de una variable, se separan las variables
por comas.
Ejemplos:
Introducir por teclado las variables X, Y y Z
“DEME X,Y,Z”
X,Y,Z
SALIDA DE DATOS
Para la salida de información procesada del computador, se utiliza el bloque de
impresión, cuyo símbolo se encuentra a continuación. El dispositivo utilizado
generalmente es la impresora.
Ejemplo
Imprimir el valor de la variable SUELDO.
SUELDO
A, B, C
Existen otros medios de salida de información tales como discos duros, plotters,
scanners e incluso la misma pantalla, en donde se puede desplegar el contenido de las
variables en un momento determinado.
Ejemplo
Prof. Felipe Hernández Mora
SUMA
EJERCICIOS
1.- Introducir a través del teclado los lados de un rectángulo. Diseñar un algoritmo para
calcular el perímetro y el área.
Plan de solución
Datos de salida: Perímetro, Área
Datos de entrada: lado1, lado2
Datos adicionales: ninguno
Solución: Aplicar las siguientes fórmulas
Perímetro = lado1 x 2 + lado2 x 2
Área = lado1 x lado2
Una vez introducidos los datos correspondientes a los lados, aplicamos las fórmulas y se
imprimen los resultados.
INICIO
Prog. 004
Calculo Perimetro_area
“Ingrese datos”
Lado1, Lado2
Perímetro, Area
FIN
Prof. Felipe Hernández Mora
2.- Se introduce a través del teclado las edades del padre, la madre y el hijo. Diseñar un
algoritmo para calcular el promedio de las edades y desplegar en pantalla.
Plan de solución
Datos de Salida: Promedio
Datos de Entrada: edad1, edad2, edad3
Datos Adicionales: Ninguno
INICIO
Prog. 005
Algoritmo Promedio
“Ingrese datos”
edad1, edad2,
edad3
Promedio (edad1+edad2+edad3)/3
Promedio
FIN
3.- Se introduce a través del teclado el sueldo básico y las 3 ventas realizadas en el mes
por un vendedor. Diseñar un algoritmo para calcular el sueldo total al fin del mes, si
la empresa reconoce un 10% de comisión sobre el total de ventas realizadas.
Plan de solución
Prof. Felipe Hernández Mora
INICIO
Prog. 006
Algoritmo Sueldo-Total
“Ingrese datos”
tv v1 + v2 + v3
co tv * 0.1
st sb + co
st
FIN
Prof. Felipe Hernández Mora
PLAN DE SOLUCIÓN
Datos de Salida: calificación final
Datos de Entrada: 3 aportes, examen final, trabajo final
Datos adicionales: 50%, 30% y 20%
INICIO
Prog. 007
Algoritmo Calificación _ final
“Ingrese datos”
cf
FIN
5.- Se introduce a través del teclado dos números en las variables A y B, imprimir los
valores originales. diseñar un algoritmo para intercambiar los valores de A y B e
imprimir el contenido final de las variables.
Prof. Felipe Hernández Mora
INICIO
Prog. 008
Algoritmo Intercambio
“Ingrese A”
“Ingrese B”
AUX A
A B
B AUX
A, B
FIN
ESTRUCTURAS SELECTIVAS
En el desarrollo de un algoritmo la mayoría de las veces nos vemos abocados a
situaciones de excepción, agrupación o comparación.
Para que el algoritmo sea flexible y general, se debe tener en cuenta todas las
posibilidades o alternativas que se puedan presentar en un momento dado en la solución
de un problema. De esta manera nace la necesidad de hacer comparaciones y tomar
decisiones.
Prof. Felipe Hernández Mora
Si
condición
acción
INICIO
Prog. 009
Calculo total a pagar
“Ingrese
datos”
COMPRAS
VALOR COMPRAS
F
COMPRAS
>200.000
V
VALOR VALOR – (COMPRAS*0.1)
VALOR
FIN
Prof. Felipe Hernández Mora
F
SI
CONDICION
V
ACCION1
ACCION2
ACCION3
Ejemplo
Se introduce a través del teclado un número entero en la variable N. Diseñar un
algoritmo para averiguar si el número es positivo o negativo e imprimir el mensaje
respectivo.
Prof. Felipe Hernández Mora
INICIO
Prog. 010
Numero positivo_negativo
“Ingrese N”
F
N>0
V
“Numero es
positivo”
“Numero es
negativo”
FIN
INICIO
Prog. 011
Algoritmo Par _ impar
“DEME
N”
C N/2
R N-C*2
F
R=0
V
“Numero es
PAR”
“Numero es
IMPAR”
FIN
2.- Se introduce por el teclado tres valores enteros en la variable A B.C. Calcular el
mayor valor, almacenar en la variable MAYOR e imprimir. Diseñar el algoritmo y
codificar en Pascal.
Prof. Felipe Hernández Mora
INICIO
Prog. 012
Algoritmo mayor 3 números
“DEME
A, B, C”
A, B, C
F
A>B
V
MAYOR A
MAYOR B
C >MAYOR
MAYOR C
MAYOR
FIN
INICIO
Prog. 013
Algoritmo 3 dígitos
“DEME
A, B, C”
A, B, C
SUMA A+B+C
F
SUMA
<=27
X A * 100 + B * 10 + C * 1
“Datos
incorrectos”
FIN
4.- Se introduce a través del teclado la fecha actual y la fecha de nacimiento de una
persona dados en día, mes y años. Calcular la edad actual de la persona en años,
meses y días e imprimir. Diseñar el algoritmo.
Prof. Felipe Hernández Mora
INICIO 1
M M1-M2
“Fecha actual”
2
D, M, A
“Fecha de
nacimiento”
FIN
D2, M2, A2
F
D1>=D2
V
D D1-D2
M1 M1-1
D1 D1+30
D D1-D2
F
M1>=M2
V
M M1-M2
A1 A1-1
1
Prof. Felipe Hernández Mora
5.- Se introduce a través del teclado, el código y las ventas de un mes de los
vendedores de la compañía ABC. Se trata de calcular la comisión de acuerdo a las
siguientes condiciones:
- Venta menor de 100.000, comisión 5%
- Venta entre 100.000 y 200.000, comisión 10%
- Venta mayor a 200.000, comisión 20%
Imprimir el código y la comisión a pagar a cada vendedor. Finalizar el proceso cuando
en la variable código se introduce 999. Diseñar el algoritmo.
Prof. Felipe Hernández Mora
INICIO
Prog. 015
Algoritmo comisión-ventas
“DEME CODIGO
VENTA”
CODIGO,
VENTA
F
CODIGO
<>999
V
F
VENTA<
100000
V
COMISION VENTAS*0.5
M1-1
VENTA<
=200000
V
COMISION VENTAS*0.1
M1-1
COMISION VENTAS*0.2
M1-1
CODIGO, COMISION
FIN
Prof. Felipe Hernández Mora
6.- Se introduce a través del teclado, el código y el total de ventas de un mes de los
vendedores de la compañía QUFATEX. Se trata de calcular la comisión de acuerdo
a las siguientes condiciones:
- Total ventas menor a 10.000 ; comisión 5%
- Total de ventas entre 10.000 y menor a 20.000; comisión del 10%.
- Total de ventas entre 20.000 y menor a 30.000; comisión 15%.
- Total de ventas entre 30.000 y 40.000 ; comisión 20%
- Total ventas mayor a 40.000; comisión 25%.
Imprimir el código, la comisión por vendedor. Diseñar el algoritmo.
Prof. Felipe Hernández Mora
INICIO
Prog. 016
Algoritmo comisión-ventas
“DEME CODIGO.
TV”
CODIGO,
TV
F
TV<
10000
V
COMISION TV * 0.05
M1-1
F
TV<
20000
V
COMISION TV * 0.1
M1-1
F
TV<
30000
V
COMISION TV * 0.15
M1-1
F
TV<
40000
V
COMISION TV * 0.2
M1-1
COMISION TV * 0.25
M1-1
CODIGO, COMISION
FIN
Prof. Felipe Hernández Mora
Expresión
Modelo B
Expresión
ACCION X
INICIO
Prog. 017
Programa Díaz – semana
“Ingrese D”
FIN
Ejemplo 2
Se Introduce a través del teclado la nota final de una materia en el rango de 1 a 20.
Diseñar un algoritmo para ubicar la nota de acuerdo a la siguiente tabla Si la nota no se
encuentra en el rango imprimir error.
Nota: 19,20: sobresaliente
NOTA: 16, 17,18: MUY BUENA
NOTA15, 14: BUENA
NOTA: 13,12: REGULAR
NOTA>= 11: INSUFICENTE
Prof. Felipe Hernández Mora
INICIO
Prog. 018
Programa Calificaciones
“Ingrese Nota”
NOTA
NOTA
ERROR
FIN
ESTRUCTURAS REPETITIVAS
En la elaboración de los diagramas de flujo anteriores, hemos venido trabajando con
algoritmos que el computador solamente puede repetir una vez, si ustedes observan
cualquiera de los algoritmos que hemos desarrollado se darán cuenta que el computador
inicia el algoritmo, sigue bloque por bloque y termina el algoritmo.
Cada bloque la ejecuta una sola vez y por lo tanto el algoritmo.
Cada bloque la ejecuta una sola vez y por lo tanto el algoritmo en su totalidad se lo
ejecuta una única vez
A continuación estudiaremos un bloque muy poderoso que permiten que el computador
ejecute un bloque o un grupo de bloques varias veces. Estos bloques nos permitirán
elaborar algoritmos más sofisticados y por lo tanto más útiles y más aplicables a
situaciones reales y concretas.
valor de falso, Es decir, cuando una, expresión booleana tome el valor lógico
verdadero, el bloque o el grupo de bloques pertenecientes a la estructura repetir, se
dejará de ejecutar, gráficamente se representa así:
INSTRUCCION
INSTRUCCIONES
L
(EXPRESION
BOOLEANA)
En donde L indica hasta que bloque se debe repetir L debe ser una constante del orden
de las decenas, empezando por 10, 20, 30, etc. El bloque o el grupo de la estructura
repetir, al menos se ejecuta una vez, ya que la evaluación de la expresión lógica se
encuentra al final del cuerpo del bucle
EJEMPLO
INICIO
I 0
10
I I+1
F 10
(I>5)
V
En el ejemplo anterior se inicializa la variable I en cero, a continuación se encuentra la
estructura repetir. Esta estructura esta formada por el bloque círculo que indica el
inicio del proceso repetitivo y el bloque que Ahora veamos a través de una prueba de
escritorio cuantas veces e repite el grupo de bloques.
Prof. Felipe Hernández Mora
I IMPRIMIR
0 0
1 1
2 2
3 3 Como se puede observar el grupo de bloques
4 4 se repite 6 veces.
5 5
6
ESTRUCTURA mientras
La estructura mientras, nos permite ejecutar un bloque o un grupo de bloques un
número determinado de vedes, Este grupo de bloques se repite mientras que una
expresión booleana tenga el valor de verdadero. Es decir, cuando una expresión
booleana tome el valor lógico falso el bloque o el grupo de bloques pertenecientes al
boque mientras, se dejará de ejecutar. Gráficamente se representa así:
INSTRUCCION
L
(EXPRESION
BOOLEANA)
IMPRIMIR
INSTRUCCION
En donde L indica hasta que bloque se debe repetir, delimitando de esta manera el rango
del proceso mientras, L debe ser una constante del orden de las decenas, empezando
por 10, 20, 30, etc.
EJEMPLO 1
Prof. Felipe Hernández Mora
INICIO
I 0
10
( I <= 5 )
I I+1
10
9. Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos
de ejercicio, si la formula es:
Prof. Felipe Hernández Mora
[Link]= (220-edad)/10
10. Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su
salario anterior.
Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.
13. Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra
los tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer
la ruta en una semana cualquiera.
14. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas
invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con
respecto a la cantidad total invertida.
15. Un alumno desea saber cual será su calificación final en la materia de algoritmos.
Dicha calificación se compone de los siguientes porcentajes:
55% del pro medio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
16. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de estudiantes.
17. Un alumno desea saber cual será su promedio general en las tres materias más
difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas. Estas
materias se evalúan como se muestra a continuación:
La calificación de matemáticas se obtiene de la sigt. manera:
Examen 90%
Promedio de tareas 10%
En esta materia se pidió un total de tres tareas.
18. Calcular el total que una persona debe pagar en una llantera, si el precio de cada
llanta es de $800 si se compran menos de 5 llantas y de $700 si se compran 5 o mas.
20. Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos
de ejercicio aeróbico; la formula que se le aplica cuando el sexo es femenino es:
[Link]= (220-edad)/10
Y si el sexo es masculino:
[Link]= (210-edad)/10
23. Una empresa de bienes raíces ofrece casas de interés social. Bajo las siguientes
condiciones: si los ingresos del comprador son menores de $8000 o mas el enganche
será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en
diez años. Si los ingresos del comprador son $8000 o mas el enganche será del 30% del
costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años.
La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y
cuanto por cada pago parcial.
24. Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto dinero le
prestara al banco para hipotecar su casa. Tiene una cuenta bancaria, peor no quiere
disponer de ella a menos que el monto por hipotecar su casa sea muy pequeño. Si el
monto de la hipoteca es menor que $ 1 000 000 entonces invertirá el 50% de la
inversión total y un socio invertirá el otro 50%. Si el monto de la hipoteca es de $1 000
000 o mas, entonces invertirá el monto total de la hipoteca y el resto del dinero que se
necesite para cubrir la inversión total se repartirá en partes iguales entre el socio y él.
Prof. Felipe Hernández Mora
25. El gobierno de un país desea reforestar un bosque que mide determinado número de
hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces
decidirá sembrar de la sig. manera:
Porcentaje de superficie del bosque Tipo de árbol
70% pino
20% oyamel
10% cedro
Si la superficie del terreno es menor o igual a 1 millón de metros cuadrado, entonces
decidirá sembrar de la sig. manera:
Porcentaje de superficie del bosque Tipo de árbol
50% pino
30% oyamel
20% cedro
El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar
en el bosque, si se sabe que en diez metros cuadrados cabe 8 pinos, en 15 metros
cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se
sabe que unja hectárea equivale a 10 mil metros cuadrados.
27. En una fábrica de computadoras se planea ofrecer a los clientes un descuento que
dependerá del número de computadoras que compre. Si las computadoras son menos de
cinco se les dará un 10% de descuento sobre el total de la compra; si el número de
computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de
descuento; y si son diez o mas se les da un 40% de descuento. El precio de cada
computadora es de $1,000.
28. En una llantera se ha establecido una promoción de las llantas marca “General”,
dicha promoción consiste en lo sig:
Si se compran menos de 5 llantas el precio es de $300 cada una, de $250 si se compran
de cinco a diez y de $200 si se compran mas de 10.
Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las
llantas que compra y la que tiene que pagar por el total de la compra.
29. En un juego de preguntas a la que se responde “Si” o “No” gana quien responda
correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se
pregunta la sig. Y termina el juego.
Las preguntas son:
1. ¿Colon descubrió América?
2. ¿La independencia de México fue en el año 1810?
3. ¿The Doors fue un grupo de rock americano?
Prof. Felipe Hernández Mora
30. Un proveedor de etéreos ofrece un descuento del 10% sobre el precio sin IVA, de
algún aparato si este cuesta $2000 o más. Además, independientemente de esto, ofrece
un 5% de descuento si la marca es Sony. Determinar cuanto pagara, con IVA incluido,
un cliente cualquiera por la compra de su aparato.
31. el dueño de una empresa desea planificar las decisiones financieras que tomara en el
siguiente año. La manera de planificarlas depende de lo siguiente;
Si actualmente su capital con saldo negativo, pedirá un préstamo bancario para que su
nuevo saldo sea de $10000. Si su capital tiene actualmente un saldo positivo pedirá un
préstamo bancario para tener un nuevo saldo de $20000, pero si su capital tiene
actualmente un saldo superior a los $20000 no pedirá ningún préstamo, posteriormente
repartirá su presupuesto de la siguiente manera.
$5000 para su equipo de cómputo, $2000 para mobiliario y el resto la mitad será para la
compra de insumos y la otra para otorgar incentivos del personal.
Desplegar que cantidades se destinaran para la compra de insumos e incentivos al
personal y, en caso de que fuera necesario, a cuanto ascenderá la cantidad que se pediría
al banco.
32. Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos,
un medico determina si una persona tiene anemia o no, lo cual depende de su nivel de
hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene
una persona es menor que el rango que le corresponde, se determina su resultado como
positivo y en caso contrario como negativo. La tabla en la que el medico se basa para
obtener los resultados es la sig:
Edad Nivel Hemoglobina
0-1 Meses 13-26g%
>1y<=6meses 10-18g%
>6y<=12meses 11-15g%
>1y<=5años 11.5-15g%
>5y<=10años 12.6-15.5g%
>10y<=15años 13-15.5g%
Mujeres >15 años 12-16g%
Hombres>15 años 14-18g%
33. Una institución educativa estableció un programa para estimular a los alumnos con
buen rendimiento académico y que consiste en lo siguiente:
Si el promedio es de 19 o mas y el alumno es de preparatoria, entonces podrá este
cursar 55 unidades y se le hará un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de
preparatoria, entonces este deberá cursar 50 unidades y se le hará un descuento del 10%
Obtener el total que tendra que pagar un alumno si la colegiatura para alumnos de
profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de
$180 por cada cinco unidades.
34. Que lea tres numero diferentes y determine el numero medio del conjunto de los tres
números (el numero medio es aquel numero que no es ni mayor, ni menor).
38. Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos
neutros.
41. Una persona debe realizar un muestreo con 50 personas para determinar el promedio
de peso de los niños, jóvenes, adultos y viejos que existen en una zona habitacional. Se
determina las categorías con base en la siguiente tabla:
CATEGORIA EDAD
Niños 0-12
Jóvenes 13-29
Adultos 30-59
Viejos 60 en adelante
Prof. Felipe Hernández Mora
42. Al cerrar un expendio de naranjas, 15 clientes que aun no han pagado recibirán un
15% de descuento si compran más de 10 kilos. Determinar cuanto pagara cada cliente y
cuanto percibirá la tienda por esa compra.
43. Un entrenador le ha propuesto a un atleta recorrer una ruta de 5km durante 10 días,
para determinar si es acto para la prueba de 5km o debe buscar otra especialidad. Para
considerarlo apto debe cumplir por lo menos una de las sig. condiciones:
- Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos.
- Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos.
- Que su promedio de tiempos sea menor o igual a 15 minutos.
44. Diseñe un diagrama que lea los 2500000 votos otorgados a los tres candidatos a
gobernador e imprima el número del candidato ganador y su cantidad de votos.
45. Suponga que tiene usted una tienda y desea registrar las ventas en una computadora.
Diseñe un pseudocodigo que lea por cada cliente, el monto total de su compra. Al final
del día escriba la cantidad total de las ventas y el número de clientes atendidos.
46. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen
derecho al examen de nivelación.
Diseñe un algoritmo que lea las calificaciones obtenidas en las 5 unidades por cada uno
de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de
nivelación.
47. Dados los numeros enteros determine la suma y cual de ellos es mayor, usando dos
funciones diferentes.
50. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de estudiantes.
51. En un supermercado una ama de casa pone en su carrito los artículos que va
tomando de los estantes.
La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por
lo que cada vez que toma un articulo anota su precio junto con la cantidad de artículos
iguales que ha tomado y determina cuanto dinero gastara en ese articulo; a esto le suma
lo que irá gastando en los demás artículos, hasta que decide que ya tomo lo que
necesitaba. Ayúdale a esta señora a obtener el total de sus compras.
52. Obtener el subtotal, el neto y el total a pagar de una canasta de compras, utilizando
el código de los productos, precio unitario, el IVA.
53. Obtener el promedio general de un estudiante cuyas notas son de promedio regular
que se va a retirar apenas termine el año lectivo y desea de urgencia sus promedios.
Prof. Felipe Hernández Mora
Calcular el primer parcial, el segundo parcial, el tercer parcial hasta obtener lo que se
pide.
Considerar la conducta.
54. Un negocio de copias tiene un límite de producción diaria de 10000 copias si el tipo
de impresión es offset y de 50000 si el tipo es estándar. Si hay una solicitud de un
empleado que tiene que verificar que las copias pendientes hasta el momento y las
copias solicitadas no excedan del límite de producción. Si el límite de producción se
excediera el trabajo solicitado no podría ser aceptado. El empleado necesita llevar un
control de las copias solicitadas al momento para decidir en forma rápida si los trabajos
que se soliciten en el día se deben aceptar o no.
56. calcule e imprima el pago de 102 trabajadores que laboran en la Cía. GACMAN.
Los datos que se leerán serán los siguientes:
a) Las horas trabajadas
b) El sueldo por hora
c) El tipo de trabajador (1,-obrero, 2,-empleado)
Para calcular los pagos considerar lo siguiente:
-los obreros pagan 10% de impuesto
-los empleados pagan 10% de impuesto
-los trabajadores (obreros y empleados) que reciban un pago menor de $100
no pagan impuesto.
57. Ingrese por teclado cinco numeros naturales y presentar por pantalla cual es el
mayor, menor, y el número medio.
58. Ingrese por teclado la edad de una persona, si esta es un niño presentara un mensaje
por pantalla que diga “pequeño”, si es un adolescente presentará un mensaje por
pantalla que diga “joven” y si es un adulto presentara el mensaje que diga “persona
madura”.
59. Presente por pantalla un mensaje según los promedios de los alumnos de 4to curso
especialización informatica y deducir lo siguiente:
Si tiene 19 presente un mensaje que diga, “PARTICIPARA EN UN CONCURSO A
NIVEL INTERNACIONAL”
Prof. Felipe Hernández Mora
60. Ingrese por teclado 10 numeros y preséntelos por pantalla en forma vertical,
horizontal, y de escalera.
Prof. Felipe Hernández Mora
1.2 Características
Orientado a la programación de sistemas
Es altamente transportable
Es muy flexible
Prof. Felipe Hernández Mora
El preprocesador
Transforma el programa fuente, convirtiéndolo en otro archivo fuente “predigerido”.
Las transformaciones incluyen:
Eliminar los comentarios.
Incluir en el fuente el contenido de los ficheros declarados con #include
<fichero> (a estos ficheros se les suele llamar cabeceras)
Sustituir en el fuente las macros declaradas con #define (ej. #define CIEN
100)
El compilador
Convierte el fuente entregado por el preprocesador en un archivo en lenguaje máquina:
fichero objeto.
Algunos compiladores pasan por una fase intermedia en lenguaje ensamblador.
El enlazador
Un fichero objeto es código máquina, pero no se puede ejecutar, porque le falta código
que se encuentra en otros archivos binarios.
El enlazador genera el ejecutable binario, a partir del contenido de los ficheros objetos
y de las bibliotecas.
Las bibliotecas contienen el código de funciones precompiladas, a las que el archivo
fuente llama (por ejemplo printf).
#include <stdio.h>
main()
{
/* Escribe un mensaje */
printf (“Hola, mundo\n”);
}
Estructuras de datos
literales
tipos básicos (todos numéricos)
tipos enumerados
tipos estructurados (struct, union)
punteros y vectores
Construcciones algorítmicas
construcciones condicionales (if,switch)
construcciones iterativas(while,for,do...while)
subrutinas (funciones)
Además de lo anterior, el C tiene otros elementos:
comentarios
inclusión de ficheros
macros
compilación condicional
El preprocesador es quien normalmente se encarga de interpretar estas construcciones.
main()
{
... cuerpo del main ...
}
1.8 Comentarios
En el C original, tienen la forma /* cualquier texto */
Los comentarios se pueden extender varias líneas
No se pueden anidar comentarios (comentarios dentro de otros)
En C++ se usan también comentarios de una sola línea. La sintaxis es
// cualquier texto
Todo lo que se escriba a partir de las dos barras es un comentario. El comentario
termina con el final de la línea.
Ejemplos:
{
/* Esto es un comentario
que ocupa varias líneas
*/
2.1 Literales
Literal: un dato escrito directamente (ej. 1234, “hola”, etc.)
Todos estos tipos -salvo void- son tipos numéricos. Incluso el tipo char.
Se pueden construir tipos de datos más elaborados a partir de estos tipos básicos:
En esta sección vamos a ver, de forma muy general, los elementos más significativos de
la sintaxis de C. No explicaremos en profundidad la función de cada uno de estos
elementos, ya que cada uno de ellos tiene dedicada una sección más adelante.
Prof. Felipe Hernández Mora
Nº
Línea Significado
Línea
/* Esto es un comentario
1 */ Comentario
return 1;
Salimos de la función main, devolviendo
8
1
hemos escrito ninguna tilde en el texto del comentario. Suele ser norma no
escribir caracteres “raros” tales como tildes o cedillas en los comentarios de
programas, ya que algunos compiladores pueden tener problemas ante estos
caracteres.
Como ya hemos comentado, las sentencias compuestas están delimitadas por un
par de llaves. En el ejemplo anterior encontramos:
Una sentencia compuesta, delimitada por las llaves de las líneas 4 y 9. Esta
sentencia compuesta forma el cuerpo de la función main.
Dos sentencias simples (líneas 6 y 8), componentes de la anterior sentencia
compuesta. Observa como todas las sentencias simples están delimitadas por el
caracter ;.
La función main no recibe ningún parámetro. Para indicar esto se escribe void
(vacío en inglés) en la lista de parámetros de su declaración.
Principales ficheros de cabecera
Los principales ficheros de cabecera de C “suelen ser” los siguientes:
ctype.h: Funciones útiles para la clasificación y el mapeado de códigos.
errno.h: Funciones que permiten comprobar el valor almacenado en errno por
algunas funciones de librerías.
float.h: Funciones que establecen algunas propiedades de las representaciones
de tipos real.
limits.h: Funciones que establecen algunas propiedades de las representaciones
de tipos enteros.
math.h: Funciones que sirven para realizar operaciones matemáticas comunes
sobre valores de tipo double.
stdarg.h: Son declaraciones que permiten acceder a los argumentos adicionales
sin nombre en una función que acepta un número variable de argumentos.
stdio.h: Macros y funciones para realizar operaciones de entrada y salida sobre
ficheros y flujos de datos.
stdlib.h y a veces unistd.h: Declaraciones de una colección de funciones
útiles y la definición de tipos y macros para usarlas. Entre ellas suele estar la
función malloc que permite hacer peticiones de memoria dinámica al sistema.
string.h: Declaración de una colección de funciones útiles para manejar
cadenas y otros arrays de caracteres.
time.h: Declaración de funciones para el manejo de fechas.
Declarar una variable es indicar al compilador que debe reservar espacio para almacenar
valores de un tipo determinado, que serán referenciados por un identificador
determinado. En C debemos declarar todas las variables antes de usarlas, establecer el
tipo que tienen y, en los casos que sea necesario, darles un valor inicial.
El estándar de C define sólo unas pocas palabras reservadas. Sólo con ellas no puede
hacerse un programa “normal” en la vida real. El programador necesita una serie de
funciones y herramientas estándar, que deben estar disponibles en cualquier entorno de
programación de C / C++. A este conjunto de funciones se le llama librería estándar.
Las funciones se declaran en ficheros de cabecera o .h. Las cabeceras contienen única y
Prof. Felipe Hernández Mora
Operadores
DEFINICIÓN: ¿qué es un operador?: Un operador es un símbolo (+, -, *, /, etc) que
tiene una función predefinida (suma, resta, multiplicación, etc) y que recibe sus
).
Operadores aritméticos
Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación
aritmética, que necesitemos (ejemplo: suma, resta, multiplicación, etc). En la siguiente
tabla se muestran los operadores de los que disponemos en C y su función asociada.
Tabla: Operadores aritméticos
Operador Acción Ejemplo
División
x=6 2; // x vale 3
Módulo x = 5 % 2; // x vale 1
Decremento x = 1; x ; // x vale 0
Incremento x = 1; x ; // x vale 2
Incrementos y Decrementos
Como hemos visto los operadores de incremento y decremento, añaden o restan una
unidad a su operando. Observar, que estos operadores modifican el valor del operando:
x = 4;
y = x++;
/* Después de esta instrucción x valdrá 5 e */
/* y valdrá 4 (como veremos a continuación). */
Los incrementos y decrementos, son operadores muy útiles, y en muchas ocasiones es
bastante más clara su utilización que hacer una simple suma o resta:
/* Un pequeño for */
Prof. Felipe Hernández Mora
int i,j;
Operadores relacionales
Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones
(igualdad, mayor, menor, etc) entre un par de operandos (en principio, pensemos en
números). Los operadores relacionales de los que disponemos en C son:
falso (false) 0
cierto (true) cualquier valor distinto de 0, aunque normalmente se usará el 1
Operadores lógicos
Como operadores lógicos designamos a aquellos operadores que nos permiten
“conectar” un par de propiedades (al igual que en lógica):
numero = 2701;
if ( EsPrimo(numero) && (numero > 1000) ){
/* Ejecutaremos este código si numero */
Prof. Felipe Hernández Mora
Al igual que con la igualdad hay que tener especial cuidado con los operadores && y
Estructuras de control
Podemos clasificar cada una de las estructuras de control más comunes en programación
en uno de los siguientes tipos:
Secuencia: Ejecución sucesiva de una o más operaciones.
Selección: Se realiza una u otra operación, dependiendo de una condición.
Sentencia if-else
La forma general de esta sentencia es:
if (expresion)
sentencia 1
else
sentencia 2
Ejemplo de if
#include<stdio.h>
#include<conio.h>
int ed;
void main()
{
clrscr();
gotoxy(30,10);printf(“ingrese su edad”);
gotoxy(30,12);scanf(“%i”,&ed);
if(ed>17)
{
gotoxy(30,14);printf(“usted es mayor de edad”);
}
else
{
Prof. Felipe Hernández Mora
Sentencia switch
La forma general de esta sentencia es:
switch (expresion)
{
case exp 1:
sentencia 1;
sentencia 2;
break;
case exp 2:
case exp N:
sentencia N;
break;
default:
sentencia D;
}
case ‘E’:
printf(“Es la vocal e\n”);
break;z
case ‘i’:
case ‘I’:
printf(“Es la vocal i\n”);
break;
case ‘o’:
case ‘O’:
printf(“Es la vocal o\n”);
break;
case ‘u’:
case ‘U’:
printf(“Es la vocal u\n”);
break;
default: printf(“Es una consonante\n”);
}
s
if (a < b) {
if (a < c)
menor = a;
else
menor = c;
Prof. Felipe Hernández Mora
} else {
if (b < c)
menor = b;
else
menor = c;
}
Sentencia break
La sentencia break se utiliza para terminar la ejecución de bucles o salir de una
sentencia switch. Es necesaria en la sentencia switch para transferir el control fuera de
la misma. En caso de bucles anidados, el control se transfiere fuera de la sentencia más
interna en la que se encuentre, pero no fuera de las externas.
case 2:clrscr();resta();break;
case 3:clrscr();multiplicacion();break;
}
}while(op!=4);
}
Sentencia for
La forma general de esta sentencia es:
for (expresion 1; expresion 2; expresion 3)
sentencia;
TALLER DESDE EL 16 AL 27
for(i=1;i<=5;i++){
gotoxy(i+30,i+11);printf(“%i”,x[i]);
}
getch();
}
Sentencia while
La forma general de esta sentencia es:
while (expresion)
sentencia;
int x=1,resul;
void main()
{
clrscr();
while(x<=5)
{
resul=resul+x;
x++;
}
printf(“%i”,resul);
getch();
}
Sentencia do-while
La forma general de esta sentencia es:
do
sentencia;
while (expresion);
Ejercicios con do while
FUNCIONES()
Funciones y subrutinas
Las funciones en C desempeñan el papel de las subrutinas o procedimientos en otros
lenguajes, esto es, permiten agrupar una serie de operaciones de tal manera que se
puedan utilizar más tarde sin tener que preocuparnos por cómo están implementadas,
simplemente sabiendo lo que harán.
Prof. Felipe Hernández Mora
Ejemplo
1sintaxis/ejemplo_funciones1.c
La declaración
int factorial(int a);
debe coincidir con la definición de la función factorial que aparece posteriormente, si no
coincide obtendremos un error en la compilación del programa. El valor que calcula la
función factorial() se devuelve por medio de la sentencia return, ésta puede estar
seguida de cualquier expresión o aparecer sola. En tal caso la función no devuelve
ningún valor y al llegar a ese punto simplemente se devuelve el control a la función
desde la que se invocó.
Subsecciones
3.6.1 Paso de parámetros a funciones. Llamadas por valor
Ejemplo
1sintaxis/ejemplo_funciones2.c
Como podemos ver, en este caso no utilizamos una variable temporal en la función
factorial para ir calculándo la solución, sino que vamos disminuyendo el argumento n
de entrada. Esto no influye en la variable a (que es la que se paso como argumento a la
función factorial) ya que al pasarse los parámetros por valor es una copia de la variable
a y no a directamente la que maneja la función factorial como argumento n.
Si quisieramos modificar una variable llamando a una función tendríamos que pasarle
como argumento a dicha función la dirección en memoria de esa variable (un puntero a
la variable). Esto lo veremos en la sección 5.9.
Para la mayoría de las aplicaciones es mejor y más natural comprobar la condición antes
de ejecutar el bucle, por ello se usa más la sentencia while.
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que pide un
número igual a 0:
int numero = 0;
do
{
printf(“Introduce el número 0:\n”);
scanf(“%d”, &numero); /* Se lee el numero */
Prof. Felipe Hernández Mora
Arrays (ARREGLOS)
Los arrays3.4 quizás sean la forma más simple de tipos de datos compuestos.
DEFINICIÓN: Array: Un array es una colección ordenada de elementos de un mismo
tipo de datos, agrupados de forma consecutiva en memoria. Cada elemento del array
tiene asociado un índice, que no es más que un número natural que lo identifica
inequívocamente y permite al programador acceder a él.
Notas al pie
...arrays3.4
En español la palabra array no tiene una traducción clara. Algunos autores utilizan
agrupación, aunque en este manual utilizaremos simplemente array
Introducción
Ahora vamos a ver qué es para el compilador un array, y así aprenderemos a usarlos de
manera más eficiente. Un array es un conjunto de elementos del mismo tipo. Para que
sea conjunto “ordenado”, lo que el compilador hace es juntar todos los elementos en la
misma zona de memoria. Almacena la dirección inicial en nuestra variable para saber
dónde está el primer elemento, que correspondería al índice “0”. A partir de ahí, al
incrementar la dirección de memoria en el tamaño de los elementos, va accediento a
array[1], array[2], etc.
índice tamaño_elementos .
Esta fórmula es la que aplica el compilador para calcular la dirección del elemento al
que nos referimos al hacer un acceso al array del tipo array[indice], como por ejemplo
numeros_primos[3]. Claramente, se dibuja la idea del puntero en el concepto de array:
DEFINICIÓN: Variable tipo array: Un puntero al primer elemento del array.
¿Cuál es la ventaja de trabajar de punteros, con los posibles problemas que eso trae, en
vez de con arrays sin más? La respuesta surge enseguida: un array tiene un tamaño fijo
desde su declaración. Sin embargo, trabajando con punteros, nuestro array podrá tener
el tamaño que nosotros queramos durante el programa, y podemos incluso variarlo en
función de otros datos del programa.
Por supuesto, esta ventaja tiene un precio (aunque muy bajo) que no debemos olvidar.
Debemos apuntar en algún sitio (variable, constante) cuánto espacio hemos pedido y en
otro cuánto de ese espacio hemos aprovechado. Como al programar no conoceremos el
espacio aprovechado del array, deberemos hacer una de estas dos cosas:
apuntar en otra variable el tamaño ocupado del array.
hacer que el último elemento del array sea diferente, un dato que no nos puedan
introducir, por ejemplo, un número negativo o una letra cuando hablamos de
números de teléfono.
Llegados a este punto puedes estar preguntándote: ¿qué valor tienen los elementos de un
array recien declarado? La respuesta es tan simple como decepcionante: no lo sabes.
Los elementos de un array recién declarado tomarán valores no determinados.
Consejo: Siempre que declares un array asegúrate que inicializas los
elementos a un valor conocido antes de operar con ellos.
Estructuras
DEFINICIÓN: Estructura: Una estructura (struct) es un tipo de datos compuesto que
agrupa un conjunto de tipos de datos (no necesariamente iguales) en un único tipo.
/* DNI */
char DNI[20];
/* Nombre de la persona */
char nombre[50];
Sin embargo hay algo que no “encaja” demasiado bien dentro de esta aproximación.
Esta claro que, aunque tengamos tres variables independientes, las tres se refieren a
distintos aspectos de información acerca de una misma persona, lo cual no queda
reflejado en el código del programa, pudiendo llevar a errores o malentendidos3.5.
Adoptamos los siguientes cambios:
/* Edad de la persona */
int persona_edad;
/* DNI */
char persona_DNI[20];
/* Nombre de la persona */
char persona_nombre[50];
Claro está, los cambios realizados no influyen para nada en el funcionamiento del
programa. Sin embargo mejoran la legibilidad del código, algo muy importante, sobre
todo cuando estamos tratando con programas de más de unas pocas líneas de código.
Prof. Felipe Hernández Mora
Aún así no estamos totalmente convencidos del resultado; esta claro que ahora queda
patente que las tres variables se refieren a distintos aspectos de una misma unidad de
información. Sin embargo todavía sigue siendo “engorroso” manipular los datos de una
persona, sobre todo cuando hay que pasar dichos datos a una función, ya que tendremos
que pasar tres nombres de variable a la función, aún tratándose de una misma persona.
Nos gustaría “agrupar” estos datos, de igual forma que agrupamos todos los apuntes de
una asignatura en una misma carpeta. Las estructuras nos permiten hacer precisamente
esto.
Notas al pie
... malentendidos3.5
Recordemos que la mayoría de los programas que escribamos serán leidos por al
menos otra persona, la cual no tiene por qué estar familiarizada con nuestro estilo de
programación
Ejemplo
Retomando el ejemplo de nuestro gestor de miembros de asociaciones universitarias,
podemos reescribir el código de la siguiente forma:
struct Persona {
/* Edad de la persona */
int edad;
/* DNI */
char DNI[20];
/* Nombre */
char nombre[20];
};
EJEMPLOS DE ESTRUCTURAS
#include<stdio.h>
Prof. Felipe Hernández Mora
#include<conio.h>
struct datos{
char nombre[9];
char apellido[15];
char telefono[9];
int edad;
};
void main()
{
clrscr();
struct datos usuario;
/* Ingreso de datos en la estructura */
gotoxy(10,8);printf(“Ingrese su nombre: “);
scanf(“%s”,&[Link]);
gotoxy(10,9);printf(“Ingrese su apellido: “);
scanf(“%s”,&[Link]);
gotoxy(10,10);printf(“Ingrese su telefono: “);
scanf(“%s”,&[Link]);
gotoxy(10,11);printf(“Ingrese su edad: “);
scanf(“%i”,&[Link]);
/* Presentacion de los datos ingresados */
gotoxy(50,8);printf(“Su nombre es: %s”,[Link]);
gotoxy(50,9);printf(“Su apellido es: %s”,[Link]);
gotoxy(50,10);printf(“Su telefono es: %s”,[Link]);
gotoxy(50,11);printf(“Su edad es: %i”,[Link]);
getch();
}
ARCHIVOS
fopen
FILE *fopen(const char *nombre_fichero, const char *modo);
Abre el fichero de nombre “nombre_fichero”, lo asocia con un flujo de datos y devuelve
un puntero al mismo. Si falla la llamada, devuelve un puntero nulo. Algunos de los
caracteres iniciales de “modo” son:
“r”, para abrir un fichero de texto existente para su lectura
“w”, para crear un fichero de texto o abrir y truncar uno existente, para su escritura
“a”, para crear un fichero de texto o abrir uno existente, para su escritura. El
indicador de posición se coloca al final del fichero antes de cada escritura
“r+”, para abrir un fichero de texto existente para su lectura y escritura
Ejemplo
Prof. Felipe Hernández Mora
1libstd/ejemplo_abre_fichero.c
fclose
int fclose(FILE *flujo);
Cierra el fichero asociado con “flujo”. Devuelve 0 en caso de éxito y EOF (end of file)
en caso contrario.
Ejemplo
1libstd/ejemplo_cierra_fichero.c
fwrite
size_t fwrite(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fwrite permite escribir c elementos de longitud n bytes almacenados en el
buffer apuntado por “flujo”.
Ejemplo
1libstd/ejemplo_fwrite.c
fread
size_t fread(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fread permite leer c elementos de longitud n bytes del fichero apuntado por
“flujo” y los almacena en el buffer especificado.
Ejemplo
1libstd/ejemplo_fread.c
Prof. Felipe Hernández Mora
fgetc
int fgetc(FILE *flujo);
Lee el siguiente carácter por “flujo”, avanza el indicador de posición y devuelve int.
Devuelve EOF si pone a 1 el indicador de fin de fichero o el de error.
fgets
char *fgets(char *s, int n, FILE *flujo);
Lee caracteres por “flujo” y los almacena en elementos sucesivos del “array” que
comienza en “s”, continuando hasta que almacene “n-1” caracteres, almacene un
carácter del nueva línea o ponga a 1 los indicadores de error o de fin de fichero. Si
almacena un carácter, concluye almacenando un carácter nulo en el siguiente elemento
del “array”. Devuelve “s” si almacena algún carácter y no ha puesto a 1 el indicador de
error; en caso contrario devuelve un puntero nulo.
fputc
int fputc(int c, FILE *flujo);
Escribe el carácter c por “flujo”, avanza el indicador de posición del fichero y devuelve
int c . En caso de error devuelve EOF.
fputs
int fputs(const char *s, FILE *flujo);
Escribe los caracteres de la cadena s por “flujo”. No escribe el carácter nulo de
terminación. En caso de éxito, devuelve un valor no negativo; en caso de error devuelve
EOF.
fscanf
int fscanf(FILE *flujo, const char *formato, ...);
Lee texto y convierte a la representación interna según el formato especificado en
formato. Devuelve el número de entradas emparejadas y asignadas, o EOF si no se
almacenan valores antes de que se active el indicador de error o de fin de fichero.
fprintf
int fprintf(FILE *flujo, const char *formato, ...);
Genera texto formateado, bajo el control de formato formato y escribe los caracteres
generados por flujo. Devuelve el número de caracteres generados o un valor negativo
en caso de error.
A modo de resumen estas son las especificaciones de formato más comunes:
Prof. Felipe Hernández Mora
Talleres de Programaciòn
Miscelaneos desde 28 al 45
1.- En un local de electrodomésticos, su dueño decide aplicar un descuento de acuerdo a
la marca que el cliente adquiere de acuerdo a la siguiente tabla.
Marca Descuento
Panasonic 10%
Sony 15%
LG 20%
Samsung 12%
Calcular subtotal tomando en cuenta la cantidad del producto y el neto a pagar
considerando el IVA.
5.- Realizar un marco y utilizando for hacer que cambie continuamente de color.
9.- Ingresar el valor de un lado y de acuerdo a ese dato dibujar un cuadrado usando for.
10.- Ingresar los promedios de un alumno de 8voa 5to curso, determinar: si el promedio
es mayor a 19.50, el alumno obtiene una beca total, si el promedio es menor a 19.50 y
mayor a 17.50, el alumno obtiene media beca, si tiene menos promedio, se presentara un
mensaje indicando que puede mejorar.
13.- En una tienda local se obsequia algo por cada compra. Si el comprador es un niño
(hasta 12 años), se le obsequia un caramelo, si es adolescente (hasta 17 años), se le
obsequia un snack, y si es mayor un llavero.
15.- Se requiere plantar tulipanes en un jardín que mide 350m2. Si cada tulipán ocupa un
espacio de 1m. ¿Cuántos tulipanes caben en el jardín?
16.- En una distribuidora se están entregando libros para los diferentes locales, hay
12500 libros, y en cada caja caben 80 libros. Determinar cuantas cajas se van a crear y
con la siguiente tabla calcular:
Librería No. Libros
Científica 2580
Juanito 1700
Don Pepe 940
La esquina 3200
Mi primer Libro 4080
De acuerdo a la cantidad de libros pedidos en cada librería si lleva más de 38 cajas se le
hará un descuento del 10%. Calcular el valor que tiene que pagar cada librería si cada
caja cuesta $25.
18.- Ingresar los promedios de los 3 trimestres del alumno y determinar si el alumno
paso de año (promedio desde 16.50), se queda supletorio (promedio desde 14.50), o se
queda de año (menos de 14.50). Elaborar un marco.
20.- En una tienda de computación se aplica un descuento especial a las personas que
compran al contado (20% descuento), y a las personas que hacen una compra por más
de $500 (15%). Si la compra es a crédito no se hace ningún descuento, tampoco si
compra menos de $500. Calcular el subtotal considerando el IVA.
If.-
Ingresar por teclado 2 números y presentar por pantalla si son iguales o diferentes.
Ingresar por teclado la cantidad de horas ,el valor que se le paga por hora. Calcular
el sueldo del obrero y presentarlo por pantalla. Si el sueldo es mayor a 200 dolares
presentar el mensaje “ Se gamo una semana de vacaciones”
Utilizando los operadores lógicos, presentar por pantalla si es un triangulo
equilátero, isósceles o escaleno.
Ingresar por teclado las calificaciones de los tres parciales y el examen de un
alumno, calcular el promedio, presentarlo por pantalla y si este es menor a 13
presentar el mensaje “insuficiente”
Ingresar por teclado 3 numero y presentar por pantalla el numero mayor, menor e
intermedio.
For .-
Presentar por pantalla los 10 primeros números naturales.
Presentar por pantalla la suma de los 5 primeros números naturales.
Prof. Felipe Hernández Mora
TALLERES DESDE EL 45 AL 57
Procedimientos y Arreglos.-
Menu de Presentacion
1) Forma Vertical
2) Forman Horizontal
3) Forma de Escalera
4) Salida
BIBLIOGRAFIA
TITULO AUTOR
DISEÑO DE ALGORITMO MASTER [Link]
Colaboración de todos los estudiantes del año anterior en los talleres. En la elaboración de los programas
del cual les doy mis agradecimientos y mi cariño.
Dios los Bendiga.