TRABAJO PRÁCTICO N 6 LENGUAJE PASCAL

Documentos relacionados
Trabajo Práctico 6 Funciones, Procedimientos y División de Problemas

Trabajo Práctico Nº 4 Iteración

Resolución de Problemas y Algoritmos Segundo cuatrimestre 2015 Clase 11: Construcción de primitivas (Funciones)

Trabajo Práctico N 9 Recursividad

Trabajo Práctico 7 Recursividad Versión 4

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

Trabajo Práctico 8 División de Problemas en Subproblemas Uso de Procedimientos y Funciones

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Módulo 8: Primitivas en Pascal

Módulo 7: Sentencias de control en Pascal

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

Dra. Jessica Andrea Carballido

Resolución de Problemas y Algoritmos

FUNDAMENTOS DE PROGRAMACIÓN LABORATORIO SESIÓN 2

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

PRÁCTICO N o 7. Lenguaje de Diseño (Tercera Parte): Modularización. Ejercicio 1: Teniendo en cuenta la resolución del ejercicio 7 del Práctico 6:

24/8/2018. cuota monto/cantcuotas

Práctico Nº 5 Tema: Lenguaje de Diseño (1 parte)

1. Lenguaje Pascal. 2. Módulos de un Programa. 3. Tipos de Datos más utilizados. 4. Declaración de Variables

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

28/08/2018. Dra. Jessica Andrea Carballido. cuota monto/cantcuotas

Dra. Jessica Andrea Carballido

Trabajo Práctico Nº 5 Repetición y Archivos

Resolución de Problemas y Algoritmos

Donde Condicion es una expresión booleana, es decir, que puede tomar el valor verdadero (true) o falso (false).

Estructuras de Programación

El diseño de un programa Jhon Jairo Padilla Aguilar, PhD.

Programación MODULAR: Subalgoritmos - funciones y procedimientos

FUNDAMENTOS DE OBJECT PASCAL

Cadenas de caracteres

Dra. Jessica Andrea Carballido

D L M M J V S

Trabajo Práctico 5 Funciones y Procedimientos. Archivos de Texto. Estrategias de resolución de problemas basadas en el uso de primitivas.

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

Primer Parcial. Programación 1 Instituto de Computación Año 2017

Tema 2. Tipos predefinidos

Ejercicios Unidad 5 Arreglos Resuelva cada problema a través de Arreglos y usando métodos:

SUBRANGO ENUMERADOS CONJUNTOS

Manual de turbo pascal

Ejercicios Tema 6. Funciones

Dra. Jessica Andrea Carballido

VARIABLES Y TIPOS DE DATOS

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Tema 18. Vectores o Tablas. Diego Gutiérrez

Elabore el análisis, diseño orientado a objetos e implementación de una aplicación de consola que resuelva las siguientes situaciones:

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Resolución de Problemas y Algoritmos

UNIVERSIDAD TECNOLÓGICA NACIONAL INGENIERIA EN SISTEMAS. Cátedra: ALGORITMOS Y ESTRUCTURAS DE DATOS UNIDAD Nº 3 DATOS TIPOS DE DATOS

Recursividad Definición

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

LISTADO DE PROBLEMAS TRIMESTRE 1

JavaScript: Variables

Laboratorio de Herramientas Computacionales

1. Escriba el siguiente código, compílelo y ejecútelo. Obtiene el resultado esperado? Modifíquelo para que se comporte como debe:

Arreglos y Subrangos

Iteración Diagrama de SINTAXIS: IF

Ordinales, Enumerados y Conjuntos

Primer Parcial. Programación 1 Instituto de Computación Año 2011

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Trabajo Práctico 5 Estructura Repetitiva

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Para entender la recursividad primero tenemos que entender la recursividad

Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 1

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

