Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COMPUTACION
ALGORITMOS Y PROGRAMACIÓN I
Diego Linares
Escuela de Matematica
.
Prefacio
El documento presente es una compilación de los textos del lenguaje pseudoformal NASPI a modo de
resumen, contando con una extensión un poco más ampliada que la que se encuentra disponible en
internet. Se ha adjuntado al final del documento ejercicios resueltos y adjuntado varias tablas de
traducciones del NASPI al lenguaje C. Este documento está dedicado a todas aquellas personas que
necesitan encontrar un poco más de información para los problemas y plantear su solución en este
lenguaje de programación. Los textos sobre este tema son pocos, y los libros sobre la materia se enfocan
en presentar la resolución de los problemas en lenguajes en pseudoformal similares al NASPI, algunos
de manera didáctica, otros no tanto. La principal razón de este texto es el aunar la información
disponible de forma concentrada para tener una guía más concreta de los temas.
Indice de Contenidos
1. Estructura de un algoritmo ............................................................................................................................................................... 4
2. Variables y tipos de datos .................................................................................................................................................................. 4
3. Tipos de datos elementales ................................................................................................................................................................ 4
4. Precedencia de operadores ................................................................................................................................................................ 6
5. Tipo de dato definido por el usuario ................................................................................................................................................. 7
6. Equivalencias de tipos ........................................................................................................................................................................ 8
7. Constantes ........................................................................................................................................................................................... 8
8. Estructuras de control ...................................................................................................................................................................... 8
9. Entrada / salida .................................................................................................................................................................................. 9
10. Funciones y procedimientos ........................................................................................................................................................... 10
11. Archivos .......................................................................................................................................................................................... 10
12. Arreglos y matrices ......................................................................................................................................................................... 15
Tabla de equivalencias entre NASPI y Lenguaje C ........................................................................................................................... 32
Ejercicios resueltos ................................................................................................................................................................................ 42
Notación algorítmica
1. Estructura de un algoritmo
algoritmo nombre
[const
// declaraciones de constantes]
[tipo
// declaraciones de tipos]
[var
// declaraciones de variables globales]
inicio
// cuerpo del algoritmo
fin
T v1, v2,…, vn
Operador Significado
= Igual a
< Menor que
> Mayor que
≤ Menor o igual que
≥ Mayor o igual que
≠ Distinto de
Operador Significado
- Menos unario
− Resta
+ Suma
* Multiplicación
div División entera
mod Resto de la división entera
** Exponenciación
3.3. Tipo real
Este tipo es un subconjunto finito del conjunto de los números reales ℝ. Se utiliza la palabra reservada
real en su declaración. Este tipo de dato además de los operadores vistos en la sección 3.1 presentan
las operaciones definidas a continuación.
Operador Significado
- Menos unario
− Resta
+ Suma
* Multiplicacion
/ Division Real
* Multiplicación
/ División real
4.Los
Precedencia
operadoresdeson
operadores
asociativos a la izquierda. Los operadores binarios utilizan notación infija. La precedencia entre
los operadores está definida a continuación de manera ordenada descendentemente, siendo los operadores primarios los
Los operadores son asociativos a la izquierda. Los operadores binarios utilizan notación infija. La
de mayor precedencia.
precedencia entre los operadores está definida a continuación de manera ordenada descendentemente,
siendo los operadores primarios los
Tipo
de mayor precedencia.
Operador
Primarios ( ) [ ] Paréntesis en expresiones o en llamadas a procedimientos
Tipo Operador
o funciones. Corchetes en índices de arreglos.
Primarios
Unarios ( -,) +,
[ ]¬ Paréntesis en expresiones o en llamadas a procedimientos
Multiplicativos o ∗,funciones.
/, div, mod, ∧, ∗∗ Corchetes en índices de arreglos.
Unarios
Aditivos -,+,+, −, ∨¬
Multiplicativos
De cadena ∗ ,+/, div, mod, ∧, ∗∗
Aditivos
De relación +,=,−, <, ∨>, ≤, ≥, ≠
De cadena +
De relación =, <, >, ≤, ≥, ≠
5. Tipo de dato definido por el usuario
5. Tipo de dato definido por el usuario
5.1. Tipo enumerado
5.1. Tipo enumerado
Un enumerado es una secuencia finita y ordenada de valores referenciados por identificadores. Este tipo
Un enumerado es una secuencia finita y ordenada de valores referenciados por identificadores. Este tipo
está definido por la enumeración explícita de los identificadores que lo conforman. La declaración de un
está definido por la enumeración explícita de los identificadores que lo conforman. La declaración de un
tipo enumerado es de la forma T = (id1,…, idk), donde: (1) T es el identificador del nuevo tipo, (2) los idi
tipo enumerado es de la forma T = (id 1,…, idk), donde: (1) T es el identificador del nuevo tipo, (2) los id i
(1 ≤ i ≤ k) son los identificadores que forman el tipo, y (3) el orden de los identificadores de T está
(1 ≤ i ≤ k) son los identificadores que forman el tipo, y (3) el orden de los identificadores de T está
definido por la regla: 〈∀ ∀ : 1 ≤ i, j ≤ k : (id < id ) ⇒ (i < j)〉. El primer elemento de un tipo enumerado
definido por la regla: 〈∀i ∀i j :j 1 ≤ i, j ≤ k : (idi i< idj)j ⇒ (i < j)〉. El primer elemento de un tipo enumerado
tiene asociado el número ordinal 0. Una variable v de tipo enumerado T sólo puede tomar valores de la
tiene asociado el número ordinal 0. Una variable v de tipo enumerado T sólo puede tomar valores de la
lista de identificadores que define a T. Los únicos operadores asociados con el tipo enumerado son el de
lista de identificadores que define a T. Los únicos operadores asociados con el tipo enumerado son el de
asignación y los de comparación. Un identificador no puede pertenecer a más de un tipo enumerado.
asignación y los de comparación. Un identificador no puede pertenecer a más de un tipo enumerado.
Un ejemplo de declaración de variables de tipo enumerado viene dado por:
Un ejemplo de declaración de variables de tipo enumerado viene dado por:
tipo
tipo
días = (lunes, martes, miércoles, jueves, viernes)
días = (lunes, martes, miércoles, jueves, viernes)
El tipo referenciado puede ser elemental o compuesto. El apuntador nulo se denota por el valor
constante nulo. Dada una variable P de tipo apuntador que hace referencia a un tipo T 0, las
operaciones permitidas son las siguientes:
• Igualdad: Dos tipos T1 y T2 son iguales si por lo menos una de las siguientes afirmaciones es
verdadera: (1) T1 y T2 tienen el mismo identificador, o (2) T1 y T2 tienen identificadores
diferentes y tipo T1 = T2 es una declaración de tipos.
• Compatibilidad: Dos tipos T1 y T2 son compatibles si por lo menos una de las siguientes
afirmaciones es verdadera: (1) T1 y T2 son iguales, (2) T1 es un intervalo de T2 o T2 es un
intervalo de T1, o (3) T1 y T2 son intervalos del mismo tipo.
• Compatibilidad de asignación: Dos tipos T1 y T2 son de asignación compatible si por lo menos
una de las siguientes afirmaciones es verdadera: (1) T1 y T2 son compatibles o (2) uno de ellos
es tipo real y el otro es tipo entero o un intervalo de tipo entero.
7. Constantes
Una constante puede verse como una variable cuyo valor no cambia durante su tiempo de vida. Una
constante es representada y utilizada a través de un identificador único (nombre) que la denota. Una
constante c con valor V se declara de la forma const c = V. El tipo T de una constante c siempre es
elemental, y viene dado por el dominio sobre el cual esté definido el valor V utilizado en la declaración.
8. Estructuras de control
8.1. Condicional
Doble:
si (cond) entonces si (a = b) entonces
S1 a←b
sino sino
S2 b←a
fsi
fsi
selección (a) de
Múltiple:
selección (expr)
1 : result ← 4
lst1 : S1 2 : result ← 8
∶ 3 : result ← 12
lstk−1 : Sk−1 sino
[sino : Sk] escribir(“Caso no definido”)
fselección fselección
Donde
Donde lsti (1 ≤
lsti (1 ≤ ii ≤
≤ k)
k) consistirá
consistirá de
de uno
uno oo más
más valores,
valores, separados
separados por por comas,
comas, del
del mismo
mismo tipo
tipo que
que expr.
expr. Si el valor de expr coincide con alguno de los valores de la primera lista de valores
Si el valor de expr coincide con alguno de los valores de la primera lista de valores (lst 1), entonces (lst 1), se
entonces se ejecutan las instrucciones correspondientes (S ) y sale de la estructura.
ejecutan las instrucciones correspondientes (S 1) y sale de la1 estructura. En caso contrario, evalúa la En caso
contrario, evalúa
siguiente lista de la siguiente
valores, lista
y así de valores, y Las
sucesivamente. así acciones
sucesivamente. Las acciones
de la cláusula de se
sino sólo la cláusula
ejecutarán si
sólovalor
ningún
sino se ejecutarán
de lsti (1 ≤sii ningún valor de
< k) coincide lstexpr.
con i (1 ≤ i < k) coincide con expr.
Estructura para
para cont ← vi hasta vf en expr hacer para i ← 8 hasta 0 en -2 hacer
S prom ← prom + i
fpara fpara
La secuencia de instrucciones S se evalúa para cada valor de cont comprendido entre vi y vf. expr
especifica, de acuerdo con su signo, la cantidad en la cual se incrementa o decrementa el valor de la
variable cont para la siguiente ejecución de S. Un ejemplo que realice un ciclo que incremente de 1 en 1
sería:
9. Entrada / salida
leer (v1, …, vk)
escribir (expr1, …, exprk)
Ejemplo
leer (i, j)
escribir (“Valor de i: ”, i, “Valor de j: ”, j)
10. Funciones y procedimientos
Funcion func factorial(val n : entero) : entero
func nombre([F1, …, Fk]) :T inicio
var si (n < 2) entonces
[declaraciones locales]
inicio
retornar(1)
sino
∶
retornar(expr) retornar(n ∗ factorial(n − 1))
ffunc fsi
ffunc
Procedimiento
proc nombre([F1, …,Fk]) proc carga(ref M : arreglo [1..N, 1..N] de entero)
var var
[declaraciones locales]
inicio
i, k : entero
inicio
∶
fproc
k←1
para i ← 1 hasta N en 1 hacer
M[ i ] ← k
k←k+1
fpara
fproc
Donde:
• Nombre es el identificador de la función o procedimiento.
• Cada Fi (1 ≤ i ≤ k) es un grupo de parámetros formales de la siguiente forma:
o {ref} Ti pi, donde:
ref indican si el paso de parámetros se realiza por referencia.
pj (1 ≤ j ≤ m) es el identificador del j-ésimo parámetro formal del i-ésimo grupo.
Ti es el tipo (elemental o definido por el usuario) de los parámetros que forman el i -
ésimo grupo.
11. Archivos
11.1. Archivo
Los archivos se forman de una secuencia de elementos del mismo tipo, que residen generalmente en
memoria auxiliar. Son utilizados cuando se necesita procesar grandes volúmenes de datos que no pueden
ser almacenados al mismo tiempo en la memoria central del computador.
Para ocultarle al programador los detalles específicos de cada dispositivo hardware, se usa el
concepto de archivo, el cual es tratado como un objeto abstracto sobre el cual se pueden realizar
operaciones tales como lectura y escritura de información.
Existen dos tipos fundamentales de archivos: archivos de texto y archivos binarios. En los archivos de texto
almacena la información como una secuencia de códigos ASCII. Los archivos binarios, almacenan datos que
no son interpretables como texto (imágenes, video, audio entre otros).
11.2. Características de un Archivo
• Los archivos son utilizados cuando se desea que los datos puedan recuperarse aún después de
haber apagado la máquina y también cuando se manejan grandes volúmenes de información.
• Residen en memoria auxiliar, la cual generalmente, es más económica y grande que la
memoria principal del computador, pero más lenta.
• Los elementos que almacena un archivo pueden ser elementales (texto, números) o
estructurados (arreglos, registros). Para propósitos del curso, sólo se puede leer un archivo
elemento por elemento.
• La cantidad de componentes que constituyen el archivo, no se conoce previamente. Si tiene
cero elementos se dice que es un archivo vacío.
En este tipo de archivo se almacenan elementos, llamados registros, los cuales tienen una
estructura formada por datos dispuestos en un orden particular.
Ejemplos:
Es un registro que contiene datos de una persona: Nombre, apellido, cedula de identidad, edad y
estatura. El mismo registro puede ser estructurado de una forma distinta:
María Ortega
19807543
22
1.63
Los registros son almacenados uno tras otro en el archivo al igual que los elementos que lo
forman, por lo cual, para acceder a un elemento de un registro en particular hay que procesar
todos los elementos anteriores en el archivo.
Declaración
Operaciones
Las operaciones que pueden ser realizadas sobre un archivo son: apertura, lectura, escritura,
clausura y detección de fin de archivo.
a) Apertura
donde f es una variable de tipo archivo_s, modo indica el tipo de operación que se realizará
sobre el archivo y nombre es una expresión de tipo cadena que indica la ruta en la cual se
encuentra almacenado el archivo en la memoria secundaria.
Los valores posibles para modo son los siguientes:
• ‘l’: Lectura al comienzo del archivo. El archivo debe existir previamente, sino esto causará
un error.
• ‘e’: Escritura al comienzo del archivo. Si el archivo no existe, la operación crea
automáticamente un archivo vacío; sino, la operación sobrescribe el archivo existente.
• ‘a’: Escritura al final del archivo. Si el archivo no existe, la operación crea automáticamente
un archivo vacío; sino, la operación permite que los registros sean insertados luego de los ya
existentes en el archivo.
b) Lectura
donde f es una variable de tipo archivo_s que ha sido abierto para lectura y v es la variable que
se va a leer.
c) Escritura
donde f es una variable de tipo archivo_s que ha sido abierto para escritura y expr es una
expresión que se va a escribir, la cual puede ser un literal o el valor de una variable.
d) Clausura
fda(f)
11.3.2. Archivo de Acceso Directo
En este tipo de archivo se almacenan registros a los cuales se puede acceder de forma directa
mediante su posición en el archivo.
Declaración
archivo_d f
Operaciones
Las operaciones que pueden ser realizadas sobre un archivo de acceso directo son: apertura,
lectura, escritura, clausura y detección de fin de archivo.
a) Apertura
donde f es una variable de tipo archivo_d, modo indica el tipo de operación que se realizará
sobre el archivo y nombre es una expresión de tipo cadena que indica la ruta en la cual se
encuentra almacenado el archivo en la memoria secundaria.
• ‘ld’: Lectura al comienzo del archivo. El archivo debe existir previamente, sino esto causará
un error.
• ‘ed’: Escritura al comienzo del archivo. Si el archivo no existe, la operación crea
automáticamente un archivo vacío; sino, la operación sobrescribe el archivo existente.
• ‘ad’: Lectura/Escritura al comienzo del archivo. Si el archivo no existe, la operación crea
automáticamente un archivo vacío.
b) Lectura
leer(f, pos, v)
donde f es una variable de tipo archivo_d que ha sido abierto para lectura, pos es la posición
(numero) del registro a leer y v es la variable que se va a leer.
c) Escritura
donde f es una variable de tipo archivo_d que ha sido abierto para escritura, es la posición donde
se escribirá el registro y expr es una expresión que se va a escribir, la cual puede ser un literal o el
valor de una variable.
d) Clausura
Retorna un valor lógico que permite detectar si se ha llegado o no a la marca de final del
archivo representado por f, la cual se encuentra justo después del último registro del archivo.
fda(f)
En este tema trataremos el tipo de dato arreglo, de una dimensión denominado vector,
de dos dimensiones o matriz y los n-dimensionales.
Un arreglo (lista o tabla) es una secuencia de datos del mismo tipo. Los datos
se llaman elementos del arreglo y se numeran consecutivamente 0, 1, 2, 3,…etc.
Estos números se denominan valores índice o subindice del arreglo y se utilizan
para localizar la posición del elemento dentro del arreglo, proporcionando acceso
directo al arreglo.
A 24 10 2 5 15 20
Importante:
• El índice del arreglo debe ser de tipo ordinal (carácter, entero, enumerado).
• Los componentes pueden ser de cualquier tipo (entero, real, cadena, arreglos,
registros, entre otros), siempre que sean todos del mismo tipo.
• Se usan corchetes [ ] para indicar el índice de un arreglo. Entre los corchetes se
debe escribir un valor ordinal, puede ser una variable, una constante o una
expresión tan compleja como se quiere, pero que genere como resultado un
valor ordinal.
Por ejemplo:
• A[5] acceso al quinto elemento del arreglo, con un índice tipo constante.
• A[i] accedemos al i-ésimo elemento del arreglo, con un índice tipo variable. Este
tipo de acceso es válido siempre que (1≤ i ≤ posiciones reservadas)
• A[i*2+1] en este caso tenemos un acceso a un elemento del arreglo con un
índice tipo expresión. Al igual que el caso anterior este tipo de acceso es válido
siempre que (1≤ i*2 +1 ≤ posiciones reservadas).
Al igual que con cualquier tipo de variable, se debe declarar un arreglo antes de
utilizarlo. Un arreglo se declara de modo similar a otros tipos de datos, excepto que
se debe indicar al compilador el tamaño o longitud del arreglo. La sintaxis para
declarar un arreglo de una dimensión determinada es:
Ejemplos:
Arreglo C de entero [1..5]; // arreglo de 5 enteros
Arreglo A de real [2..5]; // arreglo de 4 elementos de tipo real
Arreglo notas de entero [1..n]; // arreglo de n notas
Tipo
arreglo vector_notas de entero [1..30]
Variables
vector_notas estud1, estud2
a) Escritura
b) Lectura
c) Asignación
d) Actualización
e) Ordenación
f) Búsqueda
A) OPERACIÓN DE ESCRITURA
B) OPERACIÓN DE LECTURA
D) OPERACIÓN DE ACTUALIZACIÓN
Nota 12 16 07 11 18 12
1 2 3 4 5 6 7 8 9 10
Nota 12 16 11 11 18 12 Paso1
1 2 3 4 5 6 7 8 9 10
Nota 12 16 11 18 18 12 Paso2
1 2 3 4 5 6 7 8 9 10
Nota 12 16 11 18 12 12 Paso3
1 2 3 4 5 6 7 8 9 10 M = M-1
El caso más sencillo es insertar el elemento al final del vector. Pero, es posible
que necesitemos insertar un elemento en una posición diferente a la última, para
ellos debemos hacer espacio en el vector, desplazando los elementos a la
derecha del mismo y redefiniendo el tamaño del vector.
Ejemplo: supongamos que se tiene un arreglo llamado Nota inicialmente con 4
posiciones utilizadas y se desea insertar un elemento en la tercera posición.
Nota 12 16 07 11
1 2 3 4 5 6 7 8 9 10
Nota 12 16 07 11 11 Paso1
1 2 3 4 5 6 7 8 9 10
Nota 12 16 07 07 11 Paso2
1 2 3 4 5 6 7 8 9 10
Nota 12 16 20 07 11 Paso3
1 2 3 4 5 6 7 8 9 10
Insertar la nota=20
El fragmento del algoritmo que resuelve este problema es:
Nombre de la matriz 1 2 3 4 …. n
1
nota 2 Número de columnas
3
:
Número de filas :
m Posición 2,4
fila 2, columna 4
Ejemplo:
Tipo
Arreglo Dato de entero [1..4][1..4]
Variable
Dato tabla,caja //se han declarado 2 variables de tipo Dato
//y Dato es una matriz de tamaño 4x4
También existen los arreglos multidimensionales, los cuales tienen más de una
dimensión y, en consecuencia, más de un índice. Es posible crear arreglos de
tantas dimensiones como requieran sus aplicaciones, esto es, tres, cuatro o más
dimensiones. Este curso abarca los arreglos hasta 2 dimensiones, por ser los más
usuales.
Algoritmo Búsqueda_Secuencial
const // Declaración del tipo de dato y la constante para el límite superior
entero max ← 100 // límite superior del arreglo
tipo
arreglo vector de entero [1..max]; // declaración del tipo arreglo Vector
var
vector A // declaración de la variable A de tipo arreglo, donde se hará la búsqueda
entero elem, valor, i // elemento a buscar en el arreglo
booleano encontrado // indica si se encontró el elemento
inicio
para i ← 1 hasta max hacer
A[i] ← leer(valor) // acción que inicializa o llena el arreglo A
fpara
si (encontrado=verdad) entonces
escribir (“El valor: ” elem “ existe en el arreglo”)
sino
escribir (“El valor: ” elem “ no está en el
fsi
fin arreglo”)
BÚSQUEDA BINARIA
Algoritmo Búsqueda_Lineal
const // Declaración del tipo de dato y la constante para el límite superior
entero max ← 100 // límite superior del arreglo
tipo
arreglo vector de entero [1..max] // declaración del tipo arreglo Vector
var
vector A // declaración de la variable A de tipo arreglo, donde se hará la búsqueda
entero elem, valor, pos, i
entero inferior, mitad, superior //delimita las dos mitades para hacer la búsqueda
booleano encontrado // indica si se encontró el elemento
inicio
para i ← 1 hasta max hacer
A[i] ← leer(valor) // acción que inicializa o llena el arreglo A
fpara
escribir (“Indique el número que quiere buscar dentro del arreglo”)
leer (elem) // leemos el valor que el usuario quiere buscar
encontrado ← falso
inferior ← 1
superior ← max
pos ← 0
mientras (encontrado=falso) ^ (inferior ≤ superior) hacer
mitad ←( inferior + superior ) div 2
si (A[mitad]=elem) entonces
encontrado ← verdad
pos ← mitad
sino
si A[mitad]< elem entonces
inferior ← mitad+1
sino
si A[mitad] > elem entonces
superior ← mitad -1
fsi
fmientras
si (pos=0) entonces
escribir (“El valor: ” elem
“ no está en el
sino
escribir (“El valor: ” elem arreglo”)
fsi
fin “ existe en el arreglo”)
ORDENACIÓN DE ARREGLOS
ALGORITMO BURBUJA
Algoritmo Burbuja
const // Declaración del tipo de dato y la constante para el límite superior
entero max ← 100 // límite superior del arreglo
tipo
arreglo vector de entero [1..max] // declaración del tipo arreglo Vector
var
vector A // declaración de la variable A de tipo arreglo, donde se hará la búsqueda
entero valor, i, j, aux
inicio
para i ← 1 hasta max - 1 hacer
para j← 1 hasta max - 1 hacer
si A[j] > A[j+1] entonces
aux ← A[j]
A[j] ← A[j+1]
A[j+1] ← aux
fsi
fpara
fpara fin
EJERCICIOS PROPUESTOS
Las cadenas de caracteres son vectores de tipo carácter (char) que reciben un
tratamiento especial en algunos lenguajes de programación como el C, para simular
el tipo de datos “string”, el cual si está presente en lenguajes como: Java, C#,
Python, entre otros.
Para que un vector de caracteres pueda ser considerado como una cadena de
caracteres, el último de los elementos útiles del vector debe ser el carácter nulo
(código ASCII 0). Según esto, si se quiere declarar una cadena formada por N
caracteres, deberá declararse un vector con N + 1 elementos de tipo carácter. Por
ejemplo, la declaración arreglo cadena de caracter [1..5], reserva suficiente espacio
en memoria para almacenar una cadena de 5 caracteres, como la palabra "tres":
Nombre del arreglo
t r e s \0
num
1 2 3 4 5
Pseudoformal Lenguaje C
var Var
cadena num ← “tres” char num [5] = “tres”
Las operaciones básicas entre cadenas son: asignación, concatenación y
comparación.
El operador de asignación (←) nos permite asignar una cadena a otra, o una
cadena constante a una variable. Es importante recordar que una cadena constante
es una secuencia de caracteres delimitados por comillas, como “palabra”; a
diferencia de una constante de tipo carácter (char) la cual va delimitada por comillas
simples, como „x‟.
Ejemplo de asignación:
Var
Cadena nombre, nombre2
Ejemplo de concatenación:
Ejemplo:
La función posición nos permite determinar si una cadena está contenida en otra.
En este caso, indicará la posición donde comienza la cadena buscada en la cadena
fuente (la primera aparición). Si la cadena no existe el resultado será 0 (cero).
Ejemplo:
Ejemplo:
REGISTROS
Al igual que los arreglos, tenemos dos opciones para declarar este tipo de datos:
declaración directa (por variable) y declaración indirecta (por tipo).
Ejemplo: Sea “persona” un registro formado por tres campos: nombre, sexo y
edad. Su representación queda de la siguiente manera:
Registro persona =
cadena nombre
carácter sexo
entero edad
Fregistro
b. Declaración indirecta o por tipo: para declarar un tipo de registro definido por el usuario,
se antecede a la especificación la palabra clave Tipo y luego se definen las variables del tipo.
Tipo Registro fecha =
entero día, mes, año
FRegistro
Var
fecha valor
Por otro lado, al igual que los arreglos existen operaciones para manipular los
registros. El operador de asignación (←) facilita su inicialización.
Por otro lado también tenemos el operador selector, representado por un punto
( . ), mediante el cual podemos acceder directamente a cada campo del registro.
Algoritmo Ejemplo_registros
Tipo
Tcargo = (programador, analista, jefe_proyecto);
Templeado = (fijo, contratado);
registro persona =
cadena nombre
cadena apellido
entero cedula
entero edad
Tcargo cargo
Templeado empleo
real sueldo
real antiguedad
fregistro
arreglo empleado de persona [1 .. 200]
var
empleado EMP
entero i
inicio
para i ← 1 hasta 200 hacer
si EMP[i].empleo = “fijo” entonces
si EMP[i].antiguedad ≥ 10 entonces
EMP[i].sueldo ← EMP[i].sueldo + (0.20 ∗ EMP[i].sueldo)
fsi
sino
EMP[i].sueldo ← EMP[i].sueldo + (0.05 ∗ EMP[i].sueldo)
fsi
fpara
fin
Nota: Queda como ejercicio culminar el algoritmo.
TABLA DE EQUIVALENCIAS PARA CONVERSION DE PSEUDOCODIGO A PROGRAMAS EN LENGUAJE C
printf("\n");
system("pause");
return 0;
imprimir "La descripcion del articulo es: ", PRIMERA OPCION: printf()
descripcion printf("\n La descripción del articulo es %s: ",
descripción);
if ( a>b)
mayor=a;
else
mayor=b;
Nota: El si múltiple solo funciona con variables de Nota: El switch solo funciona con variable de tipo
tipo entero o caracter int o char
TABLA DE EQUIVALENCIAS PARA CONVERSION DE PSEUDOCODIGO A PROGRAMAS EN LENGUAJE C
#include <string.h>
Comparación de cadenas en pseudocódigo Comparación de cadenas en lenguaje C
#include <string.h>
TABLA DE EQUIVALENCIAS PARA CONVERSION DE PSEUDOCODIGO A PROGRAMAS EN LENGUAJE C
* *
+ +
- -
mod CAMBIA POR %
/ /
nota:
ejemplo: 23 pow(2,3)
#include <math.h>
> >
>= >=
< <
<= <=
<> CAMBIA POR !=
= CAMBIA POR ==