SUBRANGO ENUMERADOS CONJUNTOS

Documentos relacionados
Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Elementos de un programa en C

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Estructura de datos (arreglos) Vectores y Matrices

Programación en Pascal

Estructura de Datos: Archivos

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

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

Estatutos de Control C# Estatutos de Decisión (Selección)

2.2 Nombres, Ligado y Ámbito

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

El lenguaje C. 1. Identificadores, constantes y variables

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Funciones como Subprogramas en C++

Computación II. Introducción a Visual Basic

Principios de Computadoras II

GUÍA BÁSICA DE SCHEME v.4

PASCAL y TURBO PASCAL

Guía práctica de estudio 05: Diagramas de flujo

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Operando1 operador de relación Operando2

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Fundamentos de Programación Visual Basic

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Curso de Programación Avanzada en C

Aprender a programar con Turbo Pascal. Turbo pascal

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

Programas ejemplo. Lenguaje de Programación PASCAL. Miguel Murguía

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

UTN FRR Ingeniería en Sistemas de Información Algoritmos y Estructuras de Datos Archivos Directos GUIA DE ESTUDIO: ARCHIVOS DIRECTOS

: Algorítmica y Estructura de Datos I

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

LENGUAJE. Tema 2 Elementos de un programa

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

ARCHIVOS de TEXTO en PASCAL

Estructura Selectiva Múltiple

Tema 3.- Predicados y sentencias condicionales

Instituto Tecnológico de Celaya

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

Tema 2 Introducción a la Programación en C.

//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui

Academia técnica de computación A.T.C.

FACULTAD DE INGENIERÍA

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Curso de Java Introducción a la Programación III

Estructuras de Control

Estructuras de control

Java para no Programadores

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

Programación en java. Estructuras algorítmicas

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Java para programadores

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

Módulo 5: Lenguaje Pascal

Práctica de constantes, expresiones y operadores. Programación en C 1

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Vamos a profundizar un poco sobre los distintos tipos de datos que podemos introducir en las celdas de una hoja de cálculo

Este es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.

Estructura If Esta sentencia, es considerada de alternativa doble (si se cumple condición entonces..., sino... / If... then... else... ).

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

TEMA 4. ESTRUCTURAS DE CONTROL

4. Operadores Operador asignación

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Expresiones y sentencias

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Programación en Visual Basic Ricardo Rodríguez García

Resolución de problemas mediante algoritmos

5. Sentencias selectivas o condicionales

Tema 2. El lenguaje JAVA

Estructura de Datos: Archivos. Programacion I Mgter. Vallejos, Oscar A.

PROGRAMACION ORIENTADA A OBJETOS EN C++

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Tabla de Símbolos. Programación II Margarita Álvarez

Módulo 6: Condicionales y otros

CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

INICIACIÓN A LA PROGRAMACIÓN II

3.2. Programación estructurada. Principal. Modulo 1 Modulo 2 Modulo 3 Modulo 4. Modulo Modulo Modulo 3 1 Modulo 4 1 Modulo 4 2. Pág.

Se guardan en archivos con extencion c y los cabezales con extension h

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Funciones. Parámetros por valor

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Tema: Entorno a C# y Estructuras Secuenciales.

Apuntadores (Punteros)

Transcripción:

