Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

04 Elementos y Est Decision 8477 New

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 57

Fundamentos de Programación

Elementos del Lenguaje C

DECLARACIÓN DE CONSTANTES SIMBÓLICAS

Declarar una constante simbólica significa decirle al compilador C el nombre de


la constante y su valor. Esto se hace generalmente antes de la función main
utilizando la directriz #define, cuya sintaxis es así:

#define NOMBRE VALOR

El siguiente ejemplo declara la constante real PI con el valor 3.14159, la


constante de un solo carácter NL con el valor '\n' y la constante de caracteres
MENSAJE con el valor "Pulse una tecla para continuar\n".

#define PI 3.14159
#define NL '\n'
#define MENSAJE "Pulse una tecla para continuar\n"

Observe que no hay un punto y coma después de la declaración. Esto es así,


porque una directriz no es una sentencia C, sino una orden para el
preprocesador.

El tipo de una constante es el tipo del valor asignado. Suele ser habitual escribir
el nombre de una constante en mayúsculas.

Constantes en lenguaje C

C y algunos compiladores C++ admiten una forma adicional de declarar una


constante; anteponer el calificador const al nombre de la constante. Utilizando
el calificador const se le dice al compilador C el tipo de la constante, su nombre
y su valor. Por ejemplo:
const int K = 12;

El ejemplo anterior declara la constante entera K con el valor 12. Una vez que
se haya declarado un objeto constante no se le puede asignar un valor. Por ello,
al declararlo debe ser inicializado. Por ejemplo, como K ha sido declarado como
constante, las siguientes sentencias darían lugar a un error:

Fundamentos de Programación | Ing. Patricio Vinueza


K = 100; /*error*/
K++; /*error*/
K = K +1;

K = K +1;
K++; ++K;

K=K-1;
K--; --K;

== es un operador logíco de igualdad el resultado es una verdad o


falso
Ej. 5 == 8 resultado Falso
= es un operador de asignación
K=8;
K = K+1;
K++;

K=K+5;
K+=5;

K = K-10;
K-=10;

K = K*6;
K*=6

K = K/5;
K /=5;

K = K%2;
K %=2;

K += N-1;
K = K + (N-1);

Fundamentos de Programación | Ing. Patricio Vinueza


M *=3;
M = M*3;

R += K-6*M;
R = R+(K-6*M);

¿Por qué utilizar constantes?

Utilizando constantes es más fácil modificar un programa. Por ejemplo,


supongamos que el programa utiliza una constante de valor 100, veinte veces.
Si hemos declarado una constante K = 100 y posteriormente necesitamos
cambiar el valor de la constante a 120, tendremos que modificar una sola línea,
la que declara la constante. En cambio, si no hemos declarado K, sino que hemos
utilizado el valor 100 directamente veinte veces, tendríamos que hacer veinte
cambios.

DECLARACIÓN DE UNA VARIABLE

El valor de una variable, a diferencia de una constante, puede cambiar a lo largo


de la ejecución de un programa. Cada variable de un programa, debe declararse
antes de ser utilizada.

La declaración de una variable consiste en enunciar el nombre de la misma y


asociarle un tipo. El tipo determina los valores que puede tomar la variable así
como las operaciones que con ella pueden realizarse.

La sintaxis correspondiente a la declaración de una variable es la siguiente:


tipo identificador[, identificador];

donde tipo especifica el tipo fundamental o derivado de la variable (char, ínt,


float, double, ... ) e identificador indica el nombre de la variable. Por ejemplo,

Fundamentos de Programación | Ing. Patricio Vinueza


int contador;
int main ()
{
int dia, mes, anyo;
float suma, precio;
// ...
}

El ejemplo anterior declara cuatro variables de tipo int y dos variables de tipo
float. Observe que hay dos lugares donde se puede realizar la declaración de
una variable: fuera de todo bloque, entendiendo por bloque un conjunto de
sentencias encerradas entre el carácter ' {' y el carácter '} ', y dentro de un
bloque de sentencias, al principio del mismo en ANSI C y en cualquier parte en
caso de C++.

En nuestro ejemplo, se ha declarado la variable contador antes de la función


main, fuera de todo bloque, y las variables día, mes, anyo, suma y precio dentro
del cuerpo de la función, dentro de un bloque de sentencias.

Una variable declarada fuera de todo bloque es por defecto global y es accesible
en el resto del fichero fuente en el que está declarada. Por el contrario, una
variable declarada dentro de un bloque, es por defecto local y es accesible
solamente dentro de éste. Para comprender esto, piense que generalmente en
un programa habrá más de un bloque de sentencias. No obstante, esto lo
veremos con más detalle mas adelante.

Según lo expuesto, la variable contador es global y las variables día, mes, anyo,
suma y precio son locales.

Inicialización de una variable

Si queremos que algunas o todas las variables que intervienen en un programa


tengan un valor inicial cuando éste comience a ejecutarse, tendremos que
inicializar dichas variables. Una variable puede ser inicializada, cuando se declara
o, si está declarada dentro de un bloque, a continuación de ser declarada. A
diferencia de las constantes, este valor puede cambiarse a lo largo de la
ejecución del programa. Por ejemplo,

Fundamentos de Programación | Ing. Patricio Vinueza


int contador= 1;
int main()
{
int dia = 20, mes= 9, anyo = 1995;
float suma= 0, precio;
precio= 100;
/ / ...
}

No hay ninguna razón para no inicializar una variable. Tiene que saber que el
compilador C inicializa automáticamente las variables globales a cero, pero no
hace lo mismo con las variables locales. Las variables locales no son inicializadas
por el compilador por lo que tendrán un valor, para nosotros, indefinido; se dice
entonces que contienen basura (un valor que en principio no sirve).

EXPRESIONES NUMÉRICAS

Una expresión es una secuencia de operadores y operandos que especifican una


operación determinada. Por ejemplo,
a++
suma+= c
cantidad* precio
7 * sqrt(a) - b / 2 (sqrt indica raíz cuadrada)

OPERADORES

Los operadores son símbolos que indican como son manipulados los datos. Se
pueden clasificar en los siguientes grupos: aritméticos, lógicos, relacionales,
unitarios, lógicos para manejo de bits, de asignación, operador condicional y
otros.

Operadores aritméticos

Los operadores aritméticos los utilizamos para realizar operaciones matemáticas


y son los siguientes:
Operador Operación
+ Suma. Los operandos pueden ser enteros o reales
- Resta. Los operandos pueden ser enteros o reales
* Multiplicación. Los operandos pueden ser enteros o reales

Fundamentos de Programación | Ing. Patricio Vinueza


/ División. Los operandos pueden ser enteros o reales. Si ambos
operandos son enteros el resultado es entero. En el resto de los
casos el resultado es real
% Módulo o resto de una división entera. Los operandos tienen que
ser enteros