INFORMÁTICA. Práctica 4. Programación básica en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v2.3 (12.09.

ESTRUCTURAS DE CONTROL EN PHP

Arreglos y Subrangos

09/05/2018. Pasaje de Parámetros. Dra. Jessica Andrea Carballido. Manejo de memoria. Función o procedimiento?

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido

import math # Importa la libreria math, que permite utilizar operaciones y funciones matematicas

1. Escribir un algoritmo que resuelva A-B*((B+C) / (C-C 2 ). Considerar que no es posible la división por 0, detectar este caso y salvar el error.

Tema: Estructuras de Selección en C#.

GUIA DE EJERCICICIOS. 1.- Escribir un algoritmo que lea cuatro números e indique cual es el mayor

Centro Universitario UAEM Zumpango Ingeniería en Computación

Nombre. lógico. físico. Nombre lógico. a 12. Nombre. program Archivos; var a: file of integer; begin assign(a, arch.dat ); end.

Guía práctica de estudio 05: Pseudocódigo

Práctica 4 Especificación de problemas

Introducción a la Programación

BOLETÍN 5: Algoritmos II

Módulo. = Asignación = = Comp. de igualdad!= Com. de desigualdad <= Comp. menor o igual >= Comp. mayor o igual AND lógico OR lógica.

Funciones. Parámetros por valor

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programación

Prácticas de Lenguajes, Gramáticas y Autómatas

3. Conceptos elementales de programación 1. léxico. cadenas literales: cualquier cosa dentro de una línea

Nombre. Nombre. físico. Nombre lógico. lógico. a 12. program Archivos; var a: file of integer; begin assign(a, arch.dat ); end.

Valentín Moreno Programación en FORTRAN ESQUEMA DE SELECCIÓN

Enumerados, subrangos y tuplas

Transcripción:

TRABAJO PRÁCTICO N 6 LENGUAJE PASCAL En los casos en que considere necesario, divida el problema en subproblemas y justifique su decisión en implementarlos como procedimientos o como funciones. Ejercicio. a) Escriba en Pascal un procedimiento CartelMayor que muestre por pantalla la frase es un número mayor que cien y un procedimiento CartelMenor que muestre por pantalla la frase es un número menor que cien. b) Escriba en Pascal un procedimiento CartelPar que muestre por pantalla la frase es un número par y un procedimiento CartelImpar que muestre por pantalla la frase es un número impar. c) Utilizando los procedimientos anteriores, escriba un programa en Pascal que lea por teclado un número entero n, y muestre por pantalla los carteles adecuados. Ejemplos: Si n=24 debe mostrar: El número ingresado es un número menor que cien y es un número par. Si n=35 debe mostrar: El número ingresado es un número mayor que cien y es un número impar. Ejercicio2. a) Escriba en Pascal un procedimiento ImprimirUno que imprima en pantalla la palabra uno, un procedimiento ImprimirCero, que imprima la palabra cero. b) Escriba en Pascal un programa que lea por teclado un número n representando una secuencia de unos y ceros, y traduzca esa secuencia a palabras, utilizando los procedimientos anteriores. Por ejemplo, si n=00 debe imprimir: El número ingresado es uno cero uno uno cero. Ejercicio 3. Explicar cuál es la diferencia que existe entre un parámetro por valor y un parámetro por referencia. Ejercicio 4. Analizar cuáles de las llamadas detalladas a continuación (a-i) son correctas en base a las siguientes declaraciones. TYPE SubrangoEnteros=2..5; VAR w: Char; x: Integer; y: Real; z: SubrangoEnteros; PROCEDURE Proc(a,b: Integer; Var c: Char);... FUNCTION Funcion(a: Integer):Real;... Página de 2

FUNCTION Funcion2(VAR a: Real; b: SubrangoEnteros) :Integer;... a) Proc(7, X, w, w); b) Proc(2.4, 58, w); c) Proc(7, 5, 'c'); d) x:= Funcion(a); e) Funcion(x); f) x := Funcion2(y, 3); g) y := Funcion2(y, 3); h) x := Funcion2(y, 8); i) Proc(7, y, w); Ejercicio 5. Realizar una traza del siguiente programa. A qué conclusiones es posible arribar a partir de los valores finales de a y b? PROGRAM Test; VAR a, b: Integer ; PROCEDURE Ensayo(x: Integer; VAR y: Integer); x := x 00; y := y 00; END ; { Programa Principal } a := 0 ; b := 20 ; Ensayo(a,b); Writeln(a); Writeln(b); END. Ejercicio 6. Enunciar las definiciones de entornos globales, locales y no locales. Ejercicio 7. Indicar para el siguiente programa cuales son los identificadores visibles en cada entorno. Qué sucede en el caso de la variable global A? Es ésta visible en el procedimiento Bloque? y en Bloque2? Realizar una traza completa del programa Ambientes. PROGRAM Ambientes; VAR A: Integer; A2: Boolean; PROCEDURE Bloque3(A: Integer; VAR B2: Boolean); VAR C, D2: Integer; C:=0; D2:=5; A2:= false; Write(C,D2,A,B2); Página 2 de 2