Apunte del curso ALGORITMOS y PROGRAMACIÓN (FI-UBA, Prof. Ing. F. J. LAGE, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez SUBRANGO ENUMERADOS CONJUNTOS SUBRANGO: Un tipo subrango se define a partir de un tipo ordinal, especificando dos valores constantes de ese tipo, que a partir de aquí serán el límite inferior y superior del conjunto de datos de esa clase. Un tipo subrango es un por ser un subconjunto de un tipo ordinal es también ordinal, y sus valores se ordenan de la misma forma que están ordenados en el tipo patrón del cual derivan. Ejemplos 1..10 este tipo subrango consta de los elementos 1,2,3,4,5,6,7,8,9,10 F.. I este subrango consta de los caracteres F, G, H, l a.. z este subrango consta de los caracteres a hasta z 0.. 9 este subrango consta de los caracteres 0 a 9 Para operar con el tipo subrango, se pueden hacer de dos maneras distintas. a) Creando un tipo y luego asignándolo a una iable IntervaloEnteros = -100..100; Grande : integer; Reducido : IntervaloEnteros; b) Definiéndolo directamente en la declaración de iables Página 1 de 11 Grande : integer; El tipo subrango es esencialmente utilizado para dos fines: 1. Mejorar la legibilidad y la comprensión Reducido : -100..100; 2. Aumentar la fiabilidad de los programas, ya que Pascal detecta si un valor recibe un valor fuera del intervalo declarado. El tipo subrango puede ser leído de teclado como cualquier otra tipo de iable (Read o ReadLn), y presentado a través de pantalla por medio de los procedimientos correspondientes (Write, WriteLn). Compatibilidad de tipos: Los tipos subrangos y los tipos de donde proceden, son compatibles, en el sentido de que cualquier tipo de subrango pertenece al patrón. En el ejemplo anterior es legítima la sentencia: Grande := Reducido; También es legítimo el código de programa ReadLn (Grande);

Reducido := Grande; Sin embargo, si al leer con Readln (Grande) se toma para Grande un valor de 500 (fuera del rango IntervaloEnteros), la sentencia de aplicación Reducido := Grande produce un mensaje de error. Como ya se ha dicho un uso importante de los tipos subrangos es detectar ciertos errores de programación o carga de datos. Si se espera que una iable tome valores siempre en un cierto rango, entonces se debe declarar esa iable que adopte el tipo subrango. De este modo, si la iable de tipo subrango toman un valor fuera del rango especificado, se producirá un mensaje de error. 10.3.4. La directiva del compilador R Turbo Pascal no siempre produce un mensaje de error cuando el valor de un tipo subrango está fuera de su rango definido. Sin embargo, puede tener la posibilidad de visualizar dichos mensajes de error, insertando la siguiente línea en el archivo que contenga su programa: ($R+) Esta línea se denomina directiva del compilador. Su valor por defecto (desactivada) es $R-, que no realiza la verificación de los índices del subrango, pero que por el contrario aumenta la velocidad de ejecución. Durante la fase de depuración y puesta a punto de un programa es aconsejable utilizar la directiva $R+, insertándola al principio del programa. ENUMERADOS: Pascal permite otro tipo de dato ordinal denominado tipo enumerado. Estos tipos de datos son definidos por el usuario. Un tipo enumerado se compone de un conjunto de valores referenciados por identificadores. Estos valores constituyen una lista de identifica- dores de constantes que el programador debe indicar en la parte del programa reservada a las declaraciones. Eligiendo adecuadamente nombres significativos para los identificadores se pueden hacer programas más fáciles de leer. Ejemplos Vehiculos = (avion, barco, tren, automovil, moto, colectivo); Frutas = (frutillas, manzana, pera, naranja, duraznos); Estos tipos pueden ser asignados a iables. Así, por ejemplo, se puede declarar Var Transporte : Vehiculos; Postre : Frutas; Características Un tipo de dato enumerado es un tipo ordinal cuyo orden se indica por la disposición de los valores en la definición. El número de orden de cada elemento comienza en 0 para el primer elemento. Arcoiris = (Verde, Amarillo, Rojo, Azul, Verde); Página 2 de 11