El siguiente ejemplo muestra como utilizar estos operadores. Como ya hemos


venido diciendo, observe que primero se declaran las variables y después se
realizan las operaciones deseadas con ellas.

int main()
{
int a= 10, b = 3, c;
float x = 2.0, y;
y = x + a; /* el resultado es 12.0 de tipo float */
c = a / b; /* el resultado es 3 de tipo int */
c = a % b; /* el resultado es 1 de tipo int */
y = a / b; /* el resultado es 3 de tipo int. Se convierte a float
para asignarlo a y */
c = x / y; /* el resultado es 0.666667 de tipo float. Se convierte
a int para asignarlo a c (c=0)*/
}

Cuando en una operación aritmética los operandos son de diferentes tipos,


ambos son convertidos al tipo del operando de precisión más alta; por ejemplo,
para realizar la suma x+a el valor del entero a es convertido a float, tipo de x.
No se modifica a, sino que su valor es convertido a float sólo para realizar la
suma.

El resultado obtenido en una operación aritmética es convertido al tipo de la


variable que almacena dicho resultado. Por ejemplo, del resultado de x/y sólo la
parte entera es asignada a c, ya que c es de tipo int. Esto indica que los reales
son convertidos a enteros, truncando la parte fraccionaria.

Un resultado real es redondeado. Observe la operación x/y para x igual a 2 e y


igual a 3. El resultado es 0.666667 en lugar de 0.666666 porque la primera cifra
decimal suprimida es 6. Cuando la primera cifra decimal suprimida es 5 o mayor
de 5, la última cifra decimal conservada se incrementa en una unidad

Fundamentos de Programación | Ing. Patricio Vinueza


PRIORIDAD Y ORDEN DE EVALUACIÓN (JERARQUIA DE OPERADORES)

La tabla que se presenta a continuación, resume las reglas de prioridad y asociati


vidad de todos los operadores. Los operadores escritos sobre una misma línea
tienen la misma prioridad. Las líneas se han colocado de mayor a menor
prioridad.

Una expresión entre paréntesis, siempre se evalúa primero. Los paréntesis


tienen mayor prioridad y son evaluados de más internos a más externos.

Operador Asociatividad
( ) [ ] . -> sizeof izquierda a derecha
~ ! *(indireccion) & ++ -- (tipo) derecha a izquierda
*/% izquierda a derecha
+- izquierda a derecha
<< >> izquierda a derecha
< <= > >= izquierda a derecha
== != izquierda a derecha
& izquierda a derecha
^ izquierda a derecha
| izquierda a derecha
&& izquierda a derecha
|| izquierda a derecha
?: derecha a izquierda
= *= /= %= += -= derecha a izquierda
<<= >>= &= |= ^=
, izquierda a derecha

En el siguiente ejemplo, primero se asigna z a y y a continuación y a x. Esto


es así porque la asociatividad para este operador es de derecha a izquierda.
int main ()
{
int x= 0, y= 0, z = 15; //int x=y=z=0; esto es un error
x =y= z; /* resultado x =y= z = 15 */
}

Fundamentos de Programación | Ing. Patricio Vinueza


Operadores de comparacion
En pseudocódigo En Lenguaje C
> >
< <
>= >=
<= <=
<> ¡=
= ==
Conectores Logicos
Y &&
O || pipe
NO ¡

Hasta aquí Elementos de Lenguaje C, continuará ………..

Explicación

Variables
Fundamentales
Enteros:
Reales:
Otros: void
Derivados
Cadenas de Caracteres

Operaciones matemáticas
Suma
Resta
Multiplicacion
División
Residuo
a b
int a,b,s;
5 3
a = 5;
b = 3.1416;
s

Fundamentos de Programación | Ing. Patricio Vinueza


s = 3.9 + 8.4
s = a/b; 12

una computadora solo puede operar con dos valores del mismo tipo
entero + entero
real + real

entero + real esta operación no la puede hacer directamente

real + real

5 + 9.16

5.0 + 9.16
Real

S = 5 + 9.16
5.0 + 9.16
S = 14.16

Jerarquia de tipos de Datos


Long double
Double
Float
Long
Short
Int
Char

S= ‘A’ + 15
Char + int

Int + int
65 + 15
80

Fundamentos de Programación | Ing. Patricio Vinueza


float M;
M = ‘a’ + 7 + 3.14
Char + int + float
Int + int

Int
104

104.0

107.14
float

c
char c;
‘b’
c = ‘B’ + 32.45
char + float
66 + 32.45
66.0 + 32.45
98.45 float
98

Estructuras Algoritmicas

Secuenciales o simples
Entrada
Salida
Asignación
Decisión o selección
simple o incompleta
doble o completa
Multiple

Fundamentos de Programación | Ing. Patricio Vinueza


Repeticion o ciclicas
Mientras
Hacer mientras
Para

Simples o secuenciales
Entrada --- scanf() leer
Salida --- printf() escribir
Asignación ---- = = Ejm  suma = a+b
Decisión
simple o incompleta
dobles o completas
multiples

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Estructuras Algorítmicas Secuenciales básicas

Una estructura se define como un esquema que nos permite representar una
idea de manera más simplificada, además de restringir un poco la lógica
algorítmica. Por ejemplo cada persona puede tener su propia manera de hacer
un pastel, por esta razón es que una estructura puede restringir a que sólo se
realice de ciertas formas convenientes. Existen tres estructuras básicas del
razonamiento en las que nos basamos para realizar una acción o varias acciones:

Todos los días mientras realizamos nuestras actividades planeamos, consciente


o inconscientemente, lo que vamos a hacer y decidimos un orden para que se
realicen las actividades. Para preparar un pastel, por ejemplo, tenemos que
hacerlo paso por paso siguiendo la secuencia de la receta para prepararlo. En
otras palabras la secuencia nos indica el orden de ejecución.

Para escribir una secuencia de acciones lo único que tiene que hacer es escribir
una instrucción después de otra, de manera que se entienda la secuencia y el
orden de ejecución. Por ejemplo, si deseáramos hacer una secuencia que nos

Fundamentos de Programación | Ing. Patricio Vinueza


permita observar a través de una ventana abierta, el algoritmo sería:

Algoritmo para observar a través de una ventana abierta.


Inicio
1. Ubicar la ventana por la que deseamos observar.
2. Dirigirnos hacia la ventana que escogimos.
3. Acercarnos lo suficiente para observar a través de ella.
4. Observar a través de la ventana abierta.
Fin

Notará que para utilizar una estructura de secuencia sólo tenemos que indicar
en qué orden se ejecutará cada paso y lo que se tiene que hacer.

Ejemplo de un algoritmo para sumar dos numeros

Algoritmo suma
Inicio
a, b, c : entero //declaracion de variables
Leer a //instrucción de entrada de datos
Leer b
c=a+b //instrucción que realiza la operación suma y asignación
escribir c //instrucción de salida de datos
fin