PROCEDURE Bloque; VAR A, B2: Integer; PROCEDURE Bloque2; VAR C, B2: Integer; Write(A); A:=20; Bloque2; Write(A); { Ambientes } A:=200; A2:= true; Bloque; Bloque3(A,A2); END. Ejercicio 8. Considere el siguiente programa en Lenguaje Pascal: PROGRAM Entornos; TYPE NaturalCorto =..0000; VAR B,C: Integer; D,E: NaturalCorto; PROCEDURE OperarIds(C: Integer; VAR D:NaturalCorto); CONST K=20; VAR E: NaturalCorto; M: integer; FUNCTION SumarIds(P,B: Integer; G: NaturalCorto): Integer; SumarIds:= G E C B K P { OperarIds } E:= 3; D:= C 5 E; M:= SumarIds(E,B,D); D:= D M; { Entornos } B:=8; C:=3; D:=2; E:=; OperarIds(B,D); OperarIds(C,E); END. Página 3 de 2

Completar la siguiente tabla, indicando para cada identificador su entorno de referencia (no incluir identificadores ocultos) y a qué tipo corresponde. Luego, realizar una traza completa y detallada del programa. Identificadores globales Identificadores Locales Programa Entornos Procedimiento OperarIds Función SumarIds Nombre del Identificador Nombre del Identificador Nombre del Identificador Nombre del Identificador Nombre del Identificador Nombre del Identificador Nombre Definido en Nombre Definido en Nombre Definido en Identificadores No locales Ejercicio 9. a) Determinar qué hace cada procedimiento y evaluar si los parámetros usados son correctos (con respecto a la invocación correspondiente a cada caso). Si no lo son explicar por qué y reescribir el encabezamiento con los parámetros correctamente. PROGRAM Programa; VAR A,B: Integer; PROCEDURE Intercambio (x,y: Integer); VAR aux: Integer; aux := x; x := y; y := aux; A:=0; B:=20; Intercambio(A,B); END. PROGRAM Programa2; VAR A,B: Integer; PROCEDURE Potencia(x: Integer; VAR y: Integer); VAR aux: Integer; aux := y; y := ; WHILE (x>0) DO y := aux*y; x := x- B:=3; Potencia(2,B); END. Observación: Es muy importante saber diferenciar parámetros por valor de parámetros por referencia, como también en qué casos debe usarse cada uno. b) Responder en cada caso si usaría una función o un procedimiento y cuáles serían los parámetros por valor y por referencia. Justificar. Página 4 de 2

PROBLEMA Implementar una operación matemática (como sumar, multiplicar, potencia, raíz, etc.) Contar la cantidad de números entre un rango de dos números que cumplen una cierta condición. Ordenar de menor a mayor 5 números. Calcular las raíces reales o complejas de una ecuación cuadrática. Determinar si 5 números están ordenados de menor a mayor. PRO. FUN. Ejercicio 0. Dada la siguiente declaración de tipos: TMes =(enero,febrero,marzo,abril,mayo,junio,julio,agosto, septiembre,octubre,noviembre,diciembre) a) Escribir una función que dado un número entero devuelva el mes correspondiente. b) Confeccionar un procedimiento que dado un mes, lo muestre por pantalla. c) Utilizando los incisos anteriores, escribir un programa que lea por teclado un entero representando un mes y muestre por pantalla todos los meses que restan para finalizar el año. Por ejemplo, si el número ingresado es 6, debe mostrarse: El mes ingresado es junio. Restan los siguientes meses: julio, agosto, septiembre, octubre, noviembre, diciembre. Ejercicio. Desarrollar un programa que lea por teclado un caracter, y muestre por pantalla si el caracter ingresado fue una letra mayúscula, una letra minúscula, un dígito, un símbolo aritmético, un símbolo de puntuación, o cualquier otro símbolo. Ejercicio 2. Escribir un programa que lea por teclado un número entero n y permita descomponerlo en sus factores primos, mostrando por pantalla cada uno de ellos con sus respectivos exponentes (debe imprimirse a^b en lugar de a b ). Ejemplo: Si n = 8 deberá imprimir 2^3; Si n = 36 deberá imprimir 2^2 * 3^2 Realizar una traza del programa para n=26460. Ejercicio 3. Señalar cómo modificaría el Ejercicio del Práctico 5 si se pidiera hacer una función o procedimiento para resolver cada uno de los incisos del ejercicio y un único programa que utilice a dichas funciones o procedimientos para imprimir por pantalla los correspondientes mensajes. IDEA: Hacer que el programa muestre por pantalla un menú donde el usuario pueda escoger que operación desea realizar. Ej.: Si el usuario eligiese el inciso del ejercicio 3 el programa debería leer d y x, mandarlos a una función Dígito_Presente que devuelva True o False y, dependiendo de ese resultado, imprimir el correspondiente mensaje. Página 5 de 2