(3). Verde es el elemento número 0. Amarillo es el elemento número 1. Miércoles es el elemento tercero Las iables de tipo enumerado sólo pueden tomar valores de estos tipos. Dia (lunes, martes, miercoles, jueves, viernes, sabado, domingo); Semana : dia; Las sentencias siguientes son válidas: Semana := miercoles; while Semana = jueves do Los únicos operadores que pueden acompañar a los enumerados son los operadores de relación y de asignación. lunes < martes verdadera jueves < viernes verdadera La expresión Colegio < martes produce un error de sintaxis, ya que los valores mostrados se asocian con dos tipos diferentes. El operador de asignación puede definir el valor de una iable cuyo tipo es un tipo enumerado. Dado que están ordenados los valores de un tipo enumerado, pueden ser comparados con la ayuda de operadores relacionales. Mediante las sentencias selectivas y repetitivas es posible dar gran flexibilidad a su lenguaje. Ejemplo a) if hoy < sabado then Else Write ( Dia laborable ) Write ( Fin de semana ); Ejemplo b) Ejemplo c) While hoy <> domingo do For hoy := lunes to viernes do Los procedimientos de entrada/salida no pueden leer o escribir datos de tipo enumerado. Write (jueves); producirá un error ReadLn (jueves); producirá un error Si se desea obtener una salida se debe utilizar una sentencia Case Case hoy of lunes : Write ("Lunes"); martes : Write ("Martes"); miercoles : Write ("Miércoles"); jueves : Write ("Jueves"); Página 3 de 11

viernes sabado else Write ("Domingo") end; : Write ("Viernes"); : Write ("Sábado") Un valor no puede figurar en dos tipos enumerados diferentes. Los tipo enumerado no pueden leerse o escribirse en los archivos de texto. Subrangos de tipo enumerados Se pueden declarar subrangos de tipo enumerado Por ejemplo mes = (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre); primavera = octubre.. diciembre; verano = enero.. marzo; otonio = abril.. junio; invierno = julio.. septiembre; mensual : mes; vendimia : otonio; vendimia := abril; vendimia := julio; sentencia válida sentencia no válida Funciones Ordinales Los tipos de datos ordinales como ya nos hemos referido, cada valor tiene un único predecesor (excepto el primero) y un único sucesor (excepto el último). Basándose en esta propiedad Pascal incorpora tres funciones predefinidas. Ord, Pred y Succ. Ord Determina la posición relativa de un elemento en la serie, las series no numéricas comienzan por la posición 0 (cero). Página 4 de 11

Por ejemplo: mes = (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre); {* definición de las iables *} A : Integer; begin {* Comienzo del programa *}... A := ord(junio); Writeln ('El ordinal de Junio es: ',A); {* Salida del resultado *} A debe ser de tipo ordinal (byte o integer), el resultado de esta carrera es 5. Pred y Succ Pred devuelve el predecesor del argumento y Succ devuelve el sucesor del argumento. Pred (marzo) febrero Succ (marzo) abril Pred (enero) indefinido Succ (diciembre) indefinido Aunque no se vea a simple vista su utilidad estas funciones pueden ser aplicadas para ejemplos como el siguiente. While mensual <= diciembre do begin A := Ord (mensual); mensual := Succ(mensual); end; CONJUNTOS Es otro tipo de datos estructurado con el que se puede operar en Pascal. es el conjunto (set). Una iable de tipo set se denomina conjunto. El concepto es idéntico al matemático, y con este tipo de datos se puede realizar las mismas operaciones que las vistas en matemática (unión, intersección, etc.). En Pascal el conjunto de elementos se representan entre corchetes y separados por comas El máximo número de elementos de un conjunto es 256. Como en el álgebra existe el conjunto vacío, es aquel que no contiene ningún elemento. Declaraciones de tipos de datos conjuntos Para declarar o definir iables tipo conjunto, se deberá definir en función de un tipo base que deberá ser ordinal. Página 5 de 11