Leer a ---- significa que va a capturar un valor desde el teclado y lo almacenara


en la variable a
escribir c ---- significa que mostrara el valor de la variable c en la pantalla

Estructuras algorítmicas condicionales


Segunda estructura: Decisión de acción

Durante la ejecución de una secuencia a menudo se tienen que tomar decisiones,


ya sea para escoger la mejor alternativa o simplemente porque tenemos que
escoger entre dos caminos lógicos dependiendo de alguna variable. La vida
cotidiana está llena de decisiones: tendremos que escoger si el pastel será de
chocolate o preferimos que sea de vainilla, o hay que elegir ropa diferente si
está lloviendo o si hace calor.

Fundamentos de Programación | Ing. Patricio Vinueza


Siempre que se debe tomar una decisión, ésta depende de una condición. La
condición es una expresión lógica que nos permite decidir cuál es el camino a
tomar. Vamos a complementar el ejemplo de la estructura anterior:

Algoritmo para observar a través de una ventana.


Inicio
1. Ubicar la ventana por la que deseamos observar
2. Si nos encontramos sentados entonces
Levantarnos del lugar donde nos encontremos
Si no estamos sentados
Nos orientamos hacia la ventana
Fin si
3. Dirigirnos hacia la ventana que escogimos
4. Acercarnos lo suficiente para observar a través de ella.
5. Si está cerrada entonces
Abrir la ventana
Fin si
6. Observar a través de la ventana abierta.
Fin

Conforme utilize las estructuras de secuencias junto con las estructuras de


decisiones, el algoritmo se aproxima más a la realidad. Observe que en las
estructuras de decisión siempre se debe indicar el camino que se debe tomar
cuando se cumpla la condición, pero no forzosamente tienes que indicar qué
acción tomar en caso de no cumplir la condición.

Estructura condicional completa o doble


Si (explesión lógica) entonces
Instrucciones si la expresión logica es VERDADERA
Sino
Instrucciones si la expresión lógica es FALSA
Finsi

Estructura condicional incompleta o simple


Si (explesión lógica) entonces
Instrucciones si la expresión lógica es VERDADERA
Finsi

Estructuras Algoritmicas Ciclicas


Tercera estructura: Ciclos de acción

Fundamentos de Programación | Ing. Patricio Vinueza


Un ciclo es una estructura que nos permite repetir una o varias acciones.
¿Recuerde el algoritmo para crear un pastel? Tal vez queremos hacer varios
pasteles y tendremos que repetir el mismo procedimiento cierto número de
veces.

Vamos a suponer que usted es un supervisor y cada hora, durante su jornada


de trabajo, tiene que vigilar a través de una ventana. El resto del tiempo debe
permanecer en su lugar de trabajo y sólo cada hora levantarte y observar a
través de la ventana.

Algoritmo para vigilar desde una ventana

Inicio
Llegar puntual a la jornada laboral
Ubicarse en el lugar de trabajo
Mientras no termine la jornada de trabajo
Ubicar la ventana por la que se quiere asomar
Si esta sentado entonces
Levantarse del lugar en donde esta sentado
Orientarse hacia la ventana
Sino
Orientarse hacia la ventana
Fin Si
Dirigirse hacia la ventana
Si está cerrada entonces
Abrir ventana
Fin Si
Observar por la ventana
Regresar al lugar de trabajo
Mientras no haya pasado una hora
Permanecer en el lugar de trabajo
Fin Mientras
Fin Mientras

Analize con detalle los cambios en nuestro algoritmo:

 La palabra Mientras establece una condición que determina el número


de veces que se repite un conjunto de acciones.
 El ciclo debe tener algún tipo de finalizador que detenga la repetición de
acciones.
 El uso de sangrías le ayuda a identificar mejor cada una de las condiciones
y los ciclos.
 Cada bloque de instrucciones dentro de una condición o un ciclo debe
indicar el inicio y fin.

Fundamentos de Programación | Ing. Patricio Vinueza


Fundamentos de Programación | Ing. Patricio Vinueza
- Asignación
Secuenciales - Entrada
- Salida

- Simples o Incompleta
Estructuras
Condicionales - Dobles o completa
Algorítmicas - Múltiples

- Para
Cíclicas - Mientras
- Hacer Mientras

VAMOS A VER EN PROFUNDIDAD CADA ESTRUCTURA


Estructura Selectiva o de Decisión Simple, Doble y en Cascada

Introducción
Muchas veces tenemos que decidir y realizar una u otra tarea dependiendo de
una condición, en la programación existe una estructura que permite evaluar
una condición (condición o expresión lógica que devuelve verdadero o falso) y
determina que instrucción o instrucciones se debe ejecutar si la condición es
verdadera o si la condición es falsa.

Ahora usted aprenderá a resolver problemas que permitan evaluar condiciones


lógicas, esta es una de las estructuras básicas y la más utilizada en todo lenguaje
de programación.

A estas estructuras también se las conoce como estructura condicional,


alternativas y de decisiones.

Estructura Selectiva simple

Evalúa una expresión lógica (condición), si es verdadero ejecuta una


determinada instrucción o instrucciones.

Fundamentos de Programación | Ing. Patricio Vinueza


Diagrama de Flujo Pseudocódigo
Si Exp. Lógica Entonces
Instruccion 1
Instruccion n
Fin Si

Sintaxis en Lenguaje C
//Una instrucción
if (Exp. Lógica)
Instruccion 1;

//Varias instrucciones
if (Exp. Lógica.)
{
Instruccion 1;
Instruccion n;
}

Fundamentos de Programación | Ing. Patricio Vinueza


Ejemplo
Ingresar un numero entre el 1 y el 10, si el valor ingresado es mayor o igual a
7 indicar el mensaje de APROBADO de lo contrario escriba NO APROBADO

Pseudocódigo
Programa de aprobación
Inicio
Entero: n
Escribir “Ingrese un numero: “
Leer n
Si n>=7 entonces
Escribir “APROBADO”
Finsi
Si n<7 entonces
Escribir “NO APROBADO”
Finsi
Fin
Codificacion
//Programa de aprobación
#include <stdio.h>
int main()
{
int n;
printf("Ingrese un numero: ");
scanf("%d",&n);
if (n>=7 )
{
printf("APROBADO");
}
if (n<7 )
{
printf("NO APROBADO");
}
}

Fundamentos de Programación | Ing. Patricio Vinueza


Programa de aprobación
Inicio
Entero: n
Escribir “Ingrese un numero: “
Leer n
Si n>=7 entonces
Escribir “APROBADO”
Sino
Escribir “NO APROBADO”
Finsi
Fin

Codificacion
//Programa de aprobación
#include <stdio.h>
int main()
{
int n;
printf("Ingrese un numero: ");
scanf("%d",&n);
if (n>=7 )
printf("APROBADO");
else
printf("NO APROBADO");
}

