Beruflich Dokumente
Kultur Dokumente
entero: edad
real: est
inicio
escribir (“teclea tu edad”)
leer (edad)
escribir (“teclea tu estatura”)
leer (est)
escribir (“tienes”, edad , ” mides”, est, ”mts”)
fin
Expresión Reglas
a) 3 + 4 – 5 Cuando en una expresión se
encuentran operadores con la
7 – 5 misma prioridad como en este caso
la suma y la resta, las
2 operaciones se realizan de
izquierda a derecha.
b) 8+5*9–6 Aunque la suma está primero, el
operador de mayor jerarquía es la
8 + 45 – 6 multiplicación, posteriormente se
lleva a cabo la suma, es decir,
53 – 6 nuevamente se evalúan de izquierda
a derecha.
47
6/2+4*(5–2) En este ejemplo se evalúa en
R primer lugar, la división y la
3 + 4 *(5–2) suma, se realiza la división,
después se evalua la suma y la
3 + 4 * 3 multiplicación se hace primero la
multiplicación y como tiene
15 paréntesis se resuelve el
paréntesis, después la
multiplicación y finalmente la
suma.
d) 6+7*((3–1)%2) Cuando en una expresión existan
paréntesis anidados, se evaluarán
6+7*(2%2) de adentro hacia afuera, luego se
evalúan los demás operadores de
6 + 7 * 0 acuerdo a su precedencia.
6 + 0
6
Ejemplo 2.2 Diga el resultado de la siguiente expresión.
X= 3*a+(--a)-(-a-2)*2/3
Para a=4 se resolverá así:
X ← 12+(--a)-(-a-2)*2/3
X ← 12+(3)-(-a-2)*2/3
X ← 15-(-3-2)*2/3
X ← 15- -5*2/3
X ← 15- -10/3
X ← 15- -3.333
X ← 18.333
Ejemplo 3.1 Estructura mínima de un programa en lenguaje C, version 1.
inicio
escribir (“ Mi primer programa ”)
fin
inicio
escribir (“ Mi primer programa ”)
fin
Ejemplo 4.1 Determinar si un alumno aprobó un curso a partir del promedio que obtuvo en sus tres
calificaciones de los parciales que se hicieron durante el semestre.
inicio
escribir (“Dame la calificación del primer examen parcial”)
leer(cal1)
escribir(“Dame la calificación del segundo examen parcial”)
leer(cal2)
escribir(“Dame la calificación del tercer examen parcial”)
leer(cal3)
prom ← (cal1 + cal2 + cal3) / 3
si (prom >= 60)
escribir (“Aprobó”)
fin_si
fin
entero: num
inicio
escribir("Indica si el numero es positivo, negativo o cero")
escribir("Dame el número)
leer(num)
si(num=0)
escribir("Es cero”)
fin_si
si(num>0)
escribir("Es positivo")
fin_si
si(num<0)
escribir("Es negativo)
fin_si
fin
Ejemplo 4.3 Determinar si un alumno aprobó o reprobó un curso a partir del promedio que obtuvo en sus tres
calificaciones de exámenes parciales que hizo durante el semestre y mostrar la calificación.
inicio
escribir(“Dame la calificación del primer examen parcial”)
leer(cal1)
escribir(“Dame la calificación del segundo examen parcial”)
leer(cal2)
escribir(“Dame la calificación del tercer examen parcial”)
leer(cal3)
prom ← (cal1 + cal2 + cal3) / 3
si (prom >= 60)
escribir (“Aprobó con ”, prom)
si_no
escribir (“Reprobó con ”, prom)
fin_si
fin
real: z,y
entero: op
inicio
escribir("Conversión de Kms a mts o mts a kms")
escribir("Si deseas hacer la conversión de kms a mts elige la
opción 1 y de mts a kms elige la opción 2")
leer(op)
si(op=1)
escribir("Dame los kilometros a convertir")
leer(z)
y ← z*1000
escribir(" la conversión a metros es ", y)
si_no
escribir("Dame los metros a convertir\n")
leer(y)
z ← y/1000
escribir("La conversión a kilometros es ",z)
fin_si
fin
Ejemplo 4.5 Indica si el número leído es positivo o es negativo o es cero.
entero: num
inicio
escribir("Indica si el numero es positivo, negativo o cero")
escribir("Dame el numero")
leer(num)
si(num=0)
escribir("Es cero")
si_no
si(num>0)
escribir("Es positivo")
si_no
escribir("Es negativo")
fin_si
fin_si
fin
Ejemplo 4.6 Leer 2 números y si son iguales que los multiplique, si el primero es mayor que el segundo que los
reste y si no que los sume.
entero: num1,num2,resul
inicio
escribir(“Dame el primer ”)
leer(num1)
escribir (“Dame el segundo ”)
leer(num2)
si (num1=num2)
resul ← num1 * num2
escribir (“La multiplicación de los números es ”,resul)
si_no
si (num1 > num2)
resul ← num1 – num2
escribir (“La resta de los números es ”, resul)
si_no
resul ← num1 + num2
escribir (“La suma de los números es ”, resul)
fin_si
fin_si
fin
Ejemplo 4.7 Indica un día de la semana y el programa escribirá el número de día que le corresponde.
caracter: dia
inicio
escribir(“Elige un día de la semana: Lunes = L Martes = M
Miércoles = I Jueves = J Viernes = V Sábado
= S Domingo = D”)
leer(dia)
según_sea(dia)hacer
caso ‘L’: escribir (“# 1”)
caso ‘M’: escribir (“# 2”)
caso ‘I’: escribir (“# 3”)
caso ‘J’: escribir (“# 4”)
caso ‘V’: escribir (“# 5”)
caso ‘S’: escribir (“# 6”)
caso ‘D’: escribir (“# 7”)
fin_segun
fin
entero: x,y,op
real: z
entero: x,y,op
real: z
inicio
escribir("Calculadora básica elige la operación a realizar")
escribir("1=Suma, 2=Resta, 3=Multiplicación, 4=División")
leer(op)
segun_sea(op)
caso 1:escribir("Suma")
escribir("Teclea el primer número ")
leer(x)
escribir("Teclea el segundo número ")
leer(y)
z ← x+y
escribir("La suma es ",z)
caso 2:escribir("Resta")
escribir("Teclea el primer número ")
leer(x)
escribir("Teclea el segundo número ")
leer(y)
z ← x-y
escribir("la resta es ",z)
caso 3:escribir("Multiplicación")
escribir("Teclea el primer número ")
leer(x)
escribir("Teclea el segundo número ")
leer(y)
z ← x*y
escribir("La multiplicación es ",z)
caso 4:escribir("Division")
escribir("Teclea el primer número ")
leer(x)
escribir("Teclea el segundo número ")
leer (y)
z ← x/y
escribir("La división es ",z)
fin_segun
fin
Ejemplo 5.1 Imprimir los números enteros del 1 al 10.
entero c
inicio
c ← 1
mientras (c<=10)
escribir (c)
c ← c+1
fin_mientras
fin
entero: I,S
Inicio
I ← 1
S ← 0
mientras (I<=5)
S ← S+I
I ← I+1
Fin_mientras
escribir (“la suma de los numeros del 1 al 15 es” ,S)
fin
Ejemplo 5.3 Hallar el producto de varios números positivos introducidos por teclado y el proceso termina
cuando se contesta con una letra diferente a ‘s’.
entero: p,num
caracter resp
inicio
resp ←’s’
p ← 1
escribir(" Dame un numero")
leer(num)
mientras(resp=’s’)
p ← p*num
escribir(" dame otro numero ")
leer(num)
escribir(" Ingresar otro numero s/n ")
leer(resp)
fin_mientras
escribir(" el total de la multiplicación es ",p)
fin
Ejemplo 5.4 Producir una tabla de multiplicar e imprimirla en la pantalla utilizando la estructura de control while.
entero: i,n
inicio
escribir ("DAME EL NUMERO DE TABLA : ")
leer(n)
i ← 1
mientras(i<=10)
escribir(n,i,n*i)
i++
fin_mientras
fin
entero:i,n
inicio
escribir("DAME EL NUMERO DE TABLA DE MULTIPLICAR: ")
leer(n)
i ← 1
mientras(i<=10);
printf(n,i,n*i)
i++
fin_mientras
fin
Ejemplo 5.6 Sumar los numeros pares y multiplicar los numeros impares
hasta que la suma sea mayor que 50 y el producto sea mayor a 150.
entero: num,suma,prod
inicio
suma ← 0,prod ← 1
mientras (suma<=50 o prod<=150)
escribir (" DAME EL NUMERO ENTERO: ")
leer(num)
si(num mod 2=0) entonces
suma ← suma+num
sino
prod ← prod*num
fin_mientras
escribir (" LA SUMA ES: " ,suma)
escribir(" EL PRODUCTO ES: ",prod)
fin
Ejemplo 5.7 Obtener el promedio de una determinada cantidad de números leídos del teclado.
constante precio 5
real l
caracter R
inicio
repetir
escribir (“ Cuantos litros son”)
leer (l)
escribir (“el pago es de “ ,l* precio)
escribir (“otro calculo”)
leer (R)
hasta_que (R <>’s’)
fin
Ejemplo 5.9 Imprimir en pantalla la tabla de multiplicar de un tecleado por el usuario, utilizando la estructura de
control do-while.
entero: i,n
inicio
escribir ("DAME EL NUMERO DE TABLA DE MULTIPLICAR: ")
leer(n)
i ← 1
repetir
escribir(n,i,n*i)
i++
hasta_que(i>=10)
fin
Ejemplo 5.10 Imprimir en pantalla los primeros 15 números positivos enteros en orden decreciente.
entero i
inicio
desde i ← hasta i=15 decrementa i
escribir (i)
fin_desde
fin
Ejemplo 5.11 Imprimir todas las letras del alfabeto de forma invertida.
char Letra
inicio
escribir("Estas son las letras del alfabeto: ")
desde Letra='Z' hasta Letra='A' decremento Letra
escribir(Letra)
fin_desde
fin
Ejemplo 5.12 Imprimir en la pantalla la tabla de multiplicar de un número , utilizando la estructura de control
for.
entero i,n
inicio
escribir("DAME EL NUMERO DE TABLA DE MULTIPLICAR : ")
leer(n)
desde i ← 1 hasta i>=10 incrementa i
escribir(n,i,n*i)
fin_desde
fin
constante TAMANO 7
real estatura[TAMANO]
entero i
inicio
desde i hasta i=6 incremento i
escribir (“ dame la estatura “)
leer(estatura[i])
fin_desde
escribir(“ num estatura ”)
desde i ← 0 hasta i=TAMAÑO incrementa i
escribir (“ i+1, estatura[i])
fin_desde
fin
Ejemplo 6.2 Este programa cuenta el número de ocasiones que aparece la letra ‘a’ en una línea.
entero CuentaCar
caracter Cadena
inicio
CuentaCar ←0
mientras (Cadena<> EOF
Cadena ← getchar()
si (Cadena=’a’)
++CuentaCar
fin_mientras
escribir (“Aparecieron”,CuentaCar,”veces la letra ‘a’ ”)
fin
Ejemplo 6.3 Imprimir en pantalla un nombre en letras mayúsculas, que fue leído en letras minúsculas.
caracter Cadena
inicio
escribir (“Escriba su nombre: “)
mientras (Cadena <> ’\0’)
Cadena ← getchar()
putchar(toupper(Cadena))
fin_mientras
fin
Ejemplo 6.4 Almacenar un nombre en el arreglo denominado Mi Nombre.
caracter MiNombre[50]
inicio
escribir (“ Escriba su nombre: “)
leer (MiNombre)
escribir (“Hola Mi nombre es ”)
escribir (MiNombre)
fin
Ejemplo 7.1 Leer y mostrar los datos de un alumno y de un profesor, el ejemplo es utilizando la definición de
estructura como una variable local.
inicio
registro: agenda
caracter nombre[30]
entero: edad
fin_registro
registro agenda: alumno,profesor
/*inicializar */
alumno.nombre[0] ← '0'
alumno.edad ← 0
profesor.nombre[0] ← '0'
profesor.edad ← 0
/*asignación */
escribir(" dame el nombre del alumno ")
leer(alumno.nombre[0])
escribir (" dime la edad ")
leer (alumno.edad)
escribir (" dame el nombre del profesor ")
leer (profesor.nombre)
escribir (" dime la edad ")
leer (profesor.edad)
/*imprimir */
escribir ("nombre edad");
escribir (alumno.nombre,alumno.edad);
escribir (profesor.nombre,profesor.edad);
fin
Ejemplo 7.2 Muestra el nombre y la estatura de un alumno, (manejo de una estructura como variable global).
registro: agenda
caracter nombre[30]
real estatura
fin_registro
inicio
registro agenda: alumno
/* inicializar */
alumno.nombre[0] ← '0'
alumno.estatura ← 0
/* asignación */
escribir (" dame el nombre del alumno ")
leer (alumno.nombre[0])
escribir (" dime la estatura ")
leer (alumno.estatura)
/* imprimir */
escribir ("nombre")
escribir (alumno.nombre,alumno.estatura);
fin
Ejemplo 7.3 Solicita y muestra nombre y tres calificaciones para cada alumno, pueden ser hasta diez alumnos.
(arreglo de estructuras).
constante MAX 10
inicio
registro:
caracter nombre[30]
entero calificacion[3]
fin_registro:alumno[MAX]
entero i,j,n
/* inicializar */
desde i ← 0 hasta i<MAX incremento i
alumno[i].nombre[0] ← '\0'
desde j ← 0 hasta j<3 incremento j
alumno[i].calificacion[j] ← 0
fin_desde
fin_desde
/* agregar elementos */
i ← 0
escribir (" \n cuantos elementos se insertaran \t");
leer (n)
mientras (i<n)
escribir (" dame el nombre ",i+1)
leer (alumno[i].nombre[0])
desde j ← 0 hasta j<3 incremento j
escribir (" dame la calificacion ",j+1)
leer (alumno[i].calificacion[j])
fin_desde
i++
fin_mientras
/* imprimir */
escribir ("nombre calificacion 1 calificacion 2 calificacion ")
desde i ← 0 hasta i<n increment i
escribir (alumno[i].nombre)
desde j ← 0 hasta j<3 incremento j
escribir (alumno[i].calificacion[j])
fin_desde
fin_desde
fin
Ejemplo 7.4 Muestra nombre, tres calificaciones y estatura para un alumno, el nombre esta separado por
nombre, apellido paterno y apellido materno.
inicio
entero j
registro: nombre_com
caracter nombre[30]
caracter apellidopat[15]
caracter apellidomat[15]
fin_registro
registro: agenda
registro nombre_com: nombrec
entero calificacion[3]
real estatura
fin_registro: alumno
/* inicializar */
alumno.nombrec.nombre[0] ← '\0'
alumno.nombrec.apellidopat[0] ← '\0'
alumno.nombrec.apellidomat[0] ← '\0'
desde j ← 0 hasta j<3 incremento j
alumno.calificacion[j] ← 0
fin_desde
alumno.estatura ← 0
/* agregar un elemento */
escribir ("dame el nombre ")
leer (alumno.nombrec.nombre)
escribir (" apellido paterno ")
leer (alumno.nombrec.apellidopat)
escribir (" apellido materno ")
leer (alumno.nombrec.apellidomat)
desde (j ← 0 hasta j<3 incremento j
escribir (" dame la calificacion ",j+1)
leer (alumno.calificacion[j])
fin_desde
escribir (" dame la estatura")
leer (alumno.estatura)
/* imprimir */
escribir ("nombre calificacion 1 calificacion 2 calificacion 3
estatura")
escribir (alumno.nombrec.nombre)
escribir (alumno.nombrec.apellidopat)
escribir (alumno.nombrec.apellidomat)
desde j ← 0 hasta j<3 incremento j
escribir (alumno.calificacion[j])
fin_desde
escribir (alumno.estatura)
fin
Ejemplo 7.5 Usando un nuevo tipo de dato, almacenar en una estructura un dato de tipo int y otro de tipo float,
mostrar en pantalla.
inicio
entero a
tipo b
a ← 10
b.n ← 1
b.numReal ← 1.10
escribir (a,b.n,b.numReal)
fin
Ejemplo 7.6. Definir dos variables y dos apuntadores a esas variables, asignar valor a las variables usando los
apuntadores.
entero dato1
puntero_a entero apint
real dato2
puntero_a real apfloat
inicio
escribir (" Manejo de apuntadores 1")
// Asignando la direccion a los apuntadores
apint ← dato1
apfloat ← dato2
inicio
// declaracion de variables y apuntador a ese tipo de variable
entero dato1
puntero_a entero apint
real dato2
puntero_a real apfloat
Ejemplo 7.8 En una estructura anidada, leer los datos del nombre completo y la edad, accediendo mediante un
apuntador a estructura.
registro: t_nombre
caracter nom[10]
caracter apem[10]
caracter apep[10]
fin_registro
registro: t_datos
registro t_nombre nombrec
entero edad
fin_registro
inicio
escribir (" Leer datos ")
escribir (" nombre ")
leer ( nnombrec.nom)
escribir (" apell mat ")
leer ( nnnombrec.apem)
escribir (" apellido paterno ")
leer ( nnnombrec.apep)
escribir (" edad ")
leer ( nnedad)
escribir (" Mostrar datos ")
escribir (" nombre “,nnnombrec.nom)
escribir (" ap paterno: ",nnnombrec.apep)
escribir (" ap materno: ",nnnombrec.apem)
escribir (" edad: ",nnedad)
fin
Ejemplo 8.1 Pasos para resolver el simple problema de la suma de dos numeros, mediante una función sin paso
de parámetros y sin devolver valor.
inicio
suma1()
fin
inicio
entero resp
hacer
prom()
escribir(“Si deseas promediar otro alumno teclea 1”)
leer(resp)
hasta_que(resp=1)
fin
Ejemplo 8.3 Diseñaremos la solución para el caso de la suma de dos numeros, mediante una función que
regresa un valor, por supuesto lo que regresa es el resultado del cálculo de la suma.
inicio
real res
res ← suma1()
escribir(res)
fin
Ejemplo 8.4 Retomando el ejemplo de la función que calcula el promedio, ahora se diseñará un programa donde
la función regrese un valor y ese valor se acumule en una variable en main para luego obtener el promedio
grupal de n alumnos.
inicio
entero resp, c ← 0
real promg ← 0
hacer
promg ←promg + prom()
escribir(“Si deseas promediar otro alumno teclea 1”)
leer(resp)
si(resp)
c ← c+1
hasta_que (resp=1)
escribir(“El promedio general de los alumnos es, promg/c )
fin
real sumabases ()
real bm,BM
escribir(“Dame la base menor ”)
leer((bm)
escribir(“Dame la base mayor”)
leer((Bm)
devolver (bm+BM)
fin_funcion
inicio
escribir(area() )
fin
Ejemplo 8.6 Se analizará el siguiente ejemplo, en el cual se resuelve nuevamente el problema de la suma de dos
numeros, pero ahora mediante una función con paso de parámetros por valor.
//Algoritmo 8.6 diseño de la función que suma dos números, con paso de
parámetros
Ejemplo 8.7 Retomando la función para sumar dos numeros, hagamos unos ligeros cambios a main para que el
programa calcule la suma de cuatro numeros.
inicio
real n1, n2, n3, n4, c
escribir(“Dame el primer valor”)
leer(n1)
escribir(“Dame el segundo valor”)
leer(n2)
escribir(“Dame el tercer valor”)
leer(n3)
escribir(“Dame el cuarto valor”)
leer(n4)
c ← suma3(suma3(n1,n2),suma3(n3,n4))
escribir(“La suma es ”, c)
fin
Ejemplo 8.8 Programa con dos funciones, una que calcule el cuadrado de un número y la segunda calcule el
cubo, ambas regresan el resultado.
entero funcion:cuadrado(entero x)
regresa(x * x)
fin_funcion
entero funcion:cubo(entero y)
regresa cuadrado(y)*y
fin_funcion
inicio
entero opc, n
escribir(“Elige una opción 1) CUADRADO\n 2) CUBO\n”)
leer((opc)
escribir(“Dame el numero a elevar”)
leer(n)
según_sea(opc)
caso 1: escribir(cuadrado(n))
caso 2: escribir(cubo(n))
si_no : escribir(“ERROR”)
fin_según_sea
fin
Ejemplo 8.9 Realizar una función que intercambia dos valores entre si.
inicio
entero n1,n2
leer(n1,n2)
intercambio(n1,n2)
escribir(“Los valores son n1 = y n2 = ”, n1,n2)
fin
Ejemplo 8.10 Realizar una función que intercambia dos valores entre si, utilizando parametros por referencia.
//Algoritmo 8.10 Funcion que intercambia dos valores entre si, utilizando
parametros por referencia.
inicio
entero n1,n2
leer(n1,n2)
intercambio( n1, n2)
escribir(“Los nuevos valores son n1 = y n2 = ”, n1,n2)
fin
Ejemplo 8.11 Realizar una función que intercambia dos valores entre números, utilizando parámetros uno por
valor y otro por referencia.
//Algoritmo 8.11 funcion que intercambia dos valores entre si, utilizando
un parametro valor y otro por referencia.
funcion principal ()
entero x,y
leer (x,y)
func(x,y)
escribir (“El valor de x es de”,x, “ y el de y es de ”,y)
fin_funcion