Ejercicio 4. Realizar funciones o procedimientos para: a) Contar la cantidad de dígitos de un entero. b) Dados dos números enteros, encontrar los dígitos comunes a ambos. Mostrar cada dígito común sólo una vez. Ej.: si los números son 83 y 233 debe mostrarse 3. c) Invertir los dígitos de un número dado. Ejercicio 5. Dados los siguientes tipos de datos TYPE TDíasSemana=(domingo, lunes, martes, miercoles, jueves, viernes, sabado); TMeses=(enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre); TDias =..3; TAnos = 0..99; a) Escribir un procedimiento en Pascal que transforme una fecha dada en días, meses y años en un longint. Ejemplo: si la fecha es 25 mayo 998 entonces devolver 2505998. Si la fecha es 5 junio 990 entonces devolver 506990. b) Confeccionar dos funciones MesAnterior y MesSiguiente, que dado el nombre de un mes devuelvan el nombre del mes anterior y del siguiente respectivamente. Por ejemplo: MesAnterior(enero) devuelve diciembre y MesSiguiente(diciembre) devuelve enero. Sugerencia: para este inciso y en el siguiente, es conveniente utilizar las funciones predefinidas de Pascal succ y pred. c) Escribir una función denominada Ayer y otra denominada Mañana que dado el nombre de un día devuelva el nombre del día de ayer y el de mañana respectivamente. Ej.: Ayer(martes) devuelve lunes, Ayer(domingo) devuelvea sabado, Mañana(lunes) devuelve martes. d) Desarrollar una función NúmeroMes, que dado un nombre de un mes devuelva el número asociado a él. Ej: NúmeroMes(agosto) devuelve 8. Sugerencia: usar la función predefinida de Pascal ord. e) Escribir una función NombreMes, que sea la inversa de la función del inciso anterior. f) Escribir un programa que permita ingresar por teclado un dia de la semana, lo almacene en una variable de tipo TDiasdeSemana y luego lo muestre por pantalla. Sugerencia: Desarrollar un procedimiento LeerDia y otro procedimiento MostrarDia. g) Desarrollar un programa idéntico al del inciso (f) pero utilizando ahora una función LeerDia en vez de un procedimiento. Ejercicio 6. a) Un número natural N se dice que está oculto en M si en M se encuentran todos los dígitos de N en el mismo orden. Por ejemplo, 23 está oculto en 72436 pero 23 no está oculto en 4524 ni en 4392. Diseñar una función Oculto que dado dos números naturales N y M determine si N está oculto en M. Página 6 de 2

b) Escribir un programa en Pascal que dado dos números naturales i y j, tal que i < j, obtenga la cantidad de pares (a,b), tal que i a j y i b j, que cumplan que a esté oculto en b. Ejercicio 7. Desarrollar un programa que calcule la edad de una persona en años, meses y días, a partir de la fecha actual y la de su nacimiento. Sugerencia: implementar una función en Pascal CumplíAños que dada la fecha de nacimiento y la actual (sin importar los años) devuelva true si la fecha de nacimiento es menor a la actual. Ejercicio 8. Una fecha puede ser almacenada en un única variable Longint, donde los dígitos menos significativos representan el año, los dos siguientes el mes y los dos primeros el día. Por ejemplo 30-6-994 se representaría como 3006994. Escriba un programa que lea por teclado un número entero, controle si representa una fecha válida y, en caso afirmativo, lo imprima por la pantalla como indica el siguiente ejemplo: Entrada: 3006994 Salida: 30 de Junio de 994. Ejercicio 9. a) Escribir un programa que lea del teclado una secuencia de números naturales terminada en la constante - imprima por pantalla el máximo y el mínimo número de la secuencia y sus respectivas posiciones dentro de la misma. Por ejemplo en 7 34 39 23 233 23 9 34 - el programa debería mostrar: Mínimo: 7 (Pos: ) y Máximo: 233 (Pos: 5). b) Si en lugar de leer números naturales desea numeros enteros Cómo indicaría el fin de la secuencia? Ejercicio 20. Desarrollar procedimientos para: a) Dado un dígito d, imprima por pantalla un renglón como el siguiente: 2 3... d... 3 2 Ej.: para d=5 debe imprimir 2 3 4 5 4 3 2 b) Dado un dígito d, imprima por pantalla una pirámide de d filas como se muestra a continuación para d=9 2 2 3 2 2 3 4 3 2 2 3 4 5 4 3 2 2 3 4 5 6 5 4 3 2 2 3 4 5 6 7 6 5 4 3 2 2 3 4 5 6 7 8 7 6 5 4 3 2 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 Página 7 de 2