Fundamentos de Programación | Ing. Patricio Vinueza


Estructura Selectiva doble
Evalúa una expresión lógica (condición), si es verdadero ejecuta una o varias
instrucciones y si es falso ejecuta otro grupo de instrucciones.

Diagrama de Flujo Pseudocódigo


Si Exp. Lógica Entonces
Instruccion 1
Instruccion n
Si no
Instruccion 1
Instruccion n
Fin Si

Sintaxis en Lenguaje C
if (Exp Lógica)
{
Instruccion 1;
Instruccion n;
}
else
{
Instruccion 1;
Instruccion n;
}

Fundamentos de Programación | Ing. Patricio Vinueza


Estructuras anidadas
Son aquellas estructuras que contienen una o más estructuras, es decir esta
permitido colocar dentro de una estructura otra estructura.

Diagrama de Flujo

Pseudocódigo

Si Exp. Lógica Entonces


Si Exp. Lógica Entonces
Instruccion 1
Instruccion n
Fin Si
SiNo
Si Exp. Lógica Entonces
Instruccion 1
Instruccion n
SiNo
Instruccion 1
Instruccion n
Fin Si
Fin Si

Fundamentos de Programación | Ing. Patricio Vinueza


Sintaxis en Lenguaje C
if (Condicion)
{
if (Condicion) {
Instruccion 1;
Instruccion n;
}
}
else
{
if (Condicion)
{
Instruccion 1;
Instruccion n;
}
else
{
Instruccion 1;
Instruccion n;
}
}

Ejemplo
Enunciado: Dado dos números enteros diferentes, devolver el número Mayor
Análisis: Para la solución de este problema, se requiere que el usuario ingrese
dos números enteros diferentes y el sistema realice el proceso para devolver el
número mayor.
Expresión:
Si n1 > n2 ------ n1 es Mayor
Si n2 > n1 ------ n2 es Mayor

Entrada: Salida:
• Dos numeros enteros n1,n2 • número mayor.

Fundamentos de Programación | Ing. Patricio Vinueza


Diseño:
Interfaz de Usuario
Ingrese el primer numero: 8
Ingrese el segundo numero: 5

El mayor entre el 8 y el 5 es el 8

Algoritmo: Diagrama de flujo

Fundamentos de Programación | Ing. Patricio Vinueza


Pseudocódigo:

Programa que busca el mayor entre dos numeros enteros


Inicio
Entero: n1,n2, Mayor;
Escribir “Ingrese el primer numero:”
Leer n1
Escribir “Ingrese el segundo numero:”
Leer n2
Si n1>n2 entonces
Mayor = n1
Finsi
Si n2>n1 entonces
Mayor = n2
Finsi
Escribir “El mayor entre el “, n1, “ y el “, n2, “ es el”, Mayor
Fin

Codificación
//Programa que busca el mayor entre dos numeros enteros
#include <stdio.h>
int main()
{
int n1,n2, Mayor;
printf("Ingrese el primer numero:");
scanf("%d",&n1);
printf("Ingrese el segundo numero:");
scanf("%d",&n2);
if (n1>n2)
{
Mayor=n1;
}
if (n2>n1)
{
Mayor=n2;
}
printf("El mayor entre el %d y el %d es el %d",n1,n2,Mayor);
}

Fundamentos de Programación | Ing. Patricio Vinueza


En lenguaje C
Falso es el 0
Verdadero es todo diferente de 0 el resultado de un expresion me
da 1

Explicacion
8 6 1
n1 > n2 > n3
1 > 1
0

7 8 10
n1 > n2 > n3
0 > 10
0

8 6 8 1 n1 Y(logico) n2
n1>n2 && n1>n3 1 1 1
1 1 0 0 1
1 1 0 0
0 0 0

Ejemplo de programa que busca el mayor de 3 numeros


