04 Elementos y Est Decision 8477 New
04 Elementos y Est Decision 8477 New
04 Elementos y Est Decision 8477 New
#define PI 3.14159
#define NL '\n'
#define MENSAJE "Pulse una tecla para continuar\n"
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
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:
K = K +1;
K++; ++K;
K=K-1;
K--; --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);
R += K-6*M;
R = R+(K-6*M);
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++.
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.
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
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
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)*/
}
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
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
una computadora solo puede operar con dos valores del mismo tipo
entero + entero
real + real
real + real
5 + 9.16
5.0 + 9.16
Real
S = 5 + 9.16
5.0 + 9.16
S = 14.16
S= ‘A’ + 15
Char + int
Int + int
65 + 15
80
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
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
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:
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
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.
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
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
- Simples o Incompleta
Estructuras
Condicionales - Dobles o completa
Algorítmicas - Múltiples
- Para
Cíclicas - Mientras
- Hacer Mientras
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.
Sintaxis en Lenguaje C
//Una instrucción
if (Exp. Lógica)
Instruccion 1;
//Varias instrucciones
if (Exp. Lógica.)
{
Instruccion 1;
Instruccion n;
}
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");
}
}
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");
}
Sintaxis en Lenguaje C
if (Exp Lógica)
{
Instruccion 1;
Instruccion n;
}
else
{
Instruccion 1;
Instruccion n;
}
Diagrama de Flujo
Pseudocódigo
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.
El mayor entre el 8 y el 5 es el 8
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);
}
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
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 !
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:]
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
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;
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.
Codificación
//Programa que determina el numero de dias del mes
//elaborado por Ing. Patricio Vinueza
#include <stdio.h>
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.
SENTENCIA 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.
Entrada: Salida:
• una opcion (op) • Valor a pagar (vp)
• kilómetros (km)
• toneladas (ton)
1 – bicicleta
2 – moto
3 – vehículo liviano
4 – camión
Digite la opción deseada: 3
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
#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
Entradas:
Día (d)
Mes (m)
Año (a)
Salidas:
Mostrar la fecha siguiente: dd/mm/aaaa
Ingrese un día: 31
Ingrese un mes: 1
Ingrese un año:2020
Ingrese un día: 31
Ingrese un mes: 2
Ingrese un año:2020
La codificación en Lenguaje C
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_CTYPE,"Spanish");
if (fechavalida == 1)
{
switch (m)
{
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
Codificación:
Problema 2
Entrada: Salida:
Carácter c Resultado:
ES VOCAL
NO ES VOCAL
Resultado: ES VOCAL
Algoritmo en Pseudocódigo:
Programa vocales
Inicio
//Variables
Carácter: c
Entero : r
Codificación:
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
Codificación:
Problema 4
Enunciado: Dado tres números enteros diferentes, devolver el número Mayor
Interfaz
El mayor es el 45
Pseudocódigo:
Codificación:
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.
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
Pseudocódigo:
Codificación:
Diseño:
Interfaz de Usuario
Ingrese el radio: 5
Area: : 78.53975
Algoritmo:
Diagrama de flijo:
Pseudocódigo:
Problema 7
Enunciado: rear un programa que permita convertir una cantidad de segundos
en horas, minutos y segundos
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
Pseudocódigo:
Codificación:
Pseudocódigo:
Codificación:
int i = 8, j = 5;
double x = 0.005, y = -0.1;
char c= 'c' , d = 'd';
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';
int i = 8, j = 5;
double x = 0.005, y = -0.1;
char c= 'c' , d = 'd';
Problema 12
int i = 4, j = 3;
float x = 0.1, y = -0.2;
char c = 'A', d = 'D';