Ejemplos mes = (enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre); meses = set of mes; digitos = set of byte; (no acepta otro tipo de enteros) caracteres = set of char; Periodo, Cuatrimestre, Trimestre : meses; Posicion: digitos; El conjunto como cualquier otra iable parte de una condición de vacío. Los elementos pueden ser colocados en los conjuntos utilizando una sentencia de asignación. Periodo := [ ]; Posicion := [3, 5, 6, 8] Cuatrimestre := [abril..julio]; En el primer caso se le asignó será un conjunto vacío, en el segundo de los casos estará compuesto por esos cuatro elementos (3, 5, 6, 8), y en el último de los casos serán los meses (abril, mayo, junio, julio). Dos tipos de conjuntos son compatibles, si tienen los tipos base compatibles. En este caso sus iables representativas se pueden utilizar en sentencias de asignación. Include Periodo := Trimestre := [ ]; Una iable de tipo conjunto se suele inicializar al conjunto vacío o al conjunto universal. A partir de la versión 7 de Pascal. Una de las formas para agregar un elemento a un conjunto es a través del procedimiento include. Exclude También es una modificación de la versión 7. Exclude es un procedimiento para eliminar un elemento a un conjunto. Ejemplos Posicion :=[3, 5, 6, 8]; A := 15; include(posicion, 22); include(posicion, A); exclude(posicion, 22); exclude(posicion, A); En ambos casos se da como parámetros el conjunto (Posicion) y el elemento a agregar o quitar. El mismo puede darse como valor o como una iable, de esta última forma la iable debe ser de igual tipo que el tipo base del conjunto. Página 6 de 11

La relación In Determina si un elemento pertenece o no a un conjunto. El resultado de evaluar la expresión relacional puede ser true o false. El tipo de datos de elemento y la lista de elementos deben ser compatibles. Ejemplo if A in Posicion then if 15 in Posicion then La iable A y los elementos de Posicion deben ser compatibles. OPERACIONES CON CONJUNTOS En Pascal es posible realizar tres operaciones binarias sobre ellos que son: unión, intersección y diferencia. Unión (+) Las tres operaciones cumplen estrictamente las reglas del álgebra de conjuntos. Por lo tanto la unión de dos conjuntos da como resultante otro conjunto que tiene por elementos a los elementos comunes y no comunes de ambos conjuntos. La unión de conjunto se representa por el símbolo de la suma. Alfa := [3, 5, 8, 14]; Beta := [2, 5, 9, 14, 22]; Capa := Alfa + Beta; Capa = [2, 3, 5, 8, 9, 14, 22] La unión es el segundo método para ingresar un elemento a un conjunto Ejemplo ReadLn(A); Posicion := Posicion + [A] Diferencia (-) La diferencia entre dos conjuntos da otro conjunto que tiene por elementos, todos los elementos del primer conjunto que no pertenecen al segundo. Se representa por el símbolo de la diferencia. Capa := Alfa - Beta; Capa = [3, 8] Capa := Beta - Alfa; Capa = [2, 9, 22] La diferencia es el segundo método para sacar un elemento a un conjunto Ejemplo ReadLn(A); Posicion := Posicion - [A] Intersección (*) La intersección entre dos conjuntos da otro conjunto que tiene por elementos, todos los elementos comunes a ambos conjuntos. Se representa por el símbolo del producto. Página 7 de 11

Capa := Alfa * Beta; Capa = [5, 14] COMPARACIÓN DE CONJUNTOS Los conjuntos se pueden comparar entre sí mediante el uso de los operadores relacionales (=, <>, < =, > =). Los operandos deben ser del mismo tipo base. El resultado de la comparación es un valor lógico: true o false. Igualdad de Conjuntos Dos conjuntos son iguales, cuando sus tipos de base son equivalentes, y además todo elemento del primer conjunto pertenece al segundo y todo elemento del segundo conjunto pertenece al primero. Sub y Superconjunto Un conjunto Alfa es subconjunto (esta incluido) de otro Beta, si todo elemento de Alfa pertenece a Beta, pero no todo elemento de Beta pertenece a Alfa. En dicho caso Beta será un superconjunto de Alfa LOS CONJUNTOS COMO PARÁMETROS Los conjuntos se pueden utilizar como parámetros de funciones y procedimientos. En el caso de una función, se debe recordar que la misma devuelve un único valor, por lo tanto su tipo deberá ser un dato simple y no puede ser un conjunto. Ejemplo Realizar un programa que determine los números primos de entre 1 y N elegido por el usuario (menor que 65536). Utilizando la Criba de Eratóstenes. La idea de la criba es la siguiente: Dado una serie ordenada de valores, por ejemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 se prueba cuales son múltiplos de dos y se los elimina de la serie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 se busca el siguiente de la serie (3) y se elimina los múltiplos de él 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 y así sucesivamente. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 El último valor con que se prueba es con R el cual es la parte entera de la raíz cuadrada del mayor de los valores de la serie. Página 8 de 11