//Programa que busca el mayor entre tress numeros enteros
#include <stdio.h>
int main()
{
int n1,n2,n3,Mayor=1000;
printf("Ingrese el primer numero:");
scanf("%d",&n1);
printf("Ingrese el segundo numero:");
scanf("%d",&n2);
printf("Ingrese el tercer numero:");
scanf("%d",&n3);
//n1 n2 n3

Fundamentos de Programación | Ing. Patricio Vinueza


if (n1>n2 ) // 7 8 9
if(n1>n3)
Mayor=n1;
else
if (n3>n1)
Mayor = n3;
else
Mayor = n1;
else
if (n2>n3)
Mayor = n2;
else
Mayor = n3;
printf("el valor de mayor %d",Mayor);

//Programa que busca el mayor entre tress numeros enteros


#include <stdio.h>
int main()
{
int n1,n2,n3,Mayor=1000;
printf("Ingrese el primer numero:");
scanf("%d",&n1);
printf("Ingrese el segundo numero:");
scanf("%d",&n2);
printf("Ingrese el tercer numero:");
scanf("%d",&n3);
//n1 n2 n3
if (n1>n2 && n1>n3)
Mayor=n1;
if (n2>n1 && n2>n3)
Mayor=n2;
if (n3>n1 && n3>n2)
Mayor=n3;
printf("el valor de mayor %d",Mayor);

Fundamentos de Programación | Ing. Patricio Vinueza


Toda pregunta tiene una respuesta
O es verdadero o es falso

Expresion logica
Operadores logicos pseudocodigo lenguaje C
Mayor > >
Menor < <
Mayor o igual >= >=
Menor o igual <= <=
Igualdad = ==
Diferente <> !=
Conectores lógicos
Y lógico (AND) (v) y &&
O lógico (OR) (^) o ||
NO lógico (NOT) (¬) no !

Estructura de Decisión especial Múltiple

Sabes que en la actualidad tienes muchos bancos financieros que ofrecen


préstamos con condiciones diferentes, usted al solicitar un préstamo, tiene que
evaluar diversas alternativas y decidir por una de ellas.

En los lenguajes de programación se cuenta con una implementación similar,


llamada estructura decisión especial múltiple que permite evaluar varias
alternativas y realizar el proceso si cumple con la condición elegida.

Muchas veces para solucionar este tipo de problemas se utiliza estructuras


selectivas dobles anidadas (en cascada), dando una solución muy complicada y
confusa para analizar, es recomendable que cuando se tenga que evaluar varias
alternativas se utilice estructuras selectiva especial múltiples por ser la más
legible, eficiente y fácil de interpretar

Esta estructura permite comparar un valor con diversas alternativas, si la


comparación tiene éxito se ejecuta el grupo de instrucción que contenga la
alternativa seleccionada y luego sale de la estructura.

Fundamentos de Programación | Ing. Patricio Vinueza


Muchas se pueden implementar en forma opcional una alternativa por defecto,
es decir al comparar con todas las alternativas propuestas no se tiene éxito con
ninguna, entonces se ejecuta la alternativa por defecto.

En diagrama de flujo sin el caso En Pseudocódigo sin el caso por


por defecto defecto
En Caso que <Exp. > Sea
Caso Valor1
<Instrucciones>
Caso Valor2
<Instrucciones>
Caso Valor3
<Instrucciones>
Fin Caso

Fundamentos de Programación | Ing. Patricio Vinueza


En diagrama de flujo CON caso por En Pseudocódigo CON caso por
defecto defecto
En Caso que <Exp.> Sea
Caso Valor1
<Instrucciones>
Caso Valor2
<Instrucciones>
Si no
<Instrucciones>
Fin Caso

En lenguaje C, estas estructuras se les conoce como SENTENCIA switch

SENTENCIA switch

La sentencia switch permite ejecutar una de varias acciones, en función del valor
de una expresión. Es una sentencia especial para decisiones múltiples. La
sintaxis para utilizar esta sentencia es:
switch (expresión)
{
[declaraciones]
case expresión-constante 1:
[ sentencia 1; ]
[case expresión-constante 2:]
[ sentencia 2;]
[case expresión-constante 3:]

Fundamentos de Programación | Ing. Patricio Vinueza


[ sentencia 3;]
[default:]
[ sentencia n;]
}

donde expresión es una expresión entera y expresión-constante es una


constante .entera, una constante de un solo carácter o una expresión constante,
en cuyo caso, el valor resultante tiene que ser entero. Por último, sentencia es
una sentencia simple o compuesta.

La sentencia switch evalúa la expresión entre paréntesis y compara su valor con


las constantes de cada case. La ejecución de las sentencias del bloque de la
sentencia switch, comienza en el case cuya constante coincida con el valor de
la expresión y continúa hasta el final del bloque o hasta una sentencia que
transfiera el control fuera del bloque de switch; por ejemplo, break o return.
La sentencia switch puede incluir cualquier número de cláusulas case.

Si no existe una constante igual al valor de la expresión, entonces se ejecutan


las sentencias que están a continuación de default, si esta cláusula ha sido
especificada. La cláusula default puede colocarse en cualquier parte del bloque
y no necesariamente al final.

Igual que en cualquier otro bloque, en el bloque de la sentencia switch es posible


hacer declaraciones al principio. No obstante, las inicializaciones si las hubiere,
son ignoradas.

Para ilustrar lo expuesto, vamos a realizar un programa que lea una fecha
representada por dos enteros, mes y año, y dé como resultado los días
correspondientes al mes. Esto es:

Introducir un mes: 5
Introducir un año: 2022

El mes 5 del año 2022 tiene 31 días


xpuesto, vamos a realizar un
programa que lea una fecha re-
Enero, marzo, mayo, presentada por octubre
julio, agosto, dos enteros, mes y tienen 31 dias
y diciembre
año, y dé como resultado los días
Abril, junio, septiembre y noviembre tienen 30 dias
correspon-
Febrero 28 dias o 29 dias depende del año
dientes al mes. Esto es,
Introducir mes (##) y año
(####): 5 1995
El mes 5 del año
Fundamentos 1995 tiene
de Programación | Ing. Patricio Vinueza
31 días
Hay que tener en cuenta que
Febrero puede tener 28 días o 29 si
el año es bi-
siesto. Un año es bisiesto cuando es
Hay que tener en cuenta que Febrero puede tener 28 días o 29 si el año es
bisiesto. Un año es bisiesto cuando es múltiplo de 4 y no de 100 o cuando es
múltiplo de 400. Por ejemplo, el año 2000 por las dos primeras condiciones no
sería bisiesto, pero sí lo es porque es múltiplo de 400; el año 2100 no es bisiesto
porque aunque sea múltiplo de 4, también lo es de 100 y no es múltiplo de 400.

La solución de este problema puede ser de la siguiente forma:

Primero definimos las variables que vamos a utilizar en los cálculos.


unsigned int dd = 0, mm= 0, aa = 0;
A continuación leemos los datos mm y aa.
printf("Introducir mes (##) y año (####): ");
scanf ( "%d %d", &mm, &aa);
Después comparamos el mes mm con las constantes 1, 2, ... , 12. Si mm es 1,
3, 5, 7, 8, 10 o 12 asignamos a dd el valor 31. Si mm es 4, 6, 9 u 11 asignamos
a dd el valor 30. Si mm es 2, verificaremos si el año es bisiesto, en cuyo caso
asignamos a dd el valor 29 y si no es bisiesto, asignamos a dd el valor 28. Si dd
no es ningún valor de los anteriores enviaremos un mensaje al usuario
indicándole que el mes no es válido. Todo este proceso lo realizaremos con una
sentencia switch.

switch (mm)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: dd = 31;
break;
case 4:
case 6:
case 9:
case 11: dd = 30;
break;
case 2: if ((aa % 4 == 0) && ( aa % 100 != 0) || (aa % 400 == 0))
dd = 29;

Fundamentos de Programación | Ing. Patricio Vinueza


else
dd = 28;
break;
default: printf("\nEl mes no es válido\n");
break;
}

Cuando una constante coincida con el valor de mm, se ejecutan las sentencias
especificadas a continuación de la misma, continuando la ejecución del programa
en el siguiente case, a no ser que se tome una acción explícita para abandonar
el bloque de la sentencia switch. Esta es precisamente la función de la sentencia
break.

Por último si el mes es válido, escribimos el resultado solicitado.


if (mm>= 1 && mm<= 12)
printf("\nEl mes %d del año %d tiene %d días\n",mm,aa,dd);

El programa completo se muestra a continuación.

Fundamentos de Programación | Ing. Patricio Vinueza


Introducir un mes: 5
Introducir un año: 2022

El mes 5 del año 2022 tiene 31 días


xpuesto, vamos a realizar un
programa que lea una fecha re-
Pseudocódigo presentada por dos enteros, mes y
Programa que determina
año, y el
dénumero de dias los
como resultado deldías
mes
Inicio correspon-
Entero: mm,aa
dientes al mes. Esto es,
Entero: dd Introducir mes (##) y año
(####):
Escribir “Introducir un5mes:
1995“
El mes 5 del año 1995 tiene
Leer mm 31 días
Escribir “Introducir
Hay queuntener
año:en
“ cuenta que
Leer aa Febrero puede tener 28 días o 29 si
Si mm = 1 entonces
el año es bi-
dd=31 siesto. Un año es bisiesto cuando es
finsi múltiplo de 4 y no de 100 o cuando
Si mm = 2 entonces
es múlti-
Si ((aa mod 4=
plo de 0) Y
400. (aaejemplo,
Por mod 100el<>
año0) ó (aa mod 400 = 0)) entonces
dd=29
2000 por las dos primeras
sino condiciones no sería
dd=28
bisiesto, pero sí lo es porque es
finsi múltiplo de 400; el año 2100 no es
finsi bisiesto porque
Si mm = 3 entonces
aunque sea múltiplo de 4, también
dd=31 lo es de 100 y no es múltiplo de
finsi 400.
Si mm = 4 entonces
La solución de este problema puede
dd=30 ser de la siguiente forma:
finsi El grande es: 27
Si mm = 5 entonces
dd=31
finsi
Si mm = 6 entonces
dd=30
finsi
Si mm = 7 entonces
dd=31

Fundamentos de Programación | Ing. Patricio Vinueza


finsi
Si mm = 8 entonces
dd=31
finsi
Si mm = 9 entonces
dd=30
finsi
Si mm = 10 entonces
dd=31
finsi
Si mm = 11 entonces
dd=30
finsi
Si mm = 12 entonces
dd=31
finsi
Escribir “El mes “,mm,” del año”,aa,” tiene “,dd,” días”
fin

otra forma utilizando estructuras de decisión multiple


Programa que determina el numero de dias del mes
Inicio
Entero: mm,aa
Entero: dd
Escribir “Introducir un mes: “
Leer mm
Escribir “Introducir un año: “
Leer aa
En caso que mm sea
Caso 1
dd=31
Caso 2
Si ((aa mod 4 = 0) Y (aa mod 100 <> 0) ó (aa mod 400 = 0)) entonces
dd=29
sino
dd=28
finsi
Caso 3
dd=31

Fundamentos de Programación | Ing. Patricio Vinueza


Caso 4
dd=30
Caso 5
dd=31
Caso 6
dd=30
Caso 7
dd=31
Caso 8
dd=31
Caso 9
dd=30
Caso 10
dd=31
Caso 11
dd=30
Caso 12
dd=31
fincaso
Escribir “El mes “,mm,” del año”,aa,” tiene “,dd,” días”
fin

Fundamentos de Programación | Ing. Patricio Vinueza


otra forma utilizando estructuras de decisión multiple
Programa que determina el numero de dias del mes
Inicio
Entero: mm,aa
Entero: dd
Escribir “Introducir un mes: “
Leer mm
Escribir “Introducir un año: “
Leer aa
En caso que mm sea
Caso 1
Caso 3
Caso 5
Caso 7
Caso 8
Caso 10
Caso 11
Caso 12
dd=31
Caso 4
Caso 6
Caso 9
Caso 11
dd=30
Caso 2
Si ((aa mod 4 = 0) Y (aa mod 100 <> 0) ó (aa mod 400 = 0)) entonces
dd=29
sino
dd=28
finsi
fincaso
Escribir “El mes “,mm,” del año”,aa,” tiene “,dd,” días”
fin

Codificación
//Programa que determina el numero de dias del mes
//elaborado por Ing. Patricio Vinueza
#include <stdio.h>

Fundamentos de Programación | Ing. Patricio Vinueza


int main()
{
int mm,aa;
int dd;
printf("Introducir un mes: ");
scanf("%d",&mm);
printf("Introducir un año: ");
scanf("%d",&aa);
switch (mm)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: dd=31;
break;
case 4:
case 6:
case 9:
case 11: dd=30;
break;
case 2: if ((aa % 4 == 0) && (aa % 100 != 0) || (aa % 400 == 0))
dd=29;
else
dd=28;
break;
} //fin del switch
printf("El mes %d del año %d tiene %d días",mm,aa,dd);
}

El que las cláusulas case estén una a continuación de otra o una debajo de otra
no es más que una cuestión de estilo, ya que C interpreta cada carácter nueva
línea como un espacio en blanco; esto es, el código al que llega el compilador es
el mismo en cualquier caso.

Fundamentos de Programación | Ing. Patricio Vinueza


La sentencia break que se ha puesto a continuación de la cláusula default no es
necesaria; simplemente obedece a un buen estilo de programación. Así, cuando
tengamos que añadir otro caso ya tenemos puesto break, con lo que hemos
eliminado una posible fuente de errores.

SENTENCIA break

La sentencia break finaliza la ejecución de una sentencia switch, while, do, o


for, en la cual aparece. Su sintaxis es:
break;

Cuando las sentencias switch, while, do, o for estén anidadas, la sentencia break
solamente finaliza la ejecución de la sentencia switch, while, do, o for donde esté
incluida.

Ejemplo 1
Enunciado: Realizar un programa que calcule el importe a pagar por un
vehículo al circular por una autopista. El vehículo puede ser una bicicleta, una
moto, un coche o un camión.
El importe se calculará según los siguientes datos:
• Un importe fijo de 100 unidades para las bicicletas.
• Las motos y los vehículos pagarán 30 unidades por Km.
• Los camiones pagarán 30 unidades por Km. más 25 unidades por
Tonelada.

Análisis: Para la solución de este problema, presentaremos un pequeño menu,


para el usuario seleccione el tipo de vehículo que necesita ser calculado el
importe a pagar, de acuerdo a la selección ingresada calculara el pago
respectivo.

Entrada: Salida:
• una opcion (op) • Valor a pagar (vp)
• kilómetros (km)
• toneladas (ton)

Fundamentos de Programación | Ing. Patricio Vinueza


Diseño de la Interfaz de Usuario

1 – bicicleta
2 – moto
3 – vehículo liviano
4 – camión
Digite la opción deseada: 3

Ingrese los kilómetros: 20


A pagar = 600

Desarrollo en Pseudocódigo:
Programa calculo de pago por uso de autopista
Inicio
Entero: opc, km, ton,vp
Escribir “1. bicicleta”
Escribir “2. moto”
Escribir “3. Vehículo liviano”
Escribir “4. camión”
Escribir “Digite la opción deseada:”
Leer op
En Caso que op Sea
Caso 1
Vp = 100
Caso 2
Caso 3
Leer Km
Vp = 30 * km
Caso 4
Leer Km
Leer Ton
Vp = 30 * km + 25*ton
Si no
Escribir “La opcion que selecciono no es correcta”
Fin Caso
Escribir “A pagar”, vp
Fin

Codificación en Lenguaje C
//Programa que calcula el valor a pagar en el peaje

Fundamentos de Programación | Ing. Patricio Vinueza


//elaborado por Ing. Paticio Vinueza

#include <stdio.h>
int main()
{
int op;
float km, ton, vp;
printf("1 - bicicleta\n");
printf("2 - moto\n");
printf("3 - vehiculo\n");
printf("4 - camion\n");
printf("Digite la opcion deseada:");
scanf("%d",&op);
switch (op)
{
case 1: vp = 100;
break;
case 2:
case 3: printf("\nIngrese los Km a recorrer: ");
scanf("%f",&km);
vp = 30*km;
break;
case 4: printf("\nIngrese los Km a recorrer: ");
scanf("%f",&km);
printf("\nIngrese los Tonelas que lleva: ");
scanf("%f",&ton);
vp = 30*km + 25*ton;
break;
}//fin switch
printf("\nA pagar = %f",vp);
}//fin programa

Fundamentos de Programación | Ing. Patricio Vinueza


Ejemplo 2
Dado una fecha válida, hallar la fecha del siguiente dia

Análisis: Para la solución de este problema se requiere que el usuario ingrese


el día, mes y año, estos valores deben ser validad para el dia este entre 1 y 31,
el mes debe aceptar entre 1 y 12 y el año se ingresará con cuadro digitos, el
sistema devolvera la fecha del siguiente dia. Si la fecha no es valida enviara un
mensaje de error.

Entradas:
 Día (d)
 Mes (m)
 Año (a)

Salidas:
 Mostrar la fecha siguiente: dd/mm/aaaa

Diseño de la Interzas de usuario

Programa que calcula el siguiente día

Ingrese un día: 31
Ingrese un mes: 1
Ingrese un año:2020

El dia siguiente es: 1/2/2020

Programa que calcula el siguiente día

Ingrese un día: 31
Ingrese un mes: 2
Ingrese un año:2020

La fecha ingresa no es valida

La codificación en Lenguaje C

#include <stdio.h>
#include <locale.h>

int main()
{
setlocale(LC_CTYPE,"Spanish");

Fundamentos de Programación | Ing. Patricio Vinueza


int d,m,a,fechavalida,dmax;
printf("Programa que calcula el día siguiente\n\n");
printf("Ingrese un día: ");
scanf("%d",&d);
printf("Ingrese un mes: ");
scanf("%d",&m);
printf("Ingrese un año: ");
scanf("%d",&a);
fechavalida = 0; //si toma el valor de 0 la fecha no es valida
//si toma el valor de 1 la fecha SI es valida
if ((a>999)&&(a<10000))
{
if ((m>=1)&&(m<=12))
switch (m)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: if ((d>=1)&&(d<=31))
fechavalida = 1;
break;
case 4:
case 6:
case 9:
case 11: if ((d>=1)&&(d<=30))
fechavalida = 1;
break;
case 2: if (a%4==0 &&(!(a%100==0) ||
(a%400==0)))
if ((d>=1)&&(d<=29))
fechavalida = 1;
else
if ((d>=1)&&(d<=28))
fechavalida = 1;
break;
}//fin del switch
}; //fin del if

if (fechavalida == 1)
{
switch (m)
{

Fundamentos de Programación | Ing. Patricio Vinueza


case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: dmax = 31;break;
case 4:
case 6:
case 9:
case 11: dmax = 30;break;
case 2: if (a%4==0 &&(!(a%100==0) ||
(a%400==0)))
dmax = 29;
else
dmax = 28;
break;
}//fin del switch
d = d + 1;
if (d>dmax)
{
d=1;
m = m + 1;
if (m == 13)
{
m = 1;
a = a + 1;
}
}
printf("El dia siguiente es: %d / %d / %d",d,m,a);
}
else
printf("La fecha ingresada no es Válida ...");
}//fin programa

Fundamentos de Programación | Ing. Patricio Vinueza


Tarea 4 Problemas Propuestos de Estructura Selectiva Simple, Doble y
en Cascada
Elabore el algoritmo en pseudocódigo o el diagrama de flujo según se le indique
de cada uno de los siguientes problemas y codifiquelos en DEV C++, Enviar el
archivo de word y los archivos fuentes de los programas empaquetados.

Problema 1
Enunciado: Determinar si un número entero es positivo, negativo o neutro
Análisis: Para la solución de este problema, se requiere que el usuario ingrese
un número entero el sistema verifique si es positivo, negativo o neutro.
Expresión
Si n > 0 es POSITIVO
Si n< 0 es NEGATIVO
Si n = 0 es NEUTRO
Entrada: Salida:
• numero n • resultado:
POSITIVO
NEGATIVO
NEUTRO
Diseño de la Interfaz de Usuario
Ingrese un numero: -5

Resultado: NEGATIVO

Algoritmo: Diagrama de flujo

Fundamentos de Programación | Ing. Patricio Vinueza


Pseudocódigo:

Codificación:

Problema 2

Enunciado: Dado un caracter determinar si es una vocal, considere mayúsculas


y minúsculas

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


un caracter y el sistema verifica si es una vocal.

Entrada: Salida:
Carácter c Resultado:
ES VOCAL
NO ES VOCAL

Diseño de la Interfaz de Usuario


Ingrese un caracter: u

Resultado: ES VOCAL

Algoritmo en Pseudocódigo:
Programa vocales
Inicio
//Variables
Carácter: c
Entero : r

Fundamentos de Programación | Ing. Patricio Vinueza


//Entrada
Leer c
//Proceso
r=0
Si c = `a` o c = `A` entonces
r=1
Fin si
Si c = `e` o c = `E` entonces
r=1
Fin si
Si c = `i` o c = `I` entonces
r=1
Fin si
Si c = `o` o c = `O` entonces
r=1
Fin si
Si c = `u` o c = `U` entonces
r=1
Fin si
Si r = 0 entonces
Escribir “NO ES VOCAL”
Sino
Escribir “ES VOCAL”
Fin

Algoritmo en Diagrama de flujo: Elabore en una hoja de papel el diagrama


de flujo correspondiente y pegue su foto como imagen aquí

Codificación:

Fundamentos de Programación | Ing. Patricio Vinueza


Problema 3
Enunciado: Determinar si un número es múltiplo de 3 y 5

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


un número entero n, luego el sistema analiza y determina si es el número es
múltiplo de 3 y 5

Expresión
Si n Mod 3 = 0 y n Mod 5 = 0 --- SI ES MULTIPLO DE 3 y 5
Si No NO ES MULTIPLO DE 3 y 5

Entrada: Salida:
• numero n • resultado:
ES MULTIPLO
NO ES MULTIPLO
Diseño de la Interfaz de Usuario
Ingresa un numero: 15

Resultado: SI ES MULTIPLO DE 3 Y DE 5

Algoritmo Diagrama de flujo:

Fundamentos de Programación | Ing. Patricio Vinueza


Pseudocódigo:

Codificación:

Problema 4
Enunciado: Dado tres números enteros diferentes, devolver el número Mayor

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


tres números enteros diferentes y el sistema realice el proceso para devolver el
número mayor.

Interfaz

Ingrese 3 enteros separados por un espacio: 5 45 2

El mayor es el 45

Pseudocódigo:

Codificación:

Fundamentos de Programación | Ing. Patricio Vinueza


Problemas Propuestos de Estructuras Secuenciales
Elabore el algoritmo en pseudocódigo de cada uno de los siguientes problemas
y codifiquelos en DEV C++, Enviar el archivo de word y los archivos fuentes de
los programas empaquetados.

Problema 5
Enunciado: Calcular el interés compuesto generado por un capital depositado
durante cierta cantidad de tiempo a una tasa de interés determinada, aplique
las siguientes fórmulas.
𝑀 = 𝐶(1 + 𝑟%)𝑡
I=M-C
Monto (M): Es la suma del capital más sus intereses producido en
determinado tiempo.
Tasa de interés (r%): Es la ganancia que se obtiene por cada 100
unidades monetarias en cada periodo de tiempo.
Capital (C): Es todo aquello que se va a ceder o imponer durante algún
tiempo para generar una ganancia.
Interés (I): Parte de la utilidad que obtiene el capitalista por prestar su
dinero.
Tiempo (t): Es el periodo de tiempo durante el cual se cede el capital.

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


el capital c y la tasa de interés r, luego el sistema procesa y obtiene el interés
ganado y el monto producido
Expresión Matemática: Expresión Algorítmica:
𝑀 = 𝐶(1 + 𝑟%) 𝑡
m = c*((1 + r / 100)^t

Entrada: Salida:
• Capital (c) • Interés (i).
• Tasa de interés (r) • Monto (m).
• Tiempo (t)
Diseño:
Interfaz de Usuario
Ingrese el capital: 100
Tasa de interés en %: 10
Tiempo en años: 2

Intereses: 21
Monto: 121

Fundamentos de Programación | Ing. Patricio Vinueza


Algoritmo: Diagrama de flujo

Pseudocódigo:

Codificación:

Fundamentos de Programación | Ing. Patricio Vinueza


Problema 6
Enunciado: Crear un programa para encontrar el Área de un Círculo, use la
fórmula: 𝐴 = 𝜋. 𝑟 2
Área (A): Es el área del círculo.
PI (𝜋): Representa el valor constante pi (3.14159)
Radio (r): Es el radio del círculo

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


el radio del círculo y el sistema procesa y obtiene el área del círculo.

Expresión Matemática: Expresión Algorítmica:


𝐴 = 𝜋. 𝑟 2 A = PI*r^2
Entrada: Salida:
• Radio (r) • Área (a).

Diseño:
Interfaz de Usuario
Ingrese el radio: 5

Area: : 78.53975
Algoritmo:
Diagrama de flijo:

Pseudocódigo:

Fundamentos de Programación | Ing. Patricio Vinueza


Codificación:

Problema 7
Enunciado: rear un programa que permita convertir una cantidad de segundos
en horas, minutos y segundos

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


un tiempo expresado en segundos y el sistema procesa y obtiene las horas,
minutos y segundos restantes.

Entrada: Salida:
• Tiempo en segundos (t)  Horas (h)
 Minutos (m)
 Segundos (s)
Diseño:
Interfaz de Usuario
Ingresa tiempo en segundos: 99999

Horas: 27
Minutos: 46
Segundos: 39

Fundamentos de Programación | Ing. Patricio Vinueza


Algoritmo Diagrama de flujo:

Pseudocódigo:

Codificación:

Fundamentos de Programación | Ing. Patricio Vinueza


Problema 8

Enunciado: Crear un programa que proporcione el volumen de un cilindro dados


su altura y diámetro: 𝑉 = 𝜋. 𝑟 2 . ℎ
Volumen (V): Es el volumen del cilindro.
PI (𝜋): Representa el valor constante pi (3.14159)
Radio (r): Es el radio del cilindro
Altura (h): Es la altura del cilindro

Análisis: Para la solución de este problema, se requiere que el usuario ingrese


el radio y la altura del cilindro y el sistema procesa y obtiene el área del cilindro.

Expresión Matemática: Expresión Algorítmica:


𝑉 = 𝜋. 𝑟 2 . ℎ V = PI*r^2*h
𝑑 r = d/2
𝑟=
2
Entrada: Salida:
• Diámetro (d) • Volumen (V).
• Altura (h)

Diseño: Introduzca el diámetro, en metros: 5


Interfaz
Introduzca de Usuario
la altura, en metros:12

El Volumen del Cilindro es: 78.53975 metros cúbicos

Fundamentos de Programación | Ing. Patricio Vinueza


Algoritmo:
Diagrama de flujo:

Pseudocódigo:

Codificación:

Fundamentos de Programación | Ing. Patricio Vinueza


Problema 9
Un programa en lenguaje C contiene las siguientes declaraciones y asignaciones
iniciales:

int i = 8, j = 5;
double x = 0.005, y = -0.1;
char c= 'c' , d = 'd';

Determinar el valor de cada una de las funciones estándar, además, identificar


el propósito de cada función y la librería estándar a la cual corresponde.
a) abs (i - 2 * j)
b) fabs (x + y)
c) isprint (c)
d) isdigit (c)
e) toupper (d)
f) cos (x + y)
g) islower (c)
h) ceil (x)