Ejercicio 2. Escribir un programa que dado un dígito imprima el siguiente moño con el dígito dado en la posición central. Ejemplo: Para el dígito 5 debe imprimirse 9 2 8 9 2 3 7 8 9 2 3 4 6 7 8 9 2 3 4 5 6 7 8 9 2 3 4 6 7 8 9 2 3 7 8 9 2 8 9 9 Para el dígito 3 debe imprimirse 5 2 4 5 2 3 4 5 2 4 5 5 Ejercicio 22. Podemos dar la siguiente aproximación del número Beta: Beta 3 3 3 7 7 7 5 = * * * * * * * * * 5 5 5 9 9 9 3 3 3 * a) Escribir una función en Pascal que devuelva una aproximación del número Beta habiendo calculado n factores. Ejemplo: para n=4 debe calcular 3/ * 3/5 * 3/5 * 7/5. b) Confeccionar un procedimiento en Pascal que calcule una aproximación de Beta con un error dado y que también devuelva la cantidad de factores que debió utilizar para lograr tal aproximación. Ejercicio 23. Dado un valor de X tal que 0 < X < podemos resolver la serie binomial (X) -/2 se detalla a continuación: como ( X ) = X X 2 3 X 2 4 3 5 X 2 4 6 3 5 7 2 4 6 8 2 3 4 2 0 X a) Escribir una función que dado un X tal que 0 < X <, y un n perteneciente a los naturales unidos el cero devuelva el n-ésimo término de la serie binomial. b) Desarrollar un procedimiento en lenguaje de diseño que calcule una aproximación de (X) -/2 con un error dado. Ejercicio 24. a) En la siguiente sucesión de enteros: 2 4 5 0 7 25 47 T i notar que, salvo los 3 primeros términos, el i-ésimo término se obtiene como T i =T i-2 3*(T i-3 ). Escribir una función en Pascal que dado un número natural n, devuelva el n-ésimo término de la sucesión. Página 8 de 2

b) Realizar un programa en Pascal para aproximar la siguiente serie por un error menor a un Epsilon dado: 2 Ejercicio 25. Escribir una función que resuelva : 4 5 0 T i hasta alcanzar una aproximación con error menor que un Epsilon dado o bien hasta llegar a la aproximación m-ésima. Ejercicio 26. Dada la siguiente definición de tipos: TYPE TMeses = (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembe); TEstaciones = (otono,invierno,primavera,verano); TPeríodo = (inicio, mediados, fines); Sabemos que cada estación del año dura 3 meses. Podemos relacionar al º mes de cada estación con inicio de estación, al 2º con mediados de estación y al último con fines de estación. otoño invierno primavera verano Principios del 2/3 al 20/4 del 2/6 al 20/7 del 2/9 al 20/0 del 2/2 al 20/ Mediados del 2/4 al 20/5 del 2/7 al 20/8 del 2/0 al 20/ del 2/ al 20/2 Fines del 2/5 al 20/6 del 2/8 al 20/9 del 2/ al 20/2 del 2/2 al 20/3 7 4 P = 2 2 3 2 2 5 2 7 2 a) Definir tipos de datos adecuados para trabajar con fechas. b) Escribir una función es Pascal que dada una fecha del tipo definido en el inciso anterior, devuelva a qué estación del año corresponde. c) Escribir un procedimiento en Pascal que dado una fecha devuelva a qué estación del año corresponde y a qué período de la misma. Por ejemplo, si la fecha es 3 de marzo, deberá devolver verano como estación y fines como período. d) Confeccionar un procedimiento en Pascal que para cada estación del año imprima el nombre de la estación y la fecha en que comienza y la fecha en que finaliza. e) Escribir un programa en Pascal que lea por teclado una fecha e imprima en pantalla a qué estación corresponde y a qué período de la misma. 2 25 47 Página 9 de 2

