Tutorial PSEINT En este tutorial veremos los siguientes temas: •
•
•
•
•
•
•
•
•
•
Definición de un algoritmo Tipos de datos Representaciones de un algoritmo Lenguaje natural Pseudocódigo Diagrama de flujo Lenguaje de programación Pseint Tipos de datos Expresiones Acciones secuenciales Estructuras de control Arreglos Notaciones Ejercicios
Donde Descargar el programa Si buscas en google el pseint te dirige al sitio de sourceforge ttp!""pseint#sourceforge#net"index#pp$page%descargas#pp debes descargar la &ersion para 'indo's (bandera de ) colores de microsoft* luego de descargar un arci&o de extension #exe+ al acer clic este se instala en tu computadora Actualmente existe la &ersion ,./.0 1ue esta en el nombre del arci&o descargado#
1. DEFINICIÓN DE UN !"#$IT%# 2n algoritmo es una lista de operaciones o acciones (instrucciones* para poder encontrar la solución a un problema# Estas instrucciones deben estar ordenadas+ estar bien definidas (no ser ambiguas+ 1ue cada instruccion tenga un solo significado*+ finitas (un numero especifico de las mismas para poder finali3ar la tarea* Esta compuesto por operaciones+ m4todos 5 &ariables# Entre las operaciones se conocen las matem6ticas! 7+ -+ "+ 8+ funciones trigonometricas+ rai3 cuadrada+ etc# Los m4todos son las funciones disponibles! 9ostrar en pantalla# Pedir un dato Las &ariables &ariables pueden pueden ser de di&ersos di&ersos tipos! por ejemplo la &ariable &ariable entera de nombre nombre dato puede contener los &alores -.+ ,+ /+ etc# La &ariable booleana (logica* llamada nombre puede contener los &alores : o ; (:erdadero o ;also*# 2na &ariable de tipo cadena o string llamada palabra puede contener los &alores
ola 9undo=+ etc# La &ariable de tipo caracter llamada &ocal puede contener los &alores ?a?+ ?b?+ ?@?+ etc#
&. TIP#S DE DT#S Numerico! representa un numero+ dentro de este tipo de dato pueden existir! los enteros! numeros como el .,+ . + -+ etc los reales (con coma decimal*+ como el .#/+ #)+ -.#//+ etc Booleano! representa un &alor logico 1ue solo puede ser &erdadero o falso Caracter! representa a una sola letra del sistema alfanumerico ascci+ como por ejemplo ?a?+ ??+ ?@?+ ?/?+etc String o cadena de caracteres! representa una palabra entera+ como ser! =>ola 9undo=+ =ose=+ =a=+ etc
'. $EP$ES $EP$ESENT ENTCI CI#NE #NES S DE UN !"#$ !"#$IT% IT%# # Todo algoritmo puede ser representado por! Lenguaje natural Pseudocódigo Diagramas de flujo Lenguajes de programación
(. !EN"U)E NTU$! Problema ! Sumar , nFmeros# Representación mediante Lenguaje natural! Gnicio Suma Gngresar primer nFmero Huardar nFmero en &ariable a Gngresar segundo nFmero Huardar nFmero en &ariable b Sumar a 5 b Huardar resultado en R 9ostrar R ;in Des&entajas! Ambiguo 5 Extenso
*. PSEU PSEUD# D#CÓ CÓDI DI"# "# Es una forma de representar un algoritmo+ 1ue se acerca a los lenguajes de programación 5 con elementos del lenguaje natural# El pseudocódigo se compone de! Cabecera Declaraciones Cuerpo La cabecera es la parte del algoritmo 1ue posee el nombre de 4ste# Las declaraciones son las &ariables 5 constantes 1ue utili3ar6 el algoritmo para resol&er el problema# El cuerpo son el conjunto de instrucciones o acciones 1ue est6n entre el Gnicio 5 el ;in#
+. PSEUD#CÓDI"# La estructura del pseudocódigo es la siguiente! Proceso SinTitulo accion.I accion,I #### accionNI ;inProceso La sección JProceso SinTitulo< es la cabecera del algoritmo+ a1ui debe estar el nombre del algoritmo La sección Jacción .+ acción .+K< es el cuerpo del algoritmo+ es la lista de intrucciones ordenadas 5 separadas por el punto 5 coma# Donde termina un punto 5 coma termina una intruccion (sentencia* 5 comien3a la siguiente# En este caso como utili3aremos el Pseint la sección de declaraciones del algoritmo no se toma en cuenta+ 5a 1ue el soft'are se encarga de asignarle el tipo de dato a cada &ariable dependiendo del uso 1ue se le d4#
PSEUD#CÓDI"#: $epresentaci,n mediante Pseudoc,digo El ejemplo anterior de sumar dos numeros+ en pseudocodigo de Pseint se &eria como! Proceso suma Escribir =Gngrese primer numero= I Leer aI Escribir =Gngrese segundo numero= I Leer bI c - a 7 bI Escribir =La suma es! = cI ;inProceso
!a signaci,n La instrucción de asignación permite almacenar una &alor en una &ariable# &ariable M - expresiónM I Al ejecutar ejecutarse se la asignac asignación+ ión+ primer primero o se e&alFa e&alFa la expresión expresión de la derec derecaa 5 luego se asigna asigna el resultado a la &ariable de la i31uierda# El tipo de la &ariable 5 el de la expresión deben coincidir# Si la &ariable de la i31uierda i31uierda no exista pre&iament pre&iamentee a la asignación+ asignación+ se crea# Si la &ariable &ariable exista exista se pierde su &alor anterior 5 toma el &alor nue&o+ ra3ón por la cual se dice 1ue la asignación es =destructi&a= (destru5e el &alor 1ue tena la &ariable de la i31uierda*# Los contenidos de las &ariables 1ue inter&ienen en la expresión de la dereca no se modifican# Existen dos operadores operadores de asignación asignación alternati&os alternati&os 1ue 1ue pueden utili3arse utili3arse indistintamente indistintamente en cual1uier cual1uier caso+ pero la abilitación del segundo (%* depede del perfil de lenguaje seleccionado# &ariableM !% expresiónM I &ariableM % expresiónM I
!ectura La instrucción Leer permite ingresar información desde el ambiente# Leer &ariablelM + &ariable,M + ### + &ariableNM I Esta instrucción toma N &alores desde el ambiente (en este caso el teclado* 5 los asigna a las N &ariables mencionadas# Pueden incluirse una o m6s &ariables+ por lo tanto el comando leer6 uno o m6s &alores# Si una &ariable donde se debe guardar el &alor ledo no existe+ se crea durante la lectura# Si la &ariable existe se pierde su &alor anterior 5a 1ue tomar6 el &alor nue&o+ ra3ón por la cual se dice 1ue la lectura es =destructi&a= (destru5e el &alor 1ue tena pre&iamente la &ariable*# Si se utili3a sintaxis flexible se permite opcionalmente separar las &ariables a leer simplemente con espacios en lugar de comas# Esto se configura en el cuadro de Opciones del PSeudocódigo# El ejemplo Suma muestra un programa mu5 simple 1ue lee dos nFmeros 5 calcula 5 muestra la suma de los mismos#
Escritura La instrucción Escribir permite mostrar &alores al ambiente# Escribir exprlM + expr,M + ### + exprNM I Esta instrucción informa al ambiente (en este caso escribiendo en pantalla* los &alores obtenidos de e&aluar N expresiones# Dado 1ue puede incluir una o m6s expresiones+ mostrar6 uno o m6s &alores# Si a5 m6s de una expresión+ se escriben una a continuación de la otra sin separación+ por lo 1ue el algoritmo debe explicitar los espacios necesarios para diferenciar dos resultados si as lo re1uiere# Si en algun punto de la linea se encuentran las palabras cla&e =SGN SALTAR= o =SGN BAAR= los &alores se muestran en la pantalla+ pero no se a&an3a a la linea siguiente+ de modo 1ue la próxima acción de lectura o escritura continuar6 en la misma linea# En caso contrario+ se aade un salto de lnea luego de las expresiones mostradas# Escribir Sin Saltar exprlM + ### + exprNMI Escribir exprlM + ### + exprNM Sin SaltarI Puede utli3arse indistantemente las palabras Gmprimir 5 9ostrar en lugar de Escribir si su perfil de lenguaje permite sintaxis flexible# Adem6s+ en este caso se permite opcionalmente separar las expresiones a mostrar simplemente con espacios en lugar de comas# Esto se configura en el cuadro de Opciones del PSeudocódigo# El ejemplo Suma muestra un programa mu5 simple 1ue lee dos nFmeros mostrando con la instrucción Escribir las indicaciones para el usuario 5 el resultado de sumar los mismos#
Consideraciones Todas las acciones (instrucciones* deben estar entre Proceso 5 ;inProceso# Como se deben sumar dos numeros entonces necesitamos de dos &ariables 1ue se llamar6n a 5 b respecti&amente de tipo numerico# Para mostrar una le5enda pidiendo 1ue se ingrese un numero se utili3a la instruccion Escribir+ 1ue permite mostrar informacion en al pantalla# Para ingresar un dato se utili3a la instruccion Leer# Q finalmente para asignar la suma de a 5 b a otra &ariable c se utili3a la instruccion de asignación 1ue permite almacenar un &alor en una &ariable# Se pueden introducir comentarios luego de una instrucción+ o en lneas separadas+ mediante el uso de la doble barra ( "" *# Todo lo 1ue precede a ""+ asta el fin de la lnea+ no ser6 tomado en cuenta al interpretar el algoritmo# No es &6lido introducir comentario con "8 5 8"#
No puede aber instrucciones fuera del proceso (antes de PROCESO+ o despu4s de ;GNPROCESO*+ aun1ue s comentarios# Las estructuras no secuenciales pueden anidarse# Es decir+ pueden contener otras adentro+ pero la estructura contenida debe comen3ar 5 finali3ar dentro de la contenedora# Los identificadores+ o nombres de &ariables+ deben constar sólo de letras+ nFmeros 5"o guiónbajo (*+ comen3ando siempre con una letra# Los tipos de datos de las &ariables no se declaran explicitamente+ sino 1ue se infieren a partir de su utili3ación# Las constantes de tipo car6cter se escriben entre comillas ( = *# En las constantes num4ricas+ el punto ( # * es el separador decimal# Las constantes lógicas son :erdadero 5 ;also# Actualmente este pseudolenguaje no contempla la creación de nue&as funciones o subprocesos# Nota! Considera como se debera crear otros procesos para reali3ar la resta+ la di&isión 5 la multiplicación#
Estructuras en pseint Las estructuras en Pseint se di&iden en condiciones 5 repetiti&as! Condicionales Condicional Si-Entonces La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino depende del &alor de una condición lógica#
Si -condici,n Entonces -instrucciones Sino -instrucciones FinSi
Al ejecutarse esta instrucción+ se e&alFa la condición 5 se ejecutan las instrucciones 1ue correspondan! las instrucciones 1ue le siguen al Entonces si la condición es &erdadera+ o las instrucciones 1ue le siguen al Sino si la condición es falsa# La condición debe ser una expresión lógica+ 1ue al ser e&aluada retorna :erdadero o ;also# La cl6usula Entonces debe aparecer siempre+ pero la cl6usla Sino puede no estar# En ese caso+ si la condición es falsa no se ejecuta ninguna instrucción 5 la ejecución del programa continFa con la instrucción siguiente# El ejemplo Triangulo lee las medidas de los tres lados de un tri6ngulo 5 utili3a esta estructura para determinar cual es el ma5or de los tres+ 5 &erificar luego si se trata de un tri6ngulo rect6ngulo o no#
Selección 9ultiple La secuencia de instrucciones ejecutada por una instrucción SegFn depende del &alor de una &ariable num4rica#
Segun -varia/le 0acer -nmero1: -instrucciones -nmero&2-nmero': -instrucciones -... De #tro %odo: -instrucciones FinSegun
Esta instrucción permite ejecutar opcionalmente &arias acciones posibles+ dependiendo del &alor almacenado en una &ariable de tipo num4rico# Al ejecutarse+ se e&alFa el contenido de la &ariable 5 se ejecuta la secuencia de instrucciones asociada con dico &alor# Cada opción est6 formada por uno o m6s nFmeros separados por comas+ dos puntos 5 una secuencia de instrucciones# Si una opción inclu5e &arios nFmeros+ la secuencia de instrucciones asociada se debe ejecutar cuando el &alor de la &ariable es uno de esos nFmeros# Opcionalmente+ se puede agregar una opción final+ denominada De Otro 9odo+ cu5a secuencia de instrucciones asociada se ejecutar6 sólo si el &alor almacenado en la &ariable no coincide con ninguna de las opciones anteriores#
$epetitivas !a3os %ientras La instrucción 9ientras ejecuta una secuencia de instrucciones mientras una condición sea &erdadera#
%ientras -condici,n 0acer -instrucciones Fin%ientras
&Al ejecutarse esta instrucción+ la condición es e&aluada# Si la condición resulta &erdadera+ se ejecuta una &e3 la secuencia de instrucciones 1ue forman el cuerpo del ciclo# Al finali3ar la ejecución del cuerpo del ciclo se &uel&e a e&aluar la condición 5+ si es &erdadera+ la ejecución se repite# Estos pasos se repiten mientras la condición sea &erdadera# Note 1ue las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca+ si al e&aluar por primera &e3 la condición resulta ser falsa# Si la condición siempre es &erdadera+ al ejecutar esta instrucción se produce un ciclo infinito# A fin de e&itarlo+ las instrucciones del cuerpo del ciclo deben contener alguna instrucción 1ue modifi1ue la o las &ariables in&olucradas en la condición+ de modo 1ue 4sta sea falsificada en algFn momento 5 as finalice la ejecución del ciclo# El ejemplo Adi&inaNumero le da al usuario . intentos para adi&inar un nFmero generado aleatoriamente+ utili3ando esta estructura para &erificar si el usuario acierta el nFmero o si se agotan los intentos#
!a3os $epetir La instrucción Repetir->asta ue ejecuta una secuencia de instrucciones asta 1ue la condición sea &erdadera#
$epetir -instrucciones 0asta 4ue -condici,n
Al ejecutarse esta instrucción+ la secuencia de instrucciones 1ue forma el cuerpo del ciclo se ejecuta una &e3 5 luego se e&alFa la condición# Si la condición es falsa+ el cuerpo del ciclo se ejecuta nue&amente 5 se &uel&e a e&aluar la condición# Esto se repite asta 1ue la condición sea &erdadera# Note 1ue+ dado 1ue la condición se e&alFa al final+ las instrucciones del cuerpo del ciclo ser6n ejecutadas al menos una &e3# Adem6s+ a fin de e&itar ciclos infinitos+ el cuerpo del ciclo debe contener alguna instrucción 1ue modifi1ue la o las &ariables in&olucradas en la condición de modo 1ue en algFn momento la condición sea &erdadera 5 se finalice la ejecución del ciclo# Si se utili3a sintaxis flexible (&er Opciones del PSeudocódigo* se permite opcionalmente utili3ar 9ientras ue en lugar de >asta ue+ de modo 1ue el conjunto de acciones contenidas en el bucle se ejecuta mientras 1ue la condición sea &erdadera# Notar 1ue la palabra ue es la 1ue diferencia el uso de la palabra 9ientras en la estructura repetir de la estructura 9ientras# Es decir+ si se omite la palabra 1ue se considera como el comien3o de un bucle 9ientras en lugar de el final de un bucle Repetir#
!a3os Para La instrucción Para ejecuta una secuencia de instrucciones un nFmero determinado de &eces#
Para -varia/le -5 -inicial 0asta -6inal Con Paso -paso 0acer -instrucciones FinPara
Al ingresar al blo1ue+ la &ariable &ariableM recibe el &alor inicialM 5 se ejecuta la secuencia de instrucciones 1ue forma el cuerpo del ciclo# Luego se incrementa la &ariable &ariableM en pasoM unidades 5 se e&alFa si el &alor almacenado en &ariableM superó al &alor finalM# Si esto es falso se repite asta 1ue &ariableM supere a finalM# Si se omite la cl6usula Con Paso pasoM+ la &ariable &ariableM se incrementar6 en .# Si se abilita la sintaxis flexible en las configuración del lenguaje se pueden utili3ar dos alternati&as# La primer &ariante consiste en reempla3ar el operador de asignación por la palabra cla&e Desde! Para &ariableM Desde inicialM >asta finalM Con Paso pasoM >acer ### De esta forma+ la lectura de la sentencia resulta m6s ob&ia# Adem6s+ con sintaxis flexible+ si no se especifica el paso pero el &alor final es menor al inicial+ el bucle recorrer6 los &alores en orden in&erso como si el paso fuera -.# La segunda &ariante solo sir&e para recorrer arreglos de una o m6s dimensiones# Se introduce con la construcción Para Cada seguida de un identificador+ la palabra cla&e De 5 otro identificador! Para Cada elementoM De ArregloM >acer ### El segundo identificador debe corresponder a un arreglo# El primero ser6 el 1ue ir6 &ariando en cada iteración# El ciclo reali3ar6 tantas iteraciones como elementos contenga el arreglo 5 en cada uno el primer identificador ser&ir6 para refererirse al elemento del arreglo en cuestión# El ejemplo Promedio utili3a un bucle de este tipo para leer N &alores num4ricos con los cuales calcula un promedio# El ejemplo Para utili3a las tres &ariantes de este tipo de bucles para recorrer un arreglo#
Tipos de Datos Simples 7 rreglos 1. Tipos de Datos Simples Existen tres tipos de datos b6sicos! Num4rico! numeros+ tanto enteros como reales# Para separar decimales se utili3a el punto# Ejemplos! ., ,/ -,#/ /#.) Lógico! solo puede tomar dos &alores! :ERDADERO o ;ALSO# Caracter! caracteres o cadenas de caracteres encerrados entre comillas (pueden ser dobles o simples*# Ejemplos ?ola? =ola mundo= ?.,/? ?;ALSO? ?etc? •
•
•
Los tipos de datos simples se determinan autom6ticamente cuando se crean las &ariables# Las dos acciones 1ue pueden crear una &ariable son la lectura(LEER* 5 la asignacion(-*# Por ejemplo+ la asignación =A-I= est6 indicando implcitamente 1ue la &ariable A ser6 una &ariable num4rica# 2na &e3 determinado el tipo de dato+ deber6 permanecer constante durante toda la ejecución del procesoI en caso contrario el proceso ser6 interrumpido# Opcionalmente+ se puede declarar una &ariable num4rica como entera con la instrucción DE;GNGR# En este caso+ todo &alor no entero 1ue se lea o asigne a la misma ser6 truncado Definición de &ariables La instrucción definir permite explicitar el tipo de una o m6s &ariables# Esta definición puede ser opcional u obligatoria dependiendo de la configuración del lenguaje# La sintaxis es! Definir &arlM + &ar,M + ### + &arNM Como REAL"ENTERO"LOHGCO"CARACTERUI 2na &ariable debe definirse antes de ser utili3ada por primera &e3# Los arreglos+ se definen utili3ando su identificador (sin subndices ni dimensiones* antes o despu4s de dimensionarlos+ 5 el tipo aplica para todos los elementos del mismo (5a 1ue se trata de una estructura de datos omog4nea*# Los tipos posi/les son NU%E$#2 NU%E$IC#2 $E!2 ENTE$#2 !#"IC#2 C$CTE$2
TE8T#2 CDEN. NU%E$#2 NU%E$IC# 7 $E! son sinónimos para el tipo de datos num4rico b6sico+ 1ue puede almacenar tanto nFmeros reales como enteros# El tipo ENTERO es una especiali3ación 1ue sólo permite almacenar &alores enterosI cual1uier &alor no entero 1ue se lea o asigne en una &ariable de este tipo ser6 truncado# 2na &ariable de tipo LOHGCO sólo puede tomar los &alores :ERDADERO 5 ;ALSO+ pero cuando se lee una &ariable 5a definida como lógica+ el usuario puede ingresar tambi4n las abre&iaciones : 5 ;+ o 5 .# C$CTE$2 TE8T# 7 CDEN son sinónimos para definir &ariables de tipo caracter# Estas pueden contener cero+ uno o m6s caracteres arbitrarios 5 no tienen una longitud m6xima# Si se declara una &ariable de este tipo 5 en una lectura el usuario ingresa un nFmero o un &alor lógico+ se asignar6 una cadena 1ue contiene el texto ingresado (ejemplo! =.=+ =:ERDADERO=+ etc*# Si se intenta asignar a una &ariable 5a definida un dato de un tipo incorrecto se producir6 un error en tiempo de ejecución#
&. rreglos Los arreglos son estructuras de datos omog4neas (todos sus datos son del mismo tipo* 1ue permiten almacenar un determinado nFmero de datos bajo un mismo identificador+ para luego referirse a los mismos utili3ando uno o m6s subndices# Los arreglos pueden pensarse como &ectores+ matrices+ etc# Para poder utili3ar un arreglo+ primero es obligatorio su dimensionamientoI es decir+ declarar los rangos
de sus subndices+ lo cual determina cuantos elementos se almacenar6n 5 como se acceder6 a los mismos#
Dimensionamiento La instrucción Dimension permite declarar un arreglo+ indicando sus dimensiones#
Dimension -identi6icador 9-mal2...2-maN;< Esta instrucción define un arreglo con el nombre indicado en indentificadorM 5 N dimensiones# Los N par6metros indican la cantidad de dimensiones 5 el &alor m6ximo de cada una de ellas# La cantidad de dimensiones puede ser una o m6s+ 5 la m6xima cantidad de elementos debe ser una expresión num4rica positi&a# Si se utili3an arreglos en base + al declarar un arreglo de+ por ejemplo . elementos+ los ndices de elementos &6lidos &an de a .)I mientras 1ue si se utili3an arreglos en base . los ndices &6lidos &an de . a .# Esto se configura en el cuadro de Opciones del PSeudocódigo# Se pueden declarar m6s de un arreglo en una misma instrucción+ separ6ndolos con una coma (+*# Dimension ident.M (max..M+###+max.NM*+###+ ident9M (max9.M+###+max9NM* Por ejemplo declarar un arreglo de . posiciones! Dimension A .U Ejemplo de un arreglo de . enteros 1ue son cargados en el mismo 5 luego mostrados!
Proceso rreglo Dimension =1>?< De6inir Como Entero< De6inir i Como Entero< Para i-51 0asta 1> Con Paso 1 0acer Escri/ir @De un numero@< !eer =i?< FinPara Para i-51 0asta 1> Con Paso 1 0acer Escri/ir @El numero en la posicion: @ i @ es: @ =i?< FinPara FinProceso
EAemplos en Pseint En el siguiente ejemplo se intenta caclular el promedio de . numeros+ obser&a bien el codigo+ copialo a Pseint 5 luego fijate si es correcto sino identifica los problemas 5 resuel&elos!
Proceso Promedio ""Calcula el promedio de una lista de numeros Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI
Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI ""Declaro una &ariable promedio para asignarle el promedio promedio-n.7n,7n/7n)7n7nV7nW7n07nX7n. " .I ""9uestro el promedio Escribir =El promedio es! =+promedioI ;inProceso ,# En este otro ejemplo se trata de mostrar los primeros numeros pares+ a3 lo mismo 1ue en el ejemplo anterior+ copia el codigo en pseint 5 fijate si es correcto# Proceso NumerosPares ""9uestra los numeros pares del al Escribir =Gngrese un numero!=I Leer xI Repetir ""la funcion 9OD calcula el resto de la di&ision por ,+ si es cero entonces es par Si x 9OD , % Entonces Escribir =Numero! =+xI ;inSi >asta ue x % Escribir =2ltimo Numero! =+xI Escribir =;in de listado=I ;inProceso /# Este algoritmo intenta mostrar los numeros del . al .+ ace lo mismo 1ue en los ejemplos anteriores+ fijate si es correcto Proceso Repetir.al. "">acer un pseudocodigo 1ue imprima los numeros del . al . c - 9GENTRAS c . >ACER ESCRGBGR cI ;GN9GENTRAS ESCRGBGR =ultimo ciclo! = cI
ESCRGBGR =;in de repeticion=I ;inProceso )# Este codigo es el mismo 1ue el ejercicio anterior pero utili3a la estructura Repetir - >asta+ Y;unciona$+ a3 lo mismo 1ue en los ejercicios anteriores+ busca los errores Proceso Repetir.al.conRepetir "">acer un pseudocodigo 1ue imprima los numeros del . al . c - Repetir ESCRGBGR cI >asta ue c . ESCRGBGR =ultimo ciclo! = cI ESCRGBGR =;in de repeticion=I ;inProceso # En el siguiente codigo se 1uiere mostrar los numeros del . al + a3 lo mismo busca los errores Proceso Repetir.al.conRepetir "">acer un pseudocodigo 1ue imprima los numeros del . al en orden decreciente c - . Repetir ESCRGBGR cI >asta ue c % ESCRGBGR =ultimo ciclo! = cI ESCRGBGR =;in de repeticion=I ;inProceso V# Reali3ar un algoritmo 1ue pida / numeros+ &erifi1ue 1ue sean positi&os+ luego calcule el promedio 5 bus1ue el ma5or de todos# W# Reali3ar un algoritmo 1ue pida un numero 5 luego calcule la rai3 cuadrada del mismo# 0# Reali3ar un algoritmo 1ue muestre los primeros numeros pares# 2na persona debe reali3ar un muestreo con N personas para determinar el promedio de ""peso de los nios+ jó&enes+ adultos 5 &iejos 1ue existen en su 3ona abitacional# Se ""determinan las categoras con base en la siguiente tabla! Proceso PesoPromedio ""Gniciali3o a los contadores para edad 5 peso numeroNios-I numeroAdolescentes-I numeroo&enes-I numeroAdultos-I
numero:iejos-I pesoNios-I pesoAdolescentes-I pesoo&enes-I pesoAdultos-I peso:iejos-I pesoPromedioNios -I pesoPromedioAdolescentes -I pesoPromedioo&enes -I pesoPromedioAdultos -I pesoPromedio:iejos -I numeroPersonas-I Escribir =Gngresar cantidad de personas!= Leer N Repetir ""Pido el peso 5 la edad de la persona Escribir ?De el peso de la persona?I Leer pesoI Escribir ?De la edad de la persona?I Leer edadI "":eo en 1ue categoria de edad esta la persona Si (edad M% 5 edad %.* Entonces numeroNios-numeroNios 7 .I ""aado . nio a esta categoria pesoNios-pesoNios 7 pesoI ""sumo al contador de peso de los nios el nio encontrado ;inSi Si (edad M% .. 5 edad %.W* Entonces numeroAdolescentes-numeroAdolescentes 7 .I ""aado . adolescente a esta categoria pesoAdolescentes-pesoAdolescentes 7 pesoI ""sumo al contador de peso de los adolescentes el adolescente encontrado ;inSi Si (edad M% .0 5 edad %,X* Entonces numeroo&enes-numeroo&enes 7 .I ""aado . o&enes a esta categoria pesoo&enes-pesoo&enes 7 pesoI ""sumo al contador de peso de los o&enes el o&enes encontrado ;inSi Si (edad M% / 5 edad %X* Entonces numeroAdultos-numeroAdultos 7 .I ""aado . o&enes a esta categoria pesoAdultos-pesoAdultos 7 pesoI ""sumo al contador de peso de los o&enes el o&enes encontrado ;inSi Si (edad M% V* Entonces numero:iejos-numero:iejos 7 .I ""aado . :iejos a esta categoria peso:iejos-peso:iejos 7 pesoI ""sumo al contador de peso de los :iejos el :iejos encontrado ;inSi
numeroPersonas-numeroPersonas 7 .I >asta ue numeroPersonas % N ""Calculo el promedio de cada categoria Si numeroNios M Entonces pesoPromedioNios - pesoNios " numeroNiosI ;inSi Si numeroAdolescentes M Entonces pesoPromedioAdolescentes - pesoAdolescentes " numeroAdolescentesI ;inSi Si numeroo&enes M Entonces pesoPromedioo&enes - pesoo&enes " numeroo&enesI ;inSi Si numeroAdultos M Entonces pesoPromedioAdultos - pesoAdultos " numeroAdultosI ;inSi Si numero:iejos M Entonces pesoPromedio:iejos - peso:iejos " numero:iejosI ;inSi Escribir ?Peso Promedio nios! ? pesoPromedioNiosI Escribir ?Peso Promedio nios! ? pesoPromedioAdolescentesI Escribir ?Peso Promedio nios! ? pesoPromedioo&enesI Escribir ?Peso Promedio nios! ? pesoPromedioAdultosI Escribir ?Peso Promedio nios! ? pesoPromedio:iejosI ;inProceso 9atrices en Pseint 9atrices en pseint Tal como en excel 1ue existen filas 5 columnas por cada celda 1ue contiene un &alor+ tambien en pseint se puede crear una matri3+ para lo cual se deben crear dos indices para saber cual es la fila 5 columna donde se ubicara un &alor# Proceso 9atri3 ""Primero se crea la matri3 de , x , 5 se define su tipo+ asi como los dos indices para la fila 5 columna Dimension 9 ,+,UI Definir 9+G+ como EnteroI "" Leer &alores+ a1ui se cargan los &alores en cada celda Para -. >asta , >acer Para G-. >asta , >acer Escribir ?Gngrese &alor para indice ?+G+?+ en columna ?++?!? Leer 9G+U ;inPara ;inPara
"" 9ostrar &alores de cada celda Para G-. >asta , >acer Para -. >asta , >acer Escribir ?El &alor para indice ?+G+?+ en columna ?++?es !? 9G+UI ;inPara ;inPara ;inProceso
Tra/aAo Practico de Pseint .# Escribir un pseudocódigo 1ue escriba J>ola 9undo<# ,# Escribir un Pseudocódigo de un programa 1ue permita leer la edad 5 peso de una persona 5 posteriormente imprimirla# /# Escribir un Pseudocódigo 1ue calcule el 6rea de un tri6ngulo recibiendo como entrada el &alor de base 5 altura# )# Escribir Pseudocódigo 1ue calcule el 6rea de un crculo# # Escribir Pseudocódigo 1ue dados , &alores de entrada imprima siempre la di&isión del ma5or entre el menor# V# Escribir Pseudocódigo 1ue lea de entrada / nFmeros 5 1ue indi1ue cual es el ma5or de ellos# W# Escribir un Pseudocódigo 1ue lea / nFmeros los cuales significan una feca (da+ mes+ ao*# Comprobar 1ue sea &6lida la feca+ si no es &6lido 1ue imprima un mensaje de error+ 5 si es &6lida imprimir el mes con su nombre# 0# Escribir un Pseudocódigo 1ue pida la edad 5 el sexo 5 dependiendo si es ombre o mujer 5 si puede &otar o no# X# Escribir un algoritmo 1ue realice un menF de opciones+ utili3ando la estructura SegFnK>acer+ para reali3ar este algoritmo se debe consultar la a5uda + esto es ir al menF A5uda dentro del 6rbol de a5uda a la opción Pseudocodigo+ luego Expresiones 5 elegir ;unciones+ all a5 una lista de las funciones 1ue se pueden aplicar# Se debe pedir un nFmero para reali3ar c6lculos con las opciones 5 un nFmero de opción para elegir una de las funciones 5 mostrarla en pantalla# El algoritmo debe pedir un nFmero de opción 5 un nFmero para reali3ar el c6lculo+ luego con la estructura segFn se debe mostrar Si es la opción . la ra3 cuadrada de ese nFmero pedido Si es la opción , la &alor absoluto de ese nFmero pedido Si es la opción / la logaritmo natural de ese nFmero pedido Si es la opción ) la Exponencial de ese nFmero pedido Si es la opción la redondeo de ese nFmero pedido Si no es ninguna de las opciones anteriores entonces se muestra un nFmero al a3ar# .# Se debe mostrar los primeros nFmeros pares pero en orden in&erso utili3ando las estructuras repetiti&as+ Para+ 9ientras 5 Repetir# ,# Se desea con&ertir las calificaciones alfab4ticas A+ B+ C 5 D a calificaciones num4ricas )+ + V 5 W+ respecti&amente# (2tili3ar Segun >acer* ./# Dado un &alor introducido por teclado+ escribir el nombre del da de la semana+ de forma 1ue represente su posición dentro de la semana# .)#Leer un nFmero entre uno 5 die3 5 &isuali3ar si es par o impar#
.# Calcular las soluciones de una ecuación de segundo grado# ((-b7ra3(b8b-)8a8c**",8a*I .V#Contar los nFmeros positi&os introducidos mediante teclado# Detener el algoritmo al leer un nZ cero o negati&o# .W# Escribir los nFmeros del uno al cien+ al dereco 5 al re&4s utili3ando las estructuras de control! Repetir+ Para 5 9ientras .0# Gntroducir las notas de ) alumnos 5 obtener el porcentaje de aprobados# (Bucle controlado por contador*# .X# Algoritmo 1ue calcule el cubo de un entero dado ,# Obtener el seno 5 el coseno de un 6ngulo expresado en radianes+ mediante el uso de funciones# ,.# Desarrolle un algoritmo 1ue realice la sumatoria de los nFmeros enteros comprendidos entre el . 5 el .+ es decir+ . 7 , 7 / 7 K# 7 .# ,,# Crear un arreglo llamado nFmeros 1ue almacene los siguientes datos! ,+ .)+ 0+ + + .X 5 ) ,/# Crear un arreglo de posiciones 5 ll4nelo con los nFmeros 1ue el usuario desee# ,)# Crear un arreglo llamado nombres 5 1ue almacene los siguientes nombres de personas! uan+ Pedro+ mara+ >umberto 5 Oscar# ,# Llenar un arreglo con nombres de personas# Preguntar al usuario cuantos datos desea ingresar# ,V# Crear un arreglo de . nFmeros llamado arreglo.+ luego crear otro arreglo de . nFmeros llamado arreglo,+ almacenar los . nFmeros en cada arreglo# Luego sumar los dos arreglos+ el resultado se debe guardar en otro arreglo llamado resultado# ,W# Llenar un &ector de . posiciones con nFmeros aleatorios entre . 5 . ,0# Llenar un &ector con nFmeros enteros (nFmeros positi&os ó negati&os*# 9ostrar la cantidad de nFmeros positi&os 1ue a5 en dico arreglo# ,X# Crear un arreglo de . nFmeros llamado arreglo.+ luego crear otro arreglo de . nFmeros llamado arreglo,+ almacenar los . nFmeros en cada arreglo# Luego multiplicar los dos arreglos+ el resultado se debe guardar en otro arreglo llamado resultado# /# Crear un arreglo de . nFmeros llamado arreglo.+ luego crear otro arreglo de . nFmeros llamado arreglo,+ almacenar los . nFmeros en cada arreglo# Luego restar los dos arreglos+ el resultado se debe guardar en otro arreglo llamado resultado# /.# Crear un arreglo de . nFmeros llamado arreglo.+ luego crear otro arreglo de . nFmeros llamado arreglo,+ almacenar los . nFmeros en cada arreglo# Luego di&idir los dos arreglos+ el resultado se debe guardar en otro arreglo llamado resultado# /,# En el siguiente ejemplo se intenta calcular el promedio de . nFmeros+ obser&a bien el código+ copialo a Pseint 5 luego fjate si es correcto sino identifica los problemas 5 resu4l&elos! Proceso Promedio ""Calcula el promedio de una lista de nFmeros Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI
Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI Escribir =Gngrese un numero!=I Leer nI ""Declaro una &ariable promedio para asignarle el promedio promedio-n.7n,7n/7n)7n7nV7nW7n07nX7n. " .I ""9uestro el promedio Escribir =El promedio es! =+promedioI ;inProceso //# En este otro ejemplo se trata de mostrar los primeros nFmeros pares+ a3 lo mismo 1ue en el ejemplo anterior+ copia el codigo en pseint 5 fjate si es correcto# Proceso NumerosPares ""9uestra los nFmeros pares del al Escribir =Gngrese un numero!=I Leer xI Repetir ""la función 9OD calcula el resto de la di&ision por ,+ si es cero entonces es par Si x 9OD , % Entonces Escribir =Numero! =+xI ;inSi >asta ue x % Escribir =2ltimo Numero! =+xI Escribir =;in de listado=I ;inProceso /)# Este algoritmo intenta mostrar los nFmeros del . al .+ ace lo mismo 1ue en los ejemplos anteriores+ fjate si es correcto Proceso Repetir.al. "">acer un pseudocodigo 1ue imprima los nFmeros del . al . c - 9GENTRAS c . >ACER ESCRGBGR cI
;GN9GENTRAS ESCRGBGR =ultimo ciclo! = cI ESCRGBGR =;in de repeticion=I ;inProceso /# Este código es el mismo 1ue el ejercicio anterior pero utili3a la estructura Repetir - >asta+ Y;unciona$+ a3 lo mismo 1ue en los ejercicios anteriores+ busca los errores Proceso Repetir.al.conRepetir "">acer un pseudocodigo 1ue imprima los nFmeros del . al . c - Repetir ESCRGBGR cI >asta ue c . ESCRGBGR =ultimo ciclo! = cI ESCRGBGR =;in de repeticion=I ;inProceso /V# En el siguiente código se 1uiere mostrar los nFmeros del . al + a3 lo mismo busca los errores Proceso Repetir.al.conRepetir "">acer un pseudocodigo 1ue imprima los nFmeros del . al en orden decreciente c - . Repetir ESCRGBGR cI >asta ue c % ESCRGBGR =ultimo ciclo! = cI ESCRGBGR =;in de repeticion=I ;inProceso /W# Reali3ar un algoritmo 1ue pida / nFmeros+ &erifi1ue 1ue sean positi&os+ luego calcule el promedio 5 bus1ue el ma5or de todos# /0# Reali3ar un algoritmo 1ue pida un nFmero 5 luego calcule la ra3 cuadrada del mismo# /X# Reali3ar un algoritmo 1ue muestre los primeros nFmeros pares#
Datos 7 Baria/les Datos 7 tipos de datos #/Aetivos Los problemas resueltos anteriormente sólo buscan representar un conjunto de acciones a tomar dependiendo de la situación actual# Este es el objeti&o de las estructuras de control# A tra&4s de ellas puede decidirse+ durante el algoritmo+ cu6l es el rumbo de acción a seguir# Sin embargo+ existen situaciones en las 1ue es preciso representar información adicional especfica del problema a resol&er# Por ejemplo+ podra resultar de inter4s saber la cantidad de &eces 1ue se apagó el orno mientras se estaba orneando una pi33a o la cantidad de pasos reali3ados por el robot asta encontrar una flor# El objeti&o de este captulo es incorporar las erramientas necesarias para lograr representar 5 utili3ar esta información#
Temas a tratar •
•
•
•
•
•
•
•
•
•
•
•
•
•
Conceptos de Control 5 Datos# Representación de los Datos# :ariables [ Sintais para la declaraci,n de varia/les.
Tipos de datos. [ Tipo de dato num4rico (numero*# [ Tipo de dato lógico (boolean*# Es1uema de un Programa en :isual Da :inci# 9odificación de la información representada# Ejemplos# Comparaciones# Representación de m6s de un dato dentro del programa# Conclusiones# Ejercitación#
'.1 Conceptos de Control 7 Datos >asta aora se a insistido en las instrucciones 1ue constitu5en un algoritmo# El orden de lectura de dicas instrucciones+ constitu5e el control del algoritmo# Normalmente la lectura del control de un algoritmo+ 1ue tambi4n puede representarse gr6ficamente+ indica el orden en 1ue se ir6n ejecutando las instrucciones 5 como consecuencia de ello+ 1u4 es lo 1ue ese algoritmo ace# Retomemos el ejemplo del captulo ,+ ejercicio X#
EAemplo &.: Escriba un programa 1ue le permita al robot recorrer la a&enida W asta encontrar una es1uina 1ue no tiene flores# Al finali3ar debe informar en 1u4 calle 1uedó parado# Por simplicidad+ suponga 1ue esta es1uina seguro existe# programa Cap,EjemploX comen3ar iniciar
Pos(W+.* mientras >a5;lorEnLaEs1uina mo&er Gnformar( PosCa * ;in Si 1uisi4ramos saber cu6ntas cuadras recorrió el robot+ necesitaramos considerar dica cantidad como un dato# 2n dato es un elemento u objeto de la realidad 1ue los algoritmos representan 5 son capaces de modificar 5 procesar# Cuando se resuel&en problemas con computadora+ mucas &eces se modeli3an los objetos reales mediante objetos m6s abstractos+ representables 5 entendibles sobre una computadora# Es importante entender 1ue el mecanismo de resolución de problemas in&olucra generalmente una transformación o un procesamiento de los datos+ manejado por el control del algoritmo#
'.& $epresentaci,n de los Datos Como se dijo anteriormente+ los algoritmos modifican objetos de la realidad# La representación de dicos objetos estar6 dada por sus caractersticas principales o por la información 1ue nos interese conocer de ellos# En el caso del Fltimo ejemplo &isto+ sólo nos concentramos en representar las cuadras recorridas por el robot+ 5 dejamos de lado la cantidad de flores 5 papeles de cada es1uina &isitada# Es decir+ los datos a representar son a1uellos de inter4s especfico para resol&er ese problema# Si adem6s de contar la cantidad de cuadras recorridas+ necesit6ramos contar la cantidad de flores en todas las es1uinas &isitadas+ sera necesario representar esta información dentro del algoritmo# Por lo tanto+ se comen3ar6 extendiendo la notación empleada en el algoritmo para dar lugar a las declaraciones de los datos 1ue resultan rele&antes al problema#
'.' Baria/les Adem6s de su capacidad de mo&imiento 5 de recoger o depositar flores 5 papeles+ el robot posee la abilidad de manejar datos 1ue le permiten representar ciertos atributos de los problemas 1ue debe resol&er# Por ejemplo+ es capa3 de calcular la cantidad de flores 1ue lle&a en su bolsa o recordar si en una es1uina dada aba m6s flores 1ue papeles# En general+ durante la ejecución de un programa es necesario manipular información 1ue puede cambiar continuamente# Por este moti&o+ es imprescindible contar con un elemento 1ue permita &ariar la información 1ue se maneja en cada momento# Este elemento es lo 1ue se conoce como &ariable# 2na &ariable permite almacenar un &alor 1ue puede ser modificado a lo largo del programa# Dico &alor representa un dato rele&ante para el problema a resol&er# Dentro de un mismo programa pueden utili3arse tantas &ariables como sean necesarias#
'.'.1 Sintais para la declaraci,n de varia/les Se denominan identificadores a los nombres descripti&os 1ue se asocian a los datos (&ariables* para representar+ dentro del programa+ su &alor# En el lenguaje del robot+ existe una sección dentro del programa donde se declaran las &ariables 1ue se &an a utili3ar# La sintaxis es la siguiente! programa nombre del programa
&ariables \indi1ue a1u las &ariables a utili3ar] comen3ar \sentencias 1ue indican el recorrido del robot] ;in Notemos 1ue se a incorporado una sección para la declaración de las &ariables entre la lnea 1ue contiene el nombre del programa 5 la palabra comen3ar# El es1uema de un programa+ en :isual Da :inci+ 1ue utili3a &ariables sera el siguiente! programa Cap,EjemploX &ariables nombre:ariable comen3ar \sentencias] fin Aora 1uedan distinguidos dentro del programa dos sectores! un sector superior donde se declaran las &ariables de inter4s 5 un sector inferior donde se detallan las instrucciones del programa# Si en el ejemplo antes &isto se 1uisiera contar la cantidad de cuadras recorridas asta encontrar una es1uina sin flor+ entonces deberamos modificar el programa agregando en la 3ona de declaración de &ariables un dato 1ue permita manejar 5 procesar esa información# :eamos como 1uedara! programa Cap,EjemploX &ariables cantidadCuadras (8* comen3ar \sentencias] ;in (8* Tener en cuenta 1ue esta declaración de &ariables es aFn incompleta dado 1ue nos 1uedan por &er algunos temas adicionales antes de completarla#
'.( Tipos de datos Gndependientemente del lenguaje de programación 1ue se utilice+ la definición de un tipo de dato implica considerar tres aspectos fundamentales 1ue lo caracteri3an! Gdentificar cu6les son los &alores 1ue puede tomar un dato# Definir cu6les son las operaciones 1ue pueden aplicarse sobre los datos de este tipo# Gndicar cu6les son las relaciones de orden 1ue permiten compararlos# Se utili3ar6 este mecanismo para definir los dos tipos de datos con los 1ue trabaja :isual Da:inci# •
•
•
•
'.(.1 Tipo de dato numrico 9nmero; Los elementos de este tipo de dato son los nFmeros enteros -/+ -,+ -.+ + .+ ,+ /+ ### #
2na computadora sólo puede representar un subconjunto finito de &alores+ con lo cual existir6 un nFmero m6ximo 5 un nFmero mnimo# Dicos &alores estar6n determinados por la cantidad de memoria 1ue se utilice para representarlo# En el ambiente :isual Da:inci+ el nFmero m6ximo 1ue se puede representar es ,/. % ,.)W)0/V)W 5 el mnimo es -,/. % -,.)W)0/V)W# Las operaciones &6lidas para los nFmeros son! suma+ resta+ multiplicación 5 di&isión entera# Estas operaciones en el lenguaje :isual Da :inci se simboli3an como! 7+ -+ 8+ " respecti&amente# Si el resultado de alguna operación sobrepasara el lmite superior permitido para los elementos del tipo numero+ se dice 1ue ocurre un o&erflo' 5 si se encuentra por debajo del mnimo se dice 1ue ocurre underflo'#
;igura /#.! O&erflo' Algunos lenguajes detectan el o&erflo' 5 el underflo' como error+ otros lo ignoran con&irtiendo el &alor resultado en un &alor &6lido dentro del rango# En el caso del :isual Da :inci esto se manifiesta a tra&4s de mensajes como el de la figura /#.# Las relaciones de orden entre nFmeros son! igual+ menor+ ma5or+ menor o igual+ ma5or o igual 5 distinto# En la tabla /#. se indica la sintaxis de cada uno de ellos as como un ejemplo de aplicación# Relación Sintaxis Ejemplo Ggualdad % A%B 9enor /8CD 9a5or M CM,8B 9enor o igual % A (, 8 C 7 )* 9a5or o igual M% (B 7 C* M D Distinto M A M B Tabla /#.! Relaciones de Orden para nFmeros Tener en cuenta 1ue en la tabla /#. A+ B+ C 5 D son &ariables num4ricas# Para declarar una &ariable num4rica deber6 utili3arse el sector de declaraciones# En el ejemplo de contar las cuadras (programa cap,EjemploX*+ para completar la declaración del dato cantidadCuadras 1ue nos aba 1uedado pendiente+ aora reali3amos lo siguiente! programa Cap,EjemploX &ariables cantidadCuadras! numero comen3ar \sentencias] ;in Donde numero indica al lenguaje del robot 1ue la &ariable ser6 de tipo num4rico+ 5 esto implica 1ue sus &alores entrar6n en el rango especificado anteriormente 5 1ue podr6 utili3ar cual1uiera de las operaciones &6lidas para el tipo numero# Dado 1ue el robot es capa3 de reali3ar c6lculos con sus &ariables num4ricas+ &eamos otro ejemplo donde se declaran dos &ariables num4ricas! programa numerico &ariables nro. ! numero
nro, ! numero comen3ar iniciar nro. !% ,/ (.* nro, !% / (,* Gnformar ( nro. 8 nro, * (/* Gnformar ( , " / * ()* fin La lnea marcada con (.* utili3a el operador de asignación 1ue &eremos en una sección posterior# El operador de asignación en el lenguaje :isual Da :inci se representa con un dos puntos igual (!%* 5 permite dar &alor a una &ariable# En el caso de (.* le est6 dando el &alor ,/+ 5 en el caso de(,* le est6 dando el &alor /# En la lnea marcada con (/* se abrir6 en pantalla una &entana mostrando el &alor VX (resultante de la instrucción Gnformar* 5 la lnea (,* &isuali3ar6 el &alor 0# Notemos 1ue la di&isión es entera por lo 1ue la parte fraccionaria+ sin importar su &alor+ ser6 ignorada# En la ma5ora de los programas 1ue se resol&er6n a lo largo de este curso+ el uso de las &ariables num4ricas se &er6 restringido a operaciones sobre nFmeros enteros positi&os como por ejemplo! informar cantidad de pasos dados+ cantidad de flores recogidas+ cantidad de &eces 1ue ocurrió un determinado eco+ etc# /#)#, Tipo de dato lógico (boolean* Este tipo de dato lógico puede tomar uno de los dos siguiente &alores! :erdadero o ;also# En :isual Da:inci est6n denotados por : 5 ;# Si se utili3an &ariables de tipo booleano se puede asignar en ellas el resultado de cual1uier expresión lógica o relacional# programa &ariablesLogicas &ariables esPositi&o ! boolean identicos ! boolean comen3ar iniciar identicos !% (PosCa % PosA&* esPositi&o !% (PosCa M .* fin En este ejemplo+ la &ariable identicos guardar6 el &alor : (&erdadero* si el robot se encuentra ubicado en una es1uina en la cual el &alor de la a&enida coincide con el &alor de la calle 5 guardar6 ; (falso* para cual1uier otra situación# Del mismo modo+ la &ariable esPositi&o guardar6 el &alor ; si est6 ubicado sobre la calle . 5 en cual1uier otro caso+ guardar6 :# :eamos el siguiente problema 1ue permite ejemplificar el uso de este tipo de &ariables# Ejemplo /#.! El robot debe ir de (.+.* a (.+,* 5 debe informar si en (.+.* a5 flor o no# programa Cap/Ejemplo. &ariables abia;lor ! boolean comen3ar iniciar \registremos si a5 flor o no en (.+.* ]
abia;lor !% >a5;lorEnLaEs1uina mo&er Gnformar (abia;lor* fin En este caso la &ariable lógica permite registrar : o ; segFn si en (.+.* a5 flor o no# Luego+ al posicionar el robot en (.+,* el &alor almacenado es informado# El objeti&o de este sencillo ejemplo es mostrar la posibilidad de la &ariable lógica de guardar el resultado de la e&aluación de una condición (en este caso >a5;lorEnLaEs1uina* para usarlo con posterioridad# Esto tambi4n puede aplicarse a cual1uier proposición 5a sea atómica o molecular# Analicemos el siguiente ejemplo! Ejemplo /#,! Recoger todas las flores de la es1uina (..+.*# Si logra recoger al menos una flor+ ir a (.+.* 5 &aciar de flores la bolsaI sino informar 1ue no se a recogido ninguna flor en (..+.*# En este caso no se re1uiere conocer la cantidad de flores recogidas# Sólo se necesita saber si se a recogido alguna flor en (..+.* o no# Por lo tanto+ en lugar de utili3ar una &ariable num4rica+ se utili3ar6 una &ariable booleana para representar esta situación# Reali3aremos un es1uema del algoritmo a utili3ar para este problema! programa Cap/Ejemplo, comen3ar \antes de empe3ar a recoger+ anali3ar 5 recordar si en (..+.* a5 flor o no] \tomar todas las flores de (..+.*] si (originalmente en (..+.* aba flor* \ir a (.+.* 5 &aciar la bolsa] sino \informar 1ue no se recogió ninguna flor] fin En el lenguaje del robot esto se escribe de la siguiente forma! programa Cap/Ejemplo, &ariables florEn..! boolean comen3ar iniciar Pos(..+.* \antes de empe3ar a recoger+ anali3ar 5 recordar si en (..+.* a5 flor o no] florEn.. !% >a5;lorEnLaEs1uina \tomar todas las flores de (..+.*] mientras >a5;lorEnLaEs1uina tomar;lor si florEn.. \ir a (.+.* 5 &aciar la bolsa] Pos(.+.* mientras >a5;lorEnLaBolsa depositar;lor sino \informar ; indicando 1ue no se recogió ninguna] Gnformar (florEn..*
;in /# 9odificación de la información representada >asta aora sólo se a manifestado la necesidad de conocer expresamente cierta información# Para tal fin se a asociado un nombre+ tambi4n llamado identificador+ a cada dato 1ue se desee representar# Cada uno de estos identificadores ser6 utili3ado como un lugar para almacenar la información correspondiente# Por lo tanto+ ser6 necesario contar con la posibilidad de guardar un &alor determinado 5 posteriormente modificarlo# Se utili3ar6 como lo indicamos en los ejemplos de la sección anterior la siguiente notación! Gdentificador !% &alor a guardar El operador !% se denomina operador de asignación 5 permite registrar o Jguardar= el &alor 1ue aparece a dereca del smbolo en el nombre 1ue aparece a i31uierda de dico smbolo# En el ejemplo Cap,EjemploX al comen3ar el recorrido debe indicarse 1ue no se a caminado ninguna cuadra# Para esto se utili3ar6 la siguiente notación! cantidadCuadras !% A partir de esta asignación el &alor del dato cantidadCuadras representar6 (o contendr6* el &alor # En ocasiones ser6 necesario recuperar el &alor almacenado para ello se utili3ar6 directamente el identificador correspondiente# Por ejemplo+ la instrucción Gnformar (cantidadCuadras* permitir6 informar el Fltimo &alor asignado a cantidadCuadras# Tambi4n+ puede utili3arse el operador de asignación para modificar el &alor de un identificador tomando como base su &alor anterior (el 1ue fue almacenado pre&iamente*# Por ejemplo! cantidadCuadras !% cantidadCuadras 7 . Como se explicó anteriormente+ el operador !% permite asignar el &alor 1ue aparece a la dereca del smbolo al identificador 1ue est6 a la i31uierda del mismo# Sin embargo+ la expresión 1ue aora aparece a dereca no es un &alor constante sino 1ue debe ser e&aluado ANTES de reali3ar la asignación# El lado dereco indica 1ue debe recuperarse el &alor almacenado en cantidadCuadras 5 luego incrementarlo en .# El resultado de la suma ser6 almacenado nue&amente en cantidadCuadras# 2tili3ando lo antes expuesto el ejemplo del Cap,EjemploX se reescribe de la siguiente manera! programa Cap,EjemploX &ariables cantidadCuadras! numero comen3ar iniciar \ >asta aora no se camino ninguna cuadra ] cantidadCuadras!% (.* mientras (a5;lorEnLaEs1uina* \ Gncrementar en . la cantidad de cuadras dadas ] cantidadCuadras!% cantidadCuadras 7 . (,* mo&er \ Gnformar la cantidad de cuadras dadas] Gnformar(cantidadCuadras* fin Notemos 1ue la instrucción (.* se encuentra fuera de la iteración por lo 1ue se ejecutar6 una Fnica
&e3 al comien3o del algoritmo# Esta asignación inicial tambi4n se denomina iniciali3ación del identificador# La instrucción (,* se ejecuta cada &e3 1ue el robot a&an3a una cuadra# Su efecto es recuperar el Fltimo &alor de cantidadCuadras+ incrementarlo en . 5 &ol&er a guardar este nue&o &alor en cantidadCuadras# De esta forma+ el Fltimo &alor almacenado ser6 una unidad ma5or 1ue el &alor anterior# Obser&emos la importancia 1ue tiene para (,* la existencia de (.*# La primera &e3 1ue (,* se ejecuta+ necesita 1ue cantidadCuadras tenga un &alor asignado pre&iamente a fin de poder reali3ar el incremento correctamente# ;inalmente+ (/* permitir6 conocer la cantidad de cuadras recorridas una &e3 1ue el robot se detu&o#
/#V Ejemplos Ejemplo /#/! El robot debe recorrer la a&enida . asta encontrar una es1uina con flor 5 papel# Al finali3ar el recorrido se debe informar la cantidad de cuadras recorridas asta encontrar dica es1uina# Suponga 1ue la es1uina seguro existe# Para poder resol&erlo es necesario identificar los datos u objetos 1ue se desean representar a tra&4s del algoritmo# En este caso interesa conocer la cantidad de cuadras ecas+ 5 por lo tanto+ es preciso registrar la cantidad de cuadras 1ue se &an a&an3ando asta encontrar la es1uina buscada# El algoritmo tendra la siguiente forma! programa Cap/Ejemplo/ &ariables cuadras! numero comen3ar iniciar cuadras!% (.* mientras ^(a5;lorEnLaEs1uina* _ ^(a5PapelEnLaEs1uina* (,* \anotar 1ue se caminó una cuadra mas] cuadras!%cuadras7. (/* mo&er Gnformar (cuadras* ()* fin En (.* indicamos 1ue no se a recorrido ninguna cuadra asta el momento (por eso se le asigna el &alor cero a la &ariable cuadras*# En (,*+ se indica 1ue mientras no a5a flor ó no a5a papel en la es1uina+ el recorrido debe continuar+ esto es+ la iteración terminar6 cuando encuentre una es1uina con flor 5 papel# En (/* indicamos 1ue se a recorrido una cuadra m6s# En ()* informamos el Fltimo &alor 1ue 1uedó almacenado en cuadras+ lo cual representa la cantidad de cuadras ecas en el recorrido# YCómo modifico el algoritmo anterior si la es1uina puede no existir$ Ejemplo /#)! Recoger e informar la cantidad de flores de la es1uina (.+.*# Para poder resol&erlo es necesario identificar los datos u objetos 1ue se desean representar en el algoritmo# En este caso interesa conocer la cantidad de flores de la es1uina (.+.* 5 por lo tanto es preciso registrar la cantidad de flores 1ue se &an tomando asta 1ue la es1uina 1ueda sin flores# El algoritmo tendra la siguiente forma! programa Cap/Ejemplo) &ariables
flores! numero comen3ar iniciar flores!% (.* mientras (a5;lorEnLaEs1uina* tomar;lor \registramos 1ue se tomó una flor] flores!% flores7. (,* Gnformar (flores* (/* fin En (.* indicamos 1ue no se a recogido ninguna flor asta el momento# En (,* indicamos 1ue se a recogido una nue&a flor de la es1uina# En (/* informamos el Fltimo &alor 1ue 1uedó almacenado en flores# >a5 1ue recordar 1ue el punto (,* 5 la instrucción tomar;lor est6n dentro de una estructura de control de iteración (mientras* 5 esto se repetir6 asta 1ue no a5a m6s flores en la es1uina+ con lo cual en cada &uelta de esta iteración se incrementar6 en uno el &alor de la &ariable flores# Ejemplo /#! Contar e informar la cantidad de flores de la es1uina (.+.*# En este caso sólo nos interesa saber la cantidad de flores de la es1uina+ a diferencia del ejercicio anterior en donde debamos adem6s recoger las flores de la es1uina (es decir dejar la es1uina sin flores*# Por lo tanto+ se debe tener en cuenta 1ue para poder contar las flores &amos a tener 1ue tomarlas+ 5 una &e3 1ue tomamos todas las flores de la es1uina+ debemos &ol&er a depositarlas para 1ue no se modifi1ue la cantidad original de flores de la es1uina# Gnicialmente el algoritmo tendra la siguiente forma! programa Cap/Ejemplo &ariables flores!numero comen3ar iniciar flores!% mientras (a5;lorEnLaEs1uina* tomar;lor \registramos 1ue se tomó una flor] flores!% flores7. \888Debemos depositar las flores juntadas de la es1uina888] (.* Gnformar (flores* fin En (.* debemos encontrar la forma de poder depositar todas las flores 1ue juntamos de la es1uina# Para esto podemos &er 1ue si en la es1uina+ por ejemplo+ ubo flores+ entonces la &ariable flores tiene el &alor + por lo tanto la &ariable flores contiene la cantidad de flores 1ue debo depositar en la es1uina# Resumiendo+ sabemos cu6ntas flores a5 1ue depositar en la es1uina+ esta cantidad es la 1ue a 1uedado almacenada en la &ariable flores# El programa se reescribir6 de la siguiente manera! programa Cap/Ejemplo &ariables flores!numero comen3ar iniciar flores!% (.*
mientras (a5;lorEnLaEs1uina* tomar;lor \registramos 1ue se tomó una flor] flores!% flores7. (,* \ depositamos las flores juntadas de la es1uina] repetir flores (/* depositar;lor Gnformar (flores* ()* fin En (.* indicamos 1ue no se a recogido ninguna flor asta el momento# En (,* indicamos 1ue se a recogido una nue&a flor de la es1uina# Para 1ue puedas comprender la instrucción (/*+ tenemos 1ue tener en cuenta dos cuestiones# La primera es 1ue en (/* se utili3a una estructura de control repetiti&a para depositar la cantidad de flores# Esto se puede acer 5a 1ue conocemos el &alor 1ue 1ueremos usar en la estructura repetir+ ese &alor ser6 el almacenado en flores# La segunda es 1ue esta instrucción repetiti&a debe ubicarse fuera del mientras+ 5a 1ue de lo contrario+ por cada flor 1ue recoge el robot &ol&era a depositar 5 por lo tanto la estructura de control mientras nunca terminara# Otro efecto negati&o de poner el repetir dentro del mientras es 1ue la &ariable flores 1uedara finalmente con un &alor incorrect En ()* informamos el &alor 1ue contiene la &ariable flores# En este punto debemos prestar atención 1ue aber utili3ado la &ariable flores en el repetir no implica 1ue la misma se a5a modificado+ esto es as+ por1ue la Fnica forma de modificar el contenido de una &ariable es por medio del operador!%# YPuede ocurrir 1ue el &alor de flores permane3ca en cero$ YSi el &alor de flores es cero+ 1ue ocurre con el repetir$ YSe puede reempla3ar la estructura de repetición Jrepetir flores<+ por Jmientras>a5;lorEnLaBolsa depositar;lor<$ Ejemplo /#V! Recoger todos los papeles de la es1uina (.+.* e informar la cantidad de papeles recogidos sólo si se an recogido al menos papeles# En este caso nos interesa saber la cantidad de papeles de la es1uina+ a diferencia del ejercicio anterior# 2na &e3 1ue el robot a juntado todos los papeles+ si la cantidad de papeles obtenida es ma5or o igual a (al menos *+ debemos informar la cantidad recogida# El algoritmo sera el siguiente! programa Cap/EjemploV &ariables papeles!numero comen3ar iniciar papeles!% mientras (a5PapelEnLaEs1uina* tomarPapel \registramos 1ue se tomo un papel] papeles!%papeles7. si (papeles M% * Gnformar (papeles* (.* fin Debemos tener en cuenta 1ue la instrucción (.* est6 dentro de una instrucción de selección 5 por lo tanto sólo se ejecuta si la condición es &erdadera+ es decir+ si la &ariables papeles 1uedó en un
&alor M%# Ejemplo /#W! Recoger e informar todos los papeles de la a&enida .# En este caso nos interesa saber la cantidad de papeles de la a&enida# 2na &e3 1ue emos juntado todos los papeles de la a&enida+ debemos informar la cantidad recogida# El algoritmo sera el siguiente programa Cap/EjemploW &ariables papeles!numero comen3ar iniciar papeles!% repetir XX (.* mientras (a5PapelEnLaEs1uina* (,* tomarPapel \registramos 1ue se tomo un papel] papeles!%papeles7. mo&er \procesamos la Fltima es1uina] mientras (a5PapelEnLaEs1uina* (/* tomarPapel \registramos 1ue se tomo un papel] papeles!%papeles7. Gnformar (papeles* ()* fin En (.* indicamos la estructura de control para recorrer toda una a&enida# Como se sabe la cantidad de cuadras de una a&enida completa es XX# En (,* contamos todos los papeles de la es1uina en donde se encuentra parado el robot# En (/* contamos los papeles de la Fltima es1uina+ es decir+ la (.+.*# En ()* informamos el &alor de todos los papeles recogidos en el recorrido+ el cual se encuentra almacenado en papeles# Yu4 modificara en el algoritmo si se 1uisiera informar los papeles de cada es1uina$ /#W Representación de m6s de un dato dentro del algoritmo En las secciones anteriores se presentó la necesidad de almacenar información adicional para responder a los re1uerimientos del problema# Es importante reconocer 1ue los algoritmos desarrollados en los captulos . 5 ,+ sólo se referan al funcionamiento de las estructuras de control 5 no al manejo de los datos# Contar con la posibilidad de asociar un identificador a un &alor es e1ui&alente a poder Jregistrar= un dato para recuperarlo o modificarlo posteriormente# Como resumen de todo lo &isto asta el momento se presentar6 un ejemplo m6s complejo+ repitiendo la explicación del proceso de modificación de la información 5 las posibles comparaciones a utili3ar# Ejemplo /#0! El robot debe recoger e informar la cantidad de flores 5 papeles de la es1uina (.+.*# En este ejercicio debemos representar dos datos+ la cantidad de flores de la es1uina 5 la cantidad de papeles de la es1uina# Para esto+ &amos a necesitar dos &ariables una 1ue nos permita contar la cantidad de flores de la es1uina 5 otra 1ue nos permita contar la cantidad de papeles# El algoritmo 1uedara de la siguiente forma!
programa Cap/Ejemplo0 &ariables papeles!numero flores!numero comen3ar iniciar papeles!% (.* flores!% (,* mientras (a5PapelEnLaEs1uina* (/* tomarPapel \registramos 1ue se tomó un papel] papeles!%papeles7. mientras (a5;lorEnLaEs1uina* ()* tomar;lor \registramos 1ue se tomó una flor] flores !% flores 7 . Gnformar (flores* (* Gnformar (papeles* (V* fin En (.* indicamos 1ue no se a recogido ningFn papel toda&a# Lo mismo ocurre con las flores en (,*# En (/* contamos todos los papeles 1ue existen en la es1uina# Lo mismo acemos en ()* pero para las flores# En este punto podemos &er 1ue la cantidad de papeles de la es1uina &a almacen6ndose en la &ariable papeles 5 la cantidad de flores en la &ariable flores# En (* 5 (V* se informa el &alor de flores 5 papeles de la es1uina respecti&amente# Ejemplo /#X! 9odifi1ue el ejercicio anterior para 1ue el robot e&alFe cual de las cantidades (flores 5 papeles* resultó ma5or e informe dica cantidad# Siguiendo el ra3onamiento anterior+ luego de recoger 5 contar las flores 5 los papeles+ deberemos anali3ar cu6l de los dos &alores obtenidos es el ma5or e informar dico &alor# El algoritmo 1uedara de la siguiente forma! programa Cap/EjemploX &ariables papeles!numero flores!numero comen3ar iniciar papeles!% flores!% mientras (a5PapelEnLaEs1uina* tomarPapel papeles!%papeles7. mientras (a5;lorEnLaEs1uina* tomar;lor flores !% flores 7 . Expresión de Problemas 5 Algoritmos 2# N# L# P# \comparamos las cantidades recogidas] si (floresMpapeles* (.* Gnformar(flores*
sino Gnformar(papeles* fin En (.* se &erifica si la cantidad de flores es ma5or a la de papeles+ por medio de una estructura de selección+ en caso 1ue la condición resulte &erdadera se informa la cantidad de flores+ en cambio+ si la condición es falsa se informa la cantidad de papeles# Yu4 informa si ambas &ariables contienen el mismo &alor$ /#0 Conclusiones >asta a1u se a presentado la sintaxis de un algoritmo 1ue utili3a datos para la solución de un problema# Tambi4n se a mostrado cómo crear+ iniciali3ar 5 modificar estos datos en una solución# Contar con la posibilidad de representar información adicional al problema mejora la potencia de expresión del algoritmo+ 5a 1ue los atributos de los objetos con los 1ue opera podr6n estar reflejados en su interior# Tambi4n &imos 1ue para representar esta información el lenguaje :isual da :inci nos pro&ee dos tipos de datos! el tipo numero 5 el tipo logico# >asta a1u se an presentado los elementos 1ue componen un algoritmo! el control 5 los datos# De todo lo &isto+ entonces+ podemos concluir 1ue un algoritmo es una secuencia de instrucciones 1ue utili3a 5 modifica la información disponible con el objeti&o de resol&er un problema#
Ejercitación DAtos 5 :ariables .# Gndi1ue 1ue acen los siguientes programas considerando las diferentes situaciones 1ue podran presentarse! (a* i# todas las es1uinas de la a&enida V tienen al menos . flor ii# sólo la es1uina (V+,* tiene flor# iii# ninguna es1uina de la a&enida V tiene flor programa ue>ace. comen3ar iniciar Pos(V+.* mientras >a5;lorEnLaEs1uina ` (PosCa .* mo&er tomar;lor fin (b* i# todas las es1uinas de la a&enida tienen al menos . flor 5 . papel# ii# sólo la es1uina (V+,* tiene flor 5 ningFn papel+ las dem6s est6n &acas# iii# sólo la es1uina (V+,* tiene papel 5 no tiene ninguna flor+ las dem6s est6n &acas# i ninguna es1uina de la a&enida . tiene flor ni papel programa ue>ace/ &ariables nro ! numero comen3ar iniciar nro !% repetir . si ^(>a5;lorEnLaEs1uina _ >a5PapelEnLaEs1uina* nro !% nro 7 .
mo&er Gnformar(nro* fin ,# Programe al robot para 1ue informe la cantidad de flores 1ue a5 en (.+/* sin modificar el contenido de la es1uina# /# Programe al robot para 1ue informe la cantidad de papeles 1ue a5 en la calle W,# (a* Recogiendo todos los papeles# (b* Sin modificar el contenido de cada es1uina# )# Programe al robot para 1ue informe la cantidad de es1uinas &acas 1ue a5 en la ciudad# # Programe al robot para 1ue recorra la a&enida W, recogiendo una flor en cada es1uina# Si en alguna es1uina del recorrido no puede acerlo (a* debe continuar con la próxima es1uina asta completar la a&enida# (b* debe detenerse e informar en 1ue es1uina 1uedo parado# V# (a* Reali3ar un algoritmo 1ue permite al robot efectuar un recorrido en escalera+ comen3ando en (.+.* 5 terminando en (.+ .*# Cada escalón debe ser de una cuadra de lado# i# 2tili3ando repetir para controlar el final del recorrido# ii# 2tili3ando mientras para controlar el final del recorrido# (b* 9odifi1ue a#i* para 1ue el recorrido comience en (.+.* 5 termine en (.+*# (c* 9odifi1ue a#i* para 1ue el robot informe+ al terminar el recorrido+ la cantidad total de es1uinas &acas (sin flor ni papel* 1ue encontró# (d* 9odifi1ue c* para reali3ar el mismo recorrido pero aora con escalones de , cuadras de lado# YEn 1u4 es1uina termina el Fltimo escalón completo$ W# Escriba un programa 1ue le permita al robot caminar por la calle W asta encontrar , flores# >a5 como m6ximo una flor por es1uina# Seguro existen , flores# 0# Escriba un programa 1ue le permita al robot caminar por la calle W asta encontrar , flores# >a5 como m6ximo una flor por es1uina# Pueden no aber , flores# X# Escriba un programa 1ue le permita al robot caminar por la calle W asta encontrar , flores# Puede aber m6s de una flor por es1uina# Seguro existen , flores# .# El robot debe limpiar de papeles la calle /)# Al terminar el recorrido debe informar cuantas es1uinas tenan originalmente exactamente V papeles# ..# El robot debe limpiar la es1uina (0X+WV* de la siguiente forma! si contiene m6s papeles 1ue flores debe dejar solo un papel 5 si contiene m6s flores 1ue papeles debe dejar solo una flor# Si originalmente la es1uina est6 &aca o contiene igual cantidad de flores 1ue de papeles+ debe 1uedar &aca# .,# Programe al robot para 1ue recorra la calle , asta encontrar al menos . papeles# ./# Programe al robot para 1ue recorra la calle , asta encontrar . papeles 5 ) flores# .)# Programe al robot para 1ue recorra la calle , asta encontrar una es1uina con . papeles 5 ) flores# La es1uina seguro existe# .# Programe al robot para 1ue recorra el permetro de la ciudad e informe la cantidad de papeles recogidos# .V# Programe al robot para 1ue recorra el permetro de la ciudad e informe la cantidad de papeles recogidos en cada lado# .W# Programe al robot para 1ue recorra el permetro de la ciudad e informe la cantidad de papeles recogidos en cada es1uina# .0# Programe al robot para 1ue recorra el permetro de la ciudad e informe la cantidad de papeles recogidos en todo el permetro+ en cada lado 5 en cada es1uina#
Condiciones !,gicas2 el uso de la conAunci,n2 dis7unci,n 7 negacion Condiciones Lógicas. Proposiciones lógicas, simbolización y tablas de verdad Cuando se emplearon condiciones para definir las acciones a tomar en la selección y la iteración, como ser HayPapelEnLaBolsa, esta es una condición simple pero en la realidad las condiciones son compuestas y debe indicarse la forma en que pueden combinarse varias condiciones. Los ejercicios vistos hasta el momento fueron lo suficientemente simples como para poder ser resueltos con una pregunta sencilla. Sin embargo, en un problema real, esto no es así y se requiere combinar expresiones para poder representar una situación a evaluar. or esta causa se introducir!n y repasar!n algunos conceptos b!sicos de la lógica proposicional que permitir!n clarificar este aspecto, aplicados específicamente a problemas con el robot. "os de las estructuras de control ya vistas, selección e iteración, requieren para su funcionamiento, la evaluación de una condición. #stas condiciones se corresponden con lo que en t$rminos de lógica se conoce como proposiciones. %na proposición es una expresión de la cual tiene sentido decir si es verdadera o falsa, o sea es posible asignarle un valor de verdad &verdadero o falso, pero no ambos'. #jemplos de proposiciones ( ) * + &-erdad' La ampa es una nación. &also' %n tri!ngulo es menor que un círculo. &/o se le puede asignar un valor de verdad, por lo tanto no es proposición' #l color a0ul vale menos que una sonrisa &ídem anterior' 1ay una flor en la esquina &ser! verdadero ó falso dependiendo de si la flor se encuentra o no en la esquina' 1.
Proposiciones atómicas y moleculares
#n Lógica, el t$rmino atómico se utili0a con su significado habitual2 3algo que no puede ser dividido nuevamente4. %na proposición es considerada atómica si no puede ser descompuesta en otras proposiciones. #jemplos2 La casa es roja.
1oy es lunes. 1e llegado al final del recorrido. #stoy ubicado a 5 metros de altura. Cuando en una expresión se unen varias proposiciones atómicas se forma una proposición molecular o compuesta. "icha unión se reali0a mediante conectivos lógicos ó términos de enlace. #stos t$rminos de enlace son de gran importancia. 6anto es así, que se estudiar!n algunas reglas muy precisas para el uso de esta clase de t$rminos. Los t$rminos de enlace a utili0ar son los siguientes2 3y4, 3o4, 3no4. Los dos primeros se utili0an para conectar proposiciones atómicas7 en tanto que el conectivo 3no4, solamente se coloca frente a una proposición atómica. #jemplos2 o es cierto que la luna est$ hecha de queso verde. La vaca est! cansada y no dar! leche. 1ace calor ó hay mucha humedad. 1ay papel en la bolsa y hay papel en la esquina.
8esumiendo2 %na proposición es atómica si no tiene conectivos lógicos, en caso contrario es molecular. !.
"imbolización
9sí como en matem!tica se simboli0an las cantidades p ara facilitar el planteo y solución de problemas, tambi$n en este caso es importante simboli0ar las proposiciones atómicas, las moleculares y los conectivos lógicos con el objeto de facilitar las operaciones. Conectivo
Simboli0ación en -isual "a -inci
y
:
o
;
no
<
6abla (2 Conectivos lógicos ó t$rminos de enlace Se utili0ar!n letras min=sculas para simboli0ar las proposiciones atómicas2 E#emplos de simbolización de proposiciones atómicas 9yer fue un día ventoso. Si se considera p + 3ayer fue un día ventoso4, esta proposición puede ser simboli0ada como2 p. #se p!jaro vuela muy alto. Si se llama q + 3ese p!jaro vuela muy alto4, la proposición se simboli0a como2 q. osCa > (??. Si se llama r + 3osCa > (??4, la proposición se simboli0a como2 r.
9 continuación se aplicar! este mecanismo de simboli0ación a las proposiciones moleculares. #l proceso para simboli0arlas consiste en2 (. "eterminar cu!les son las proposiciones atómicas que la componen. @. Simboli0ar las proposiciones como se explicó an teriormente. 5. %nir las proposiciones con los conectivos ya vistos. or tal motivo, debe definirse un símbolo para cada uno de los conectivos. La tabla ( muestra la simboli0ación a utili0ar en cada caso. E#emplos de simbolización de proposiciones moleculares Auan es estudiante y es jugador de f=tbol. p + 3Auan es estudiante4 q + 3Auan es jugador de f=tbol4 Simboli0ando p & q
/o es cierto que osCa + (??. p + 3osCa+(??4 Simboli0ando < p 1ay flor en la esquina y hay papel en la bolsa, o hay papel en la esquina. p + 31ay flor en la esquina4 q + 3hay papel en la bolsa4 r + 3hay papel en la esquina4 9nalicemos, para resolver correctamente el ejemplo anterior debe tenerse en cuenta la aparición de la coma, la cual separa las dos primeras proposiciones de la tercera. Cuando se obtiene la simboli0ación debe respetarse ese orden. or lo tanto la simboli0ación sería2 &p : q' ; r /o hay flor en la bolsa, pero hay flor en la esquina. p + 3hay flor en la bolsa4 q + 3hay flor en la esquina4 Simboli0ando &< p : q' /otemos que la palabra pero act=a como el conectivo lógico 3y4. $ .%ablas de verdad.
Como se explicó previamente, una proposición es una expresión de la cual tiene sentido decir si es verdadera o falsa. ara poder anali0ar cualquier proposición molecular y decir qu$ valor de verdad tiene, es usual hacerlo a trav$s de lo que se conoce como tabla de verdad. La tabla de verdad de una proposición es, como su nombre lo indica, una tabla donde se muestran todas las combinaciones posibles de los valores de verdad de dicha proposición. $.1 Con#unción. %abla de verdad
"adas dos proposiciones cualesquiera p y q, la proposición molecular p : q representa la conjunción de p y q. La conjunción de dos proposiciones es cierta =nicamente en el caso en que ambas proposiciones lo sean.
"adas dos proposiciones cualesquiera p y q, si ambas son verdaderas, entonces p & q, que representa la conjunción de p y q, es verdadera. Cualquier otra combinación da como resultado una proposición molecular falsa. La tabla @.* representa la tabla de verdad de la conjunción p : q utili0ando las cuatro combinaciones posibles de valores de verdad para p y q. or lo tanto, si p : q es una proposición verdadera entonces p es verdadera y q tambi$n es verdadera. #n Lógica se pueden unir dos proposiciones cualesquiera para formar una conjunción. /o se requiere que el contenido de u na de ellas tenga relación con el contenido de la otra.
p
q
p: q
- -
-
-
-
6abla @2 Conjunción (p & q) #jemplos2 B es un n=mero par y divisible por 5. p + 3B es un numero par4 q + 3B es divisible por 54 p es verdadera y q tambi$n, por lo tanto p : q es verdadera. Suponiendo que el robot se encuentra situado en la esquina &(,(' p + 3osCa+(4 q + 3os9v+@4 p es verdadera y q es falsa, por lo tanto p : q es falsa. #l siguiente ejemplo muestra la aplicación de la conjunción en un algoritmo2 E#emplo 1& 1acer que el robot deposite, de ser posible, una flor en la esquina &*,*' en el caso que en dicha esquina no haya flores. programa #jemplo( si en &*,*' no hay flor en esa esquina y hay flor en la bolsa depositar esa florD variables p2boolean q2boolean comen0ar iniciar os&*,*' p2+1aylor#nLaEolsa q2+1aylor#nLa#squina si &&p' : <&q'' depositarlor fin
La selección utili0a la conjunción de dos proposiciones que, como se explicó anteriormente, para ser verdadera necesitar! que ambas proposiciones lo sean simult!neamente. #sto es, basta con que una de ellas sea falsa para que no se deposite una flor en la esquina. $.! 'isyunción. %abla de verdad
"adas dos proposiciones cualesquiera p y q, la proposición molecular p ; q representa la disyunción de p y q. La disyunción entre dos proposiciones es cierta c uando al menos una de dichas proposiciones lo es. La disyunción utili0a el t$rmino de enlace 3o4 en su sentido incluyente. #sto significa que basta con que una de las dos proposiciones sea verdadera para que la disyunción sea verdadera. "adas dos proposiciones cualesquiera p y q, su disyunción, p ; q, ser! falsa cuando ambas proposiciones sean falsas. La tabla 5 representa la tabla de verdad de la disyunción p ; q utili0ando las cuatro combinaciones posibles de valores de verdad para p y q. p
q
p; q
- - -
-
-
6abla 52 "isyunción (p v q) E#emplos @ es primo o es impar p + 3@ es primo4 q + 3@ es impar4 p es verdadera, q es falsa. Se deduce que p ; q es verdadera
Suponiendo que el robot se encuentra situado en la esquina &(,(' p + 3osCa+F4 q + 3os9v+@4 p es falsa, q es falsa. Se deduce que p ; q es falsa. #l siguiente problema puede resolverse aplicando la disyunción2 E#emplo !& hacer que el robot se mueva desde la esquina &*,G' a la esquina &*,((' en el caso que la esquina &*,G' no est$ vacía &se considera no vacía a aquella esquina que tiene al menos una flor o un papel'. programa #jemplo@ si en &*,G' hay flor o papel entonces se mueve a &*,(('D variables p2boolean q2boolean
comen0ar iniciar os&*,G' p2+1aylor#nLa#squina q2+1ayapel#nLa#squina si &&p' ; &q'' repetir * mover sino Hnformar&I#squina vacia no me puedo moverI' fin La selección utili0a la disyunción de dos proposiciones que, como se explicó anteriormente, para ser verdadera solo requiere que una de ellas sea verdadera. /ote que si la esquina &*,G' tiene flor y papel, el robot avan0a hasta la esquina &*,(('. La =nica forma de que el robot no avance es que la esquina est$ vacía, sin flor ni papel. $.$ egación. %abla de verdad "ada una proposición p, su negación < p, permitir! obtener el valor de verdad opuesto. #l valor de verdad de la negación de una proposición verdadera es falso y el valor de verdad de la negación de una proposición falsa es verdadero. "ada una proposición p, la tabla * representa los posibles valores de verdad de dos valores de verdad posibles de p.
p
-
-
6abla *2 /egación (~ p) Ejemplos p + 3#l n=mero J es divisible por 54 La proposición p es verdadera. La negación de p es2 < p + 3#l n=mero J no es divisible por 54 Se ve claramente que < p es falsa. Suponiendo que el robot se encuentra situado en la esquina &(,(' p + 3osCa+(4 La proposición p es verdadera. La negación de p es2