Problema 10
Un programa en lenguaje C contiene las siguientes declaraciones y asignaciones
iniciales:

int i = 8, j = 5;
double x = 0.005, y = -0.1;
char c= 'c' , d = 'd';

Determinar el valor de cada una de las funciones estándar, además, identificar


el propósito de cada función y la librería estándar a la cual corresponde.
a) isupper (j)
b) exp (x)
c) log (x)
d) sqrt (x * x + y * y)
e) isalnum (10 * j)
f) isalpha (10 * j)
g) isascii (10 * j)
h) floor (x + y)
i) islower (c)

Fundamentos de Programación | Ing. Patricio Vinueza


Problema 11

Un programa en lenguaje C contiene las siguientes declaraciones y asignaciones


iniciales:

int i = 8, j = 5;
double x = 0.005, y = -0.1;
char c= 'c' , d = 'd';

Determinar el valor de cada una de las funciones estándar, además, identificar


el propósito de cada función y la librería estándar a la cual corresponde.
a) toascii (10 * j)
b) fmod (x, y)
c) tolower (65)
d) pow (x - y, 3.0)
e) sin (x - y)
f) strlen ("hola\0")
g) strchr ("Ho\0", ‘e’)
h) tan (x)

Problema 12

Un programa contiene las declaraciones y asignaciones iniciales:

int i = 4, j = 3;
float x = 0.1, y = -0.2;
char c = 'A', d = 'D';

Determinar el valor de cada una de las siguientes expresiones, desarrollando el


proceso de evaluación. Utilizar para cada expresión los valores asignados
inicialmente a las variables.

a) (3 * i - 2 * j) % (2 * d - c) + j != 6 - c > d + (i > 0) || (j < 5)


b) 2 * ((i / 5) + (4 *(j - 3))) - c == 9 + x < y + (x > y) && (i > 0)
c) (i -3 * j) % (c + 2 * d) * 5 *(i + j) > 'C'
d) -(i + j) / (x / y) % (i + j - 2) - (2 * x + y) == 0

Fundamentos de Programación | Ing. Patricio Vinueza

También podría gustarte