Ejercicio 27. Considerar la siguiente definición de tipos en Pascal junto con la función ClaseCaracter: TYPE TLetra = (vocal, consonante, separador, digito, simbolo); FUNCTION ClaseCaracter(ch:char):TLetra; CASE ch OF {Case } 'A'..'Z', 'a'..'z': CASE ch OF {Case 2} 'A','E','I','O','U','a','e','i','o','u': ClaseCaracter:=vocal; ELSE ClaseCaracter:=consonante; {Case 2} ' ',',',';',':': ClaseCaracter:=separador; '0'..'9': ClaseCaracter:=digito; ELSE ClaseCaracter:=simbolo; {Case } { ClaseCaracter } a) Qué usos piensa que podría tener esta función? b) Escribir un programa que permita leer una cadena de caracteres, terminada en punto, y que cuente la cantidad de vocales, consonantes, separadores, dígitos y símbolos que aparecen en ella. Ejercicio 28. Escribir un programa que permita determinar cuál es la primera frase en un texto dado que tiene más de x palabras que comienzan con in. Utilice en cada caso las funciones y procedimientos ya realizados. En el caso en que no haya ninguna frase con x palabras que comienzan con in debe devolver cero. Ejercicio 29. Una línea de datos consiste en una secuencia de caracteres terminada en un punto. En esta secuencia podrá haber una subsecuencia entre paréntesis. Escribir un programa en Pascal que permita leer la línea y copiarla en la salida, omitiendo la subsecuencia entre paréntesis. Entrada: AB(CDE)FG. Salida : ABFG. El programa deberá considerar todos los casos posibles. Ejercicio 30. Escribir una función en Pascal que permita leer una secuencia parentizada de caracteres y que indique si dicha secuencia de caracteres está correctamente parentizada. Observación: Una secuencia de caracteres esta correctamente parentizada si no tiene paréntesis, o si tiene la misma cantidad de paréntesis que abren ( que de paréntesis que cierran ), y además, cada paréntesis que cierra, se corresponde con uno que abre que apareció antes en la secuencia. Página 0 de 2

Ejercicio 3. Confeccionar funciones en Pascal para: a) Mayusculizar un caracter. Por ejemplo: si el caracter es a, la función devolverá A. Si el carácter no corresponde a una letra minúscula, la función deberá que devolver el carácter dado. b) Minusculizar un caracter. Por ejemplo: si el caracter es A, la función devolverá a. Si el carácter no corresponde a una letra mayúscula, la función deberá que devolver el carácter dado. c) Transformar un caracter dado en un entero si es que se trata de alguno de los caracteres 0,, 2,..., 9. Ej.: si el caracter es 5, la función devolverá 5. Tenga en cuenta que antes de invocar esta función, deberá validar el dato de entrada, es decir, no podrá invocar a esta función con un carácter fuera del rango '0'..'9'. Para hacer este ejercicio tenga en cuenta los siguientes códigos ASCII : Caracter ASCII 0 48 49...... 9 57...... A 65 B 66...... Z 90...... A 97 B 98 Z 22 Ejercicio 32. a) Escriba un programa en Pascal que imprima por pantalla todas las secuencias de tres caracteres de la forma CVC, donde C representa una consonante y V representa un vocal. Para este caso, sólo necesita considerar letras minúsculas. Por ejemplo, entre las secuencias impresas por el programa deberán estar: bot, mar, pat, pit, rap, rip, top... b) Generalice el procedimiento anterior de la siguiente forma: asuma la siguiente declaración de tipos: type TipoCaracter = (consonante, vocal); Luego, escriba un procedimiento en Pascal que reciba tres parámetros de tipo TipoCaracter y que imprima por pantalla todas las secuencias de tres caracteres que respeten los parámetros recibidos. Por ejemplo: si recibe como entrada consonante, vocal, vocal, entonces deberá imprimir todas las secuencias de tres caracteres de la forma CVV, donde C Página de 2

representa una consonante y V representa un vocal; entre las secuencias mostradas deberán aparecer: baa, bee, buo, leo, tio... Ejercicio 33. Una frase está constituida por palabras separadas por uno o más espacios en blanco. La frase termina en un punto. Un texto está constituido por frases. El texto termina con un asterisco y una palabra es una sucesión de letras cualquiera. Escribir programas en Pascal para:. Devolver la posición en la oración de la palabra con mayor cantidad de vocales. 2. Determinar cuántas palabras en una frase tienen más de n vocales. 3. Determinar cuántas frases hay con más de n vocales en un texto dado. 4. Determinar si una palabra comienza con el prefijo in. 5. Determinar si una frase tiene alguna palabra que comienza con el prefijo in. 6. Determinar cuántas palabras de una frase comienzan con el prefijo in. Página 2 de 2