program Criba_de_Eratostenes; {* Ejemplo de conjuntos *} {* Desarrollo del Ing. Fernando J. LAGE *} {* Septiembre 1998*} uses const wincrt,windos; {* declaraciones de librerias, para correr bajo Windows *} {* crt,dos;*} {* declaraciones de librerias, para correr bajo DOS *} Enter = #13; Ln = #13#10; {* Indica un salto de renglón *} Valores = set of byte; {* Tipo conjunto *} {* definición de las iables *} Criba : Valores; N, S: Byte; h : char; procedure ingresos; begin {* Comienzo del procedimiento de ingreso de valores *} repeat Write ('Ingrese un valor mayor que 0 y menor o igual 255 '); Readln (N); until (N>0) and (N<255) end; {* Fin del procedimiento ingreso*} function Extremo(A:Byte):Integer; {función que devuelve la parte entera de la raíz cuadrada } Raiz : Real; begin {* Comienzo de la función Extremo *} Raiz := Sqrt(A); Extremo := Trunc(Raiz); end; {* Fin de la función Extremo *} Página 9 de 11

procedure Llenado( Alfa : Valores; {* tipo conjunto *} Beta : Byte); i : Byte; begin {* Comienzo del procedimiento de llenado de valores *} WriteLn (Ln,Ln,'Elementos del conjunto original : '); For i := 1 to Beta do begin Write (i,' '); Alfa := Alfa + [i] {* Agrega un elemento al conjunto *} end end; {* Fin del procedimiento Llenado *} function Multiplo(A,B:Byte):Boolean; {* Función que devuelve si un número es múltiplo o no *} Mul : Byte; begin {* Comienzo de la función Extremo *} Mul := ((B div A)*A); Multiplo := Mul=B end; {* Fin de la función Extremo *} procedure Primos( Alfa : Valores; {* tipo conjunto *} Beta, Gama: Byte); i,j : Byte; begin {* Comienzo del procedimiento de búsqueda de valores no primos*} WriteLn (Ln, Ln, 'Elementos del conjunto original : '); For i := 2 to Gama do If i in Alfa Then For j := i+1 to Beta do If j in Alfa then If Multiplo(i,J) then Alfa := Alfa - [j]; end; {* Fin del procedimiento Primos *} Página 10 de 11

procedure salidas (Beta :Valores); {* tipo conjunto *} i : byte; begin {* Comienzo del procedimiento de egreso de valores *} Writeln (' ',LN); {* Se deja renglones en blanco *} For i := 1 to N do if i in Beta then begin Write (' ',i); {* Salida del resultado *} exclude (Beta,i) end; Writeln (' son primos'); {* Salida del resultado *} Writeln (' ', Ln, Ln, Ln, Ln); {* Deja cinco renglones en blanco *} writeln ('Presione un tecla para terminar'); {* Salida de mensaje *} read(h); ClrScr; end; {* Fin del procedimiento salidas*} begin {* Comienzo del programa *} {* Se limpia la pantalla *} ClrScr; {* Declaro al conjuto vacio *} Criba := []; {* Ingreso del extremo superior *} Ingresos; {* Llenado del conjunto *} Llenado(Criba, N); {* Cálculo de el extremo de búsqueda *} S := Extremo(N); {* Obtención de los números primos *} Primos(Criba,N,S); {* Salida de resultados *} Salidas(Criba); end. {* Fin del programa *} Página 11 de 11