Top Banner
FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD NACIONAL DE JUJUY GORRITI 237 - 4600 SAN SALVADOR DE JUJUY ARGENTINA TEL: 54-88-221577 FAX: 54-88-221579 Introducción a la Informática Resumen teórico práctico 2010 Primera Parte Ing. Samuel, Franco Domínguez Facultad de Ingeniería de la Universidad Nacional de Jujuy San Salvador de Jujuy Argentina
110

Apunte Teorico-Practico 1era Parte

Jul 26, 2015

Download

Documents

Injer Bta
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Apunte Teorico-Practico 1era Parte

FACULTAD DE INGENIERÍA DE LA UNIVERSIDAD NACIONAL DE JUJUY GORRITI 237 - 4600 SAN SALVADOR DE JUJUY – ARGENTINA TEL: 54-88-221577 FAX: 54-88-221579

Introducción a la Informática Resumen teórico práctico 2010 Primera Parte

Ing. Samuel, Franco Domínguez

Facultad de Ingeniería de la Universidad Nacional de Jujuy San Salvador de Jujuy – Argentina

Page 2: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 2 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Contenido

Recomendaciones ....................................................................................................................................................... 3

Reglamento general ................................................................................................................................................ 3 Capitulo1 .................................................................................................................................................................... 4

La computadora ...................................................................................................................................................... 4

Arquitectura de una computadora ............................................................................................................................ 4 Generaciones de las Computadoras ......................................................................................................................... 6

Dato e Información ................................................................................................................................................. 8

Sistemas de numeración ........................................................................................................................................ 11 Teorema Fundamental de la Numeración .............................................................................................................. 12

Códigos Alfanuméricos. ........................................................................................................................................ 22

Compuertas Lógicas.............................................................................................................................................. 23

Capitulo 2 ................................................................................................................................................................. 26 Ambiente de un Problema ..................................................................................................................................... 26

Algoritmos y programación ................................................................................................................................... 34

Análisis del problema............................................................................................................................................ 35 Diseño del algoritmo ............................................................................................................................................. 36

La estructura de control secuencial ........................................................................................................................ 37

La estructura de control condicional ...................................................................................................................... 41 Sentencias condicionales simples ...................................................................................................................... 41

Sentencia condicional SEGÚN .......................................................................................................................... 42

Tablas de decisión ................................................................................................................................................. 58

La estructura de control iterativa ........................................................................................................................... 62 Estructura de control iterativa Mientras (Exp.Lógica) Hacer…FinMientras ....................................................... 62

Estructura de control iterativa Repetir …HastaQue (Exp. Lógica)...................................................................... 65

Estructura de control iterativa Para…FinPara .................................................................................................. 66 Capitulo 3 ................................................................................................................................................................. 77

Pruebas de software .............................................................................................................................................. 77

Organización ........................................................................................................................................................ 78

Prueba de Unidades............................................................................................................................................... 79 Caja blanca ........................................................................................................................................................... 79

Caja negra ............................................................................................................................................................. 82

Pruebas de Integración .......................................................................................................................................... 83 Pruebas de Aceptación .......................................................................................................................................... 83

Aspectos Sicológicos y Organización del Trabajo ................................................................................................. 86

Capitulo 4 ................................................................................................................................................................. 86 Estrategias de resolución de problemas. ................................................................................................................ 87

Diferencia entre ejercicios y problemas ................................................................................................................. 88

Ejemplo: Juego del Nim ........................................................................................................................................ 89

Capitulo 5 ................................................................................................................................................................. 89 Método científico .................................................................................................................................................. 89

Descripciones del método científico ...................................................................................................................... 90

Pensamiento crítico ............................................................................................................................................... 92 Tablas referencia: trampas al pensamiento crítico .................................................................................................. 98

Capitulo 6 ............................................................................................................................................................... 104

Métodos numéricos simples: Iteraciones manuales y automáticas ........................................................................ 104 Capitulo 7 ............................................................................................................................................................... 106

Complejidad ....................................................................................................................................................... 106

Complejidad computacional ................................................................................................................................ 106

La notación O ..................................................................................................................................................... 106 La Complejidad Ciclomática ............................................................................................................................... 107

Cálculo de la Complejidad Ciclomática ............................................................................................................... 108

Ámbito de utilización de la Complejidad Ciclomática ......................................................................................... 108 Ejemplo de cálculo de la complejidad ciclomática ............................................................................................... 108

Page 3: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 3 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Recomendaciones 1. El mejor material de estudio es un buen libro.

2. En su defecto, nunca desprecie ningún libro.

3. A falta de libros, pueden usarse apuntes personales. 4. Las transparencias y ejercicios que los profesores emplean en sus clases son mero material auxiliar para facilitar

la presentación.

Reglamento general

- La información y comunicación de los asuntos referidos a la asignatura se hará mediante la página web oficial de la asignatu-

ra http://www.fi.unju.edu.ar/materias/materia/IIII/

- El alumno debe estar correctamente inscripto en sección alumnos para poder cursar la asignatura, la cátedra no reconoce

ningún derecho adquirido si el alumno no cumplimenta previamente este requisito. - El alumno debe inscribirse en una sola comisión de trabajos prácticos al inicio de la cursada. La fecha, lugar y modalidad de

las inscripciones a las comisiones se informa por carteleras e informaciones que da la Secretaría Académica. Las comisiones

de trabajos prácticos tienen cupo. El detalle de los horarios y profesor responsables de las comisiones se encuentra en el do-

cumento HORARIOS.

- Se dictarán dos clases teóricas por semana que repiten ambas los mismos conceptos y cuyo temario tentativo se encuentra en

el documento PLANIFICACIÓN, el dictado es intensivo y comienza en el horario establecido, allí se impartirán los conceptos

básicos para resolver los trabajos prácticos, el alumno deberá complementar los conceptos teóricos con la bibliografía obliga-

toria. Por razones de una distribución equitativa de los recursos, los alumnos deberán asistir a la clase teórica correspondiente

a la comisión de trabajo práctico (ver en el documento HORARIOS el cuadro de la distribución de clases teóricas correspon-

dientes a las clases prácticas). La primera semana de clases, se dictarán únicamente las clases de teoría, la semana siguiente

darán comienzo también las clases prácticas.

- El alumno deberá cumplir con el 80% de asistencia a los trabajos prácticos con la correspondiente presentación y aprobación del mismo, para poder rendir cada uno de los parciales.

- La carpeta de trabajos prácticos es un documento obligatorio del alumno. Es personal y será corregida periódicamente por el

profesor de la comisión, la misma deberá tener todos los ejercicios prácticos resueltos en forma prolija y clara, cada hoja de-

berá tener número de folio, datos y firma el alumno.

- Si alguna clase práctica cae en un día feriado el alumno perteneciente a dicha comisión deberá ir a cualquier otra comisión pa-

ra no perder la clase práctica de la semana. La asistencia se computará en la siguiente clase práctica con la presentación re-

suelta del TP correspondiente.

- Las clases de consultas son un complemento a las clases prácticas y teóricas semanales. Es fuertemente recomendable la asis-

tencia a una o más consultas para fijar los conceptos dudosos o faltantes del temario semanal.

- Las fechas y horarios de los exámenes parciales se detalla en el documento HORARIOS, la distribución propuesta es de

carácter obligatorio. - Para regularizar la asignatura el alumno debe tener dos exámenes parciales (primero y segundo) aprobados ambos con el 60 %

de la nota total del examen, el examen flotante es el recuperatorio de uno de los parciales anteriores.

- Para promocionar la asignatura el alumno debe aprobar primeramente los dos exámenes parciales en primera instancia con

nota igual o superior al 70% de la nota total para luego rendir y aprobar un examen integral para promocionados, si este no

fuese aprobado la condición del alumno pasa a ser regular.

- El profesor a cargo podrá establecer otros mecanismos de evaluación (exámenes orales, trabajos de libre elección, ponencias,

etc.) específicos para cada caso.

- Los resultados de los parciales estarán disponibles el lunes de la semana siguiente a la fecha del parcial (excepto el Primer

parcial que puede demorar una semana más), los mismos serán publicados en la página web de la facultad.

http://www.fi.unju.edu.ar/materias/materia/IIII/

- Los exámenes parciales son corregidos por un profesor de la asignatura al azar, los mismos serán mostrados por el profesor

que corrigió el examen en la clase de consulta correspondiente a la semana siguiente de la fecha del parcial (excepto el primer parcial, dos semanas siguientes al parcial).

- El listado final con los resultados de la cursada es enviada a Sección Alumnos de la facultad en un plazo establecido por el ca-

lendario académico de ciclo lectivo correspondiente a la finalización de las clases http://www.fi.unju.edu.ar/ el alumno debe

verificar sus datos personales como así también sus resultados para su corrección antes del envío de las mismas al Departa-

mento alumnos (Sección alumnos). Una vez que se envía el listado con los resultados a Sección alumnos el profesor de la

asignatura ya no puede modificar los datos.

- El examen final para alumnos regulares es escrito y/u oral y se evalúa con preguntas integradoras para comprobar si se alcan-

zaron los objetivos de la asignatura. Los turnos de los exámenes finales están detallados en el calendario académico de la fa-

cultad. http://www.fi.unju.edu.ar/ .

- Los alumnos libres deberán presentar una carpeta con todos los trabajos prácticos correctamente resueltos por él y realizar

exámenes prácticos integradores de los temas tratados en la asignatura. Aprobados estos rinden el examen final equivalente a la de los estudiantes regulares.

Page 4: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 4 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Capitulo1

"El cerebro no es un vaso por llenar, sino una lámpara por encender." Plutarco.

"Feliz es el hombre que ha hallado sabiduría, y el hombre que consigue discernimiento, porque el tenerla como ganancia es mejor que tener la plata como ganancia; y el tenerla como producto, que el oro mismo. Es más preciosa

que los corales, y todos tus otros deleites no pueden ser igualados a ella. Largura de días está en su diestra, en su

siniestra hay riquezas y gloria. Sus caminos son caminos de agradabilidad, y todas sus veredas son paz. Es árbol de vida a los que se asen de ella, y los que la mantienen firmemente asida han de ser llamados felices." Proverbios, 3:11-

18

La computadora

Una computadora (del inglés computer, y éste del latín computare -calcular-), también denominada ordenador o computador, es una máquina electrónica que recibe y procesa datos para convertirlos en información útil. Una com-

putadora es una colección de circuitos integrados y otros componentes relacionados que puede ejecutar con exactitud,

rapidez y de acuerdo a lo indicado por un usuario o automáticamente por otro programa, una gran variedad de secuen-cias o rutinas de instrucciones que son ordenadas, organizadas y sistematizadas en función a una amplia gama de apli-

caciones prácticas y precisamente determinadas, proceso al cual se le ha denominado con el nombre de programación

y al que lo realiza se le llama programador. La computadora, además de la rutina o programa informático, necesita de datos específicos (a estos datos, en conjunto, se les conoce como "Input" en inglés) que deben ser suministrados, y que

son requeridos al momento de la ejecución, para proporcionar el producto final del procesamiento de datos, que recibe

el nombre de "output". La información puede ser entonces utilizada, reinterpretada, copiada, transferida, o retransmiti-

da a otra(s) persona(s), computadora(s) o componente(s) electrónico(s) local o remotamente usando diferentes siste-mas de telecomunicación, pudiendo ser grabada, salvada o almacenada en algún tipo de dispositivo o unidad de alma-

cenamiento. La característica principal que la distingue de otros dispositivos similares, como la calculadora no pro-

gramable, es que es una máquina de propósito general, es decir, puede realizar tareas muy diversas, de acuerdo a las posibilidades que brinde los lenguajes de programación y el hardware.

Arquitectura de una computadora

Esquema funcional de una computadora: Esquema de Vonn Newman:

Page 5: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 5 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Aunque las tecnologías empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los pri-meros modelos en los años 40, la mayoría todavía utiliza la Arquitectura de von Neumann, publicada a principios de

los años 1940 por John von Neumann, que otros autores atribuyen a John Presper Eckert y John William Mauchly.

La arquitectura de Von Neumann describe una computadora con 4 secciones principales: la unidad aritmético lógica (ALU por sus siglas del inglés: Arithmetic Logic Unit), la unidad de control, la memoria central, y los dispositivos de

entrada y salida (E/S). Estas partes están interconectadas por canales de conductores denominados buses:

La memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit o unidad de in-

formación. La instrucción es la información necesaria para realizar lo que se desea con el computador. Las «cel-das» contienen datos que se necesitan para llevar a cabo las instrucciones, con el computador. El número de celdas

varían mucho de computador a computador, y las tecnologías empleadas para la memoria han cambiado bastante;

van desde los relés electromecánicos, tubos llenos de mercurio en los que se formaban los pulsos acústicos, matri-ces de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip.

En general, la memoria puede ser reescrita varios millones de veces (memoria RAM); se parece más a una pizarra

que a una lápida (memoria ROM) que sólo puede ser escrita una vez.

Memoria central (MC): almacena temporalmente todos los datos y programas que se estén usando en un deter-minado momento. Necesita corriente eléctrica para funcionar.

Memoria auxiliar (MA): son los discos duros, cDs, disquetes, etc que se utilizan para almacenar la información.

Esta no se pierde cuando se apaga la PC ya que no necesita corriente para trabajar.

Memoria central: RDM (registro de dirección de memoria): contiene la dirección de memoria donde se encuentra o va a ser alma-

cenada la información. RIM (registro de intercambio de memoria): operación de lectura, recibe el dato de memoria señalada por el

RDM para enviarlo a la UAL. Operación escrita, se transfiere la posición de memoria indicada por el RDM.

SM (selector de memoria) RAM: semiconductor, almacena y lee datos e instrucciones en forma directa. Pierde la información cuando se in-terrumpe la corriente. Sus posiciones pueden ser escritas y leídas cuantas veces quiera el usuario.

ROM: conserva siempre la información almacenada. No acepta la transferencia de datos e instrucciones, es solo

de lectura cuyas posiciones fueron escritas por el fabricante. CACHE: almacena temporalmente datos e instrucciones. Tiene una gran velocidad de trabajo y por eso es muy

cara. Actúa como memoria intermedia entre la unidad de control de la unidad central de proceso y la memoria

principal. VIRTUAL: puede utilizarce como memoria RAM cuando esta se acaba.

CELDAS: retienen mientras la computadora está conectada la información depositada en ella. Tienen una direc-

ción que las identifica y permite localizar las distintas posiciones.

PALABRA DE MEMORIA: es la cantidad de información que puede introducirce o extraerce de la MC.

Page 6: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 6 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

El procesador (también llamado Unidad central de procesamiento o CPU) consta de:

La unidad aritmético lógica o ALU es el dispositivo diseñado y construido para llevar a cabo las opera-

ciones elementales como las operaciones aritméticas (suma, resta, ...), operaciones lógicas (Y, O, NO), y

operaciones de comparación o relacionales. En esta unidad es en donde se hace todo el trabajo computa-cional.

Un típico símbolo esquemático para una ALU: A y B son operandos; R es la salida; F es la entrada de la

unidad de control; D es un estado de la salida. La unidad de control sigue la dirección de las posiciones en memoria que contienen la instrucción que el

computador va a realizar en ese momento; recupera la información poniéndola en la ALU para la opera-

ción que debe desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente instrucción (normalmente situada en la si-

guiente posición, a menos que la instrucción sea una instrucción de salto, informando al ordenador de que

la próxima instrucción estará ubicada en otra posición de la memoria). Los dispositivos E/S sirven a la computadora para obtener información del mundo exterior y/o comunicar los

resultados generados por el computador al exterior. Hay una gama muy extensa de dispositivos E/S como te-

clados, monitores, unidades de disco flexible o cámaras web.

Los diagramas siguientes muestran los niveles del software, o sea la interelación entre el usuario y la computadora.

Una comunicación de alto nivel con la computadora se logra con las aplicaciones y lenguajes de de programación,

estos ocultan la gran complejidad interna de la computadora.

Generaciones de las Computadoras

Primera Generación (1951-1958)

Page 7: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 7 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

En esta generación había una gran desconocimiento de las capacidades de las computadoras, puesto que

se realizó un estudio en esta época que determinó que con veinte computadoras se saturaría el mercado

de los Estados Unidos en el campo de procesamiento de datos. Esta generación abarco la década de los cincuenta. Y se conoce como la primera generación. Estas máquinas tenían las siguientes características:

Usaban tubos al vacío para procesar información.

Usaban tarjetas perforadas para entrar los datos y los programas.

Usaban cilindros magnéticos para almacenar información e instrucciones internas. Eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran suma-

mente lentas.

Se comenzó a utilizar el sistema binario para representar los datos.

En esta generación las máquinas son grandes y costosas (de un costo aproximado de 10,000 dólares). La computadora más exitosa de la primera generación fue la IBM 650, de la cual se produjeron varios cientos. Esta

computadora que usaba un esquema de memoria secundaria llamado tambor magnético, que es el antecesor de los dis-

cos actuales.

Segunda Generación (1958-1964)

En esta generación las computadoras se reducen de tamaño y son de menor costo. Aparecen

muchas compañías y las computadoras eran bastante avanzadas para su época como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas computadoras se

programaban con cinta perforadas y otras por medio de cableado en un tablero.

Características de esta generación: Usaban transistores para procesar información.

Los transistores eran más rápidos, pequeños y más confiables que los tubos al vacío.

200 transistores podían acomodarse en la misma cantidad de espacio que un tubo al vacío.

Usaban pequeños anillos magnéticos para almacenar información e instrucciones. cantidad de calor y eran suma-mente lentas.

Se mejoraron los programas de computadoras que fueron desarrollados durante la primera generación.

Se desarrollaron nuevos lenguajes de programación como COBOL y FORTRAN, los cuales eran comercialmente accsesibles.

Se usaban en aplicaciones de sistemas de reservaciones de líneas aéreas, control del tráfico aéreo y simulaciones de

propósito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo, "Whirlwind I".

Surgieron las minicomputadoras y los terminales a distancia.

Se comenzó a disminuir el tamaño de las computadoras.

Tercera Generación (1964-1971)

La tercera generación de computadoras emergió con el desarrollo de circuitos integrados (pasti-

llas de silicio) en las que se colocan miles de componentes electrónicos en una integración en miniatura. Las computadoras nuevamente se hicieron más pequeñas, más rápidas, desprendían

menos calor y eran energéticamente más eficientes. El ordenador IBM-360 dominó las ventas de

la tercera generación de ordenadores desde su presentación en 1965. El PDP-8 de la Digital

Equipment Corporation fue el primer miniordenador.

Características de está generación:

Se desarrollaron circuitos integrados para procesar información. Se desarrollaron los "chips" para almacenar y procesar la información. Un "chip" es una pieza de silicio que contie-

ne los componentes electrónicos en miniatura llamados semiconductores.

Los circuitos integrados recuerdan los datos, ya que almacenan la información como cargas eléctricas.

Surge la multiprogramación. Las computadoras pueden llevar a cabo ambas tareas de procesamiento o análisis matemáticos.

Emerge la industria del "software".

Page 8: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 8 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Se desarrollan las minicomputadoras IBM 360 y DEC PDP-1.

Otra vez las computadoras se tornan más pequeñas, más ligeras y más eficientes.

Consumían menos electricidad, por lo tanto, generaban menos calor.

Cuarta Generación (1971-1988)

Aparecen los microprocesadores que es un gran adelanto de la microelectrónica, son circuitos

integrados de alta densidad y con una velocidad impresionante. Las microcomputadoras con ba-

se en estos circuitos son extremadamente pequeñas y baratas, por lo que su uso se extiende al mercado industrial. Aquí nacen las computadoras personales que han adquirido proporciones

enormes y que han influido en la sociedad en general sobre la llamada "revolución informática".

Características de esta generación:

Se desarrolló el microprocesador. Se colocan más circuitos dentro de un "chip".

"LSI - Large Scale Integration circuit".

"VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas.

Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmética/lógica. El tercer componen-

te, la memoria primaria, es operado por otros "chips".

Se reemplaza la memoria de anillos magnéticos por la memoria de "chips" de silicio. Se desarrollan las microcomputadoras, o sea, computadoras personales o PC.

Se desarrollan las supercomputadoras.

Quinta Generación (1983 al presente) En vista de la acelerada marcha de la microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a

esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competencia inter-nacional por el dominio del mercado de la computación, en la que se perfilan dos líderes que, sin embargo, no han po-

dido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje más cotidiano y

no a través de códigos o lenguajes de control especializados.

Japón lanzó en 1983 el llamado "programa de la quinta generación de computadoras", con los objetivos explícitos de producir máquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya está en actividad

un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera:

Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras.

Características de esta generación:

Inteligencia artíficial: La inteligencia artificial es el campo de estudio que trata de aplicar los procesos del pensamiento humano usados en la

solución de problemas a la computadora.

Robótica: La robótica es el arte y ciencia de la creación y empleo de robots. Un robot es un sistema de computación híbrido in-

dependiente que realiza actividades físicas y de cálculo. Están siendo diseñados con inteligencia artificial, para que

puedan responder de manera más efectiva a situaciones no estructuradas.

Sistemas expertos: Un sistema experto es una aplicación de inteligencia artificial que usa una base de conocimiento de la experiencia

humana para ayudar a la resolución de problemas.

Redes de comunicaciones: Los canales de comunicaciones que interconectan terminales y computadoras se conocen como redes de comunicacio-

nes; todo el "hardware" que soporta las interconexiones y todo el "software" que administra la transmisión.

Dato e Información

Dato es todo valor o elemento de conocimiento aprehensible y transmitible. En sentido general, la información es un conjunto organizado de datos procesados, que constituyen un mensaje sobre

un determinado ente o fenómeno. Los datos se perciben, se integran y generan la información necesaria para producir

el conocimiento que es el que finalmente permite tomar decisiones para realizar las acciones cotidianas que aseguran la existencia.

Page 9: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 9 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Desde el punto de vista de la ciencia de la computación, la información es un conocimiento explícito extraído por se-

res vivos o sistemas expertos como resultado de interacción con el entorno o percepciones sensibles del mismo entor-

no. En principio la información, a diferencia de los datos o las percepciones sensibles, tienen estructura útil que modi-ficará las sucesivas interacciones del ente que posee dicha información con su entorno.

Entre las múltiples representaciones son importantes las magnitudes digitalizadas y se elige el sistema binario con sus

dos estados 1 y 0, el motivo es la facilidad de su manejo.

Informática

La Informática es la ciencia aplicada que abarca el estudio y aplicación del tratamiento automático de la información,

utilizando dispositivos electrónicos y sistemas computacionales. También está definida como el procesamiento auto-

mático de la información. Conforme a ello, los sistemas informáticos deben realizar las siguientes tres tareas básicas:

Entrada: Captación de la información digital.

Proceso: Tratamiento de la información.

Salida: Transmisión de resultados binarios.

Bit

Bit es el acrónimo de Binary digit. (dígito binario). Un bit es un dígito del sistema de numeración binario. Mientras que en el sistema de numeración decimal se usan diez dígitos, en el binario se usan sólo dos dígitos, el 0 y el

1. Un bit o dígito binario puede representar uno de esos dos valores, 0 ó 1.

Se puede imaginar un bit, como una bombilla que puede estar en uno de los siguientes dos estados:

apagada o encendida

El bit es la unidad mínima de información empleada en informática, en cualquier dispositivo digital, o en la teoría de

la información. Con él, podemos representar dos valores cuales quiera, como verdadero o falso, abierto o cerrado, blanco o negro, norte o sur, masculino o femenino, rojo o azul, etc. Basta con asignar uno de esos valores al estado de

"apagado" (0), y el otro al estado de "encendido" (1).

Con un bit podemos representar solamente dos valores, que suelen representarse como 0, 1. Para representar o codifi-car más información en un dispositivo digital, necesitamos una mayor cantidad de bits. Si usamos dos bits, tendremos

cuatro combinaciones posibles:

0 0 - Los dos están "apagados" 0 1 - El primero "apagado"

1 0 - El primero "encendido"

1 1 - Los dos están "encendidos"

Page 10: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 10 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Con estas cuatro combinaciones podemos representar hasta cuatro valores diferentes, como por ejemplo, los colores

rojo, verde, azul y negro.

A través de secuencias de bits, se puede codificar cualquier valor discreto como números, palabras, e imágenes. Cuatro bits forman un nibble, y pueden representar hasta 2

4 = 16 valores diferentes; ocho bits forman un octeto, y se pueden

representar hasta 28 = 256 valores diferentes. En general, con un número de bits pueden representarse hasta 2

n valores

diferentes.

Byte

Un byte y un octeto no son la misma cosa. Mientras que un octeto siempre tiene 8 bits, un byte contiene un número fi-

jo de bits, que no necesariamente son 8. En los computadores antiguos, el byte podría estar conformado por 6, 7, 8 ó 9 bits. Hoy en día, en la inmensa mayoría de los computadores, y en la mayoría de los campos, un byte tiene 8 bits, sien-

do equivalente al octeto, pero hay excepciones. En arquitectura de ordenadores, 8 bits es un adjetivo usado para des-

cribir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 8 bits de ancho, o para referir-

se a una arquitectura de CPU y ALU basadas en registros, bus de direcciones o bus de datos de ese ancho. El término "byte" viene de "bite" (en inglés "mordisco"), como la cantidad más pequeña de datos que un ordenador

podía "morder" a la vez.

Ejemplo: Excepto para elementos con fotos, los elementos se toman como colecciones de caracteres--letras, números y signos de puntuación--cada uno 1 byte. Un documento formateado ocupa mucho más espacio.

Tamaño Capacidad de almacenamiento aproximada

1 B Una letra

10 B Una o dos palabras

100 B Una o dos frases

1 kB Una historia muy corta

10 KB Una página de enciclopedia (tal vez con un dibujo simple)

100 KB Una fotografía de resolución mediana

1 MB Una novela

10 MB Dos copias de la obra completa de Shakespeare

100 MB 1 metro de libros en estantería

1 GB Una furgoneta llena de páginas con texto

1 TB 50.000 árboles de papel

10 TB La colección impresa de la biblioteca del congreso de EE. UU.

Palabra

Una palabra es un grupo de 16 bits, el bit 0 es el bit de más bajo orden y el bit 15 es el de más alto orden. Una palabra se puede dividir en 2 bytes llamados igualmente de bajo y alto orden. También una palabra puede considerarse como

un grupo de 4 nibbles. Se considera una palabra doble a un grupo de 32 bits. Un grupo de mayor número de bits sim-

plemente se nombra por su número de bits, ejemplo: palabra de 64 bits, palabra de 128 bits, etc.

Unidades

Los prefijos usados para medidas de byte normalmente son los mismos que los prefijos del SI utilizados para otras

medidas, pero tienen valores ligeramente distintos. Se basan en potencias de 1024 (210

), un número binario convenien-te, mientras que los prefijos del SI se basan en potencias de 1000 (10

3), un número decimal conveniente. La tabla infe-

rior ilustra estas diferencias. Ver Prefijo binario para una discusión mayor.

Nombre Abrev. Factor binario Tamaño en el SI

bytes B 20 = 1 10

0 = 1

kilo K 210

= 1024 103 = 1000

mega M 220

= 1 048 576 106 = 1 000 000

giga G 230

= 1 073 741 824 109 = 1 000 000 000

tera T 240

= 1 099 511 627 776 1012

= 1 000 000 000 000

Page 11: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 11 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

peta P 250

= 1 125 899 906 842 624 1015

= 1 000 000 000 000 000

exa E 260

= 1 152 921 504 606 846 976 1018

= 1 000 000 000 000 000 000

zetta Z 270

= 1 180 591 620 717 411 303 424 1021

= 1 000 000 000 000 000 000 000

yotta Y 280

= 1 208 925 819 614 629 174 706 176 1024

= 1 000 000 000 000 000 000 000 000

Baudio

El baudio (en inglés baud) es una unidad de medida, usada en telecomunicaciones, que representa el número de

símbolos transmitidos por segundo en una red análoga.

Es importante resaltar que no se debe confundir el baud rate o velocidad en baudios con el bit rate o velocidad en bits por segundo, ya que cada evento de señalización (símbolo) transmitido puede transportar uno o más bits. Sólo cuando

cada evento de señalización (símbolo) transporta un solo bit coinciden la velocidad de transmisión de datos baudios y

en bits por segundo. Las señales binarias tienen la tasa de bit igual a la tasa de símbolos (rb = rs), con lo cual la dura-ción de símbolo y la duración de bit son también iguales (Ts = Tb).

n = rb/rs

Donde rb: régimen binario o tasa de bits (bit rate) rs: tasa de modulación o tasa de símbolos y n: número de bits por

nivel para la codificación de línea Se utilizó originariamente para medir la velocidad de las transmisiones telegráficas, tomando su nombre del ingeniero

francés Jean Maurice Baudot, quien fue el primero en realizar este tipo de mediciones.

Ejemplos: En el caso de las máquinas teletipo, todavía en uso en algunos medios, se decía que la velocidad de transmisión

era normalmente de 50 baudios. En este caso, como los eventos eran simples cambios de voltaje 1-->(+), 0-->(-),

cada evento representaba un solo bit o impulso elemental, y su velocidad de transmisión en bits por segundo coin-cidía con la velocidad en baudios.

Sin embargo, en los módems que utilizan diversos niveles de codificación, por ejemplo mediante modulación de

fase, cada evento puede representar más de un bit, con lo cual ya no coinciden bits por segundos y baudios.

Sistemas de numeración

Un sistema de numeración es un conjunto de símbolos y reglas de generación que permiten construir todos los núme-

ros válidos en el sistema. Un sistema de numeración puede representarse como

donde:

es el sistema de numeración considerado (p.ej. decimal, binario, etc.).

es el conjunto de símbolos permitidos en el sistema. En el caso del sistema decimal son {0,1,...9}; en el binario

son {0,1}; en el octal son {0,1,...7}; en el hexadecimal son {0,1,...9, A, B, C, D, E, F}.

son las reglas que nos indican qué números son válidos en el sistema, y cuáles no. En un sistema de numera-

ción posicional las reglas son bastante simples, mientras que la numeración romana requiere reglas algo más ela-

boradas. Estas reglas son diferentes para cada sistema de numeración considerado, pero una regla común a todos es que para

construir números válidos en un sistema de numeración determinado sólo se pueden utilizar los símbolos permitidos

en ese sistema.

Para indicar en qué sistema de numeración se representa una cantidad se añade como subíndice a la derecha el número de símbolos que se pueden representar en dicho sistema.

Ejemplos

el número 135(10) es un número válido en el sistema decimal, pero el número 12A(10) no lo es, ya que utiliza un símbolo A no válido en el sistema decimal.

el número 35(8) es un número válido en el sistema octal, pero el número 39(8) no lo es, ya que el símbolo 9 no es un

símbolo válido en el sistema octal. el número F1E4(16) es un número válido en el sistema hexadecimal, pero el número FKE4(16) no lo es, ya que el

símbolo K no es un símbolo válido en el sistema hexadecimal.

Las lenguas naturales sin ser sistemas formales son sistemas que generalmente cuentan con un procedimiento para

nombrar los numerales. La base de los sistemas encontrados en las lenguas del mundo son la base 10 y la base 20, ya que dichos sistemas se originaron en el contaje de dedos de manos (y a veces también pies).

Page 12: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 12 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Clasificación

Los sistemas de numeración pueden clasificarse en dos grandes grupos: posicionales y no-posicionales: En los sistemas no-posicionales los dígitos tienen el valor del símbolo utilizado, que no depende de la posición

(columna) que ocupan en el número.

En los sistemas de numeración ponderados o posicionales el valor de un dígito depende tanto del símbolo utiliza-

do, como de la posición que ése símbolo ocupa en el número. Por ejemplo, el sistema de numeración egipcio es no posicional, en cambio el babilónico es posicional. Las lenguas

naturales poseen sistemas de numeración posicionales basados en base 10 ó 20, a veces con subsistemas de cinco ele-

mentos. Además, en algunas pocas lenguas los numerales básicos a partir de cuatro tienen nombres basados en nume-rales más pequeños.

Sistemas de numeración no posicionales

Estos son los más primitivos se usaban por ejemplo los dedos de la mano para representar la cantidad cinco y después se hablaba de cuántas manos se tenía. También se sabe que se usaba cuerdas con nudos para representar cantidad. Tie-

ne mucho que ver con la coordinabilidad entre conjuntos. Entre ellos están los sistemas el antiguo Egipto, el sistema

de numeración romana, y los usados en Mesoamérica por mayas, aztecas y otros pueblos.

Sistemas de numeración semi posicionales

El sistema de los números romanos no es estrictamente posicional. Por esto, es muy complejo diseñar algoritmos de uso general (por ejemplo, para sumar, restar, multiplicar o dividir). Como ejemplo, en el número romano XCIX (99

decimal) los numerales X (10 decimal) del inicio y del fin de la cifra equivalen siempre al mismo valor, sin importar

su posición dentro de la cifra.

Sistemas de numeración posicionales

El número de símbolos permitidos en un sistema de numeración posicional se conoce como base del sistema de nume-

ración. Si un sistema de numeración posicional tiene base b significa que disponemos de b símbolos diferentes para escribir los números, y que b unidades forman una unidad de orden superior.

Ejemplo en el sistema de numeración decimal Si contamos desde 0, incrementando una unidad cada vez, al llegar a 9 unidades, hemos agotado los símbolos disponi-

bles, y si queremos seguir contando no disponemos de un nuevo símbolo para representar la cantidad que hemos con-

tado. Por tanto añadimos una nueva columna a la izquierda del número, reutilizamos los símbolos de que disponemos,

decimos que tenemos una unidad de segundo orden (decena), ponemos a cero las unidades, y seguimos contando. De igual forma, cuando contamos hasta 99, hemos agotado los símbolos disponibles para las dos columnas; por tanto si

contamos (sumamos) una unidad más, debemos poner a cero la columna de la derecha y sumar 1 a la de la izquierda

(decenas). Pero la columna de la izquierda ya ha agotado los símbolos disponibles, así que la ponemos a cero, y su-mamos 1 a la siguiente columna (centena). Como resultado nos queda que 99+1=100.

Como vemos, un sistema de numeración posicional se comporta como un cuentakilómetros: va sumando 1 a la colum-

na de la derecha y, cuando la rueda de esa columna ha dado una vuelta (se agotanlos símbolos), se pone a cero y se

añade una unidad a la siguiente columna de la izquierda. Pero estamos tan habituados a contar usando el sistema deci-mal que no somos conscientes de este comportamiento, y damos por hecho que 99+1=100, sin pararnos a pensar en el

significado que encierra esa expresión.

Tal es la costumbre de calcular en decimal que la mayoría de la población ni siquiera se imagina que puedan existir otros sistemas de numeración diferentes al de base 10, y tan válidos y útiles como este. Entre esos sistemas se encuen-

tran el de base 2 sistema binario, de base 8 sistema octal y el de base 16 sistema hexadecimal. También los antiguos

mayas tuvieron un sistema de numeración posicional el cual ya no se usa.

Teorema Fundamental de la Numeración

Este teorema establece la forma general de construir números en un sistema de numeración posicional. Primero esta-

bleceremos unas definiciones básicas:

N: número válido en el sistema de numeración. b: base del sistema de numeración. Número de símbolos permitidos en el sistema.

d: un símbolo cualquiera de los permitidos en el sistema de numeración.

n: número de dígitos de la parte entera. ,: coma fraccionaria. Símbolo utilizado para separar la parte entera de un número de su parte fraccionaria.

Page 13: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 13 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

k: número de dígitos de la parte decimal.

La fórmula general para construir un número (cualquier número) N en un sistema de numeración posicional de base b

es la siguiente:

El valor total del número será la suma de cada dígito multiplicado por la potencia de la base correspondiente a la posi-

ción que ocupa en el número.

Esta representación posibilita la realización de sencillos algoritmos para la ejecución de operaciones aritméticas.

El Sistema de Numeración Decimal

El sistema de numeración decimal es el más usado, tiene como base el número 10, o sea que posee 10 dígitos (o

símbolos) diferentes para representar cualquier cantidad numérica: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

La posición de cada dígito en un número decimal indica la magnitud de la cantidad representada y se le puede asignar

un „peso‟. Los „pesos‟ para los números enteros son potencias de 10, que aumentan de derecha a izquierda comenzan-

do por 100 = 1.

Por ejemplo el número decimal 72410 puede ser representado como: 72410= 7x102 + 2x10

1 + 4x10

0

Para los decimales los pesos son potencias de 10 que aumentan de derecha a izquierda con potencias negativas comen-

zando por 10 –1

0,2310 = 0x100+2x10

-1 + 3x10

-2

Sistema Binario

El sistema numérico binario es un sistema posicional de base 2, es decir que posee dos símbolos para representar cual-

quier cantidad numérica: 0 , 1

El equivalente decimal de un número binario se puede obtener a partir del polinomio antes mencionado, de tal forma

que:

110102 = 1 x 2

4 + 1 x 2

3 + 0 x 2

2 + 1 x 2

1 + 0 x 2

0 = 2610

Ejercicio 1: Convertir a decimal el número 101001012

101001012 = 1x 27+0 .2

6+1 x 2

5+0x 2

4+0x2

3+1x2

2+0 x2

1+1 x2

0 =16510

Ejercicio 2: Convertir a decimal el número 11,0112

11,0112 = 1 x21 + 1x 2

0 +0x 2

-1+ 1x 2

-2 +1x 2

-3 = 3,37510

Los dígitos de un número binario se llaman bits. La razón de ser del sistema binario, es que la información que se ma-

nipula dentro de un sistema digital se hace de acuerdo a señales eléctricas. Mediante una señal eléctrica alta, se repre-

senta el valor „1‟ y mediante una señal eléctrica baja se representa el „0‟.

El bit de valor más pequeño (20) se denomina bit menos significativo (LSB Least Significat Bit) y el valor más elevado

de un byte (27) se denomina bit más significativo (MSB Most Significat Bit).

Existen diferentes formas de codificar la información en el sistema binario, la más usual es la codificación en binario

natural, en esta forma de representación cada número es representado por un código de n bits. En la tabla se represen-tan los 16 primeros números binarios:

Sistema Numérico Hexadecimal

El Sistema Numérico Hexadecimal consta de 16 símbolos para representar cualquier cantidad numérica.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Page 14: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 14 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Donde A equivale a 10 en base 10. B equivale a 11 en base 10. C equivale a 12 en base 10. D equivale a 13 en base 10.

E equivale a 14 en base 10. F equivale a 15 en base 10.

Este sistema se utiliza para compactar la información binaria, que es engorrosa de manejar. Se utiliza un dígito hexa-decimal para representar una cadena de 4 dígitos binarios.

Por ejemplo el número (000101011010)2 es más fácil de representar mediante su correspondiente número en base

hexadecimal. Compactamos entonces toda esa cadena de información binaria en sólo 4 dígitos de información en base hexadecimal. El proceso para llevar a cabo este cambio es sencillo. De derecha a izquierda de la cadena numérica, se

van tomando cadenas de 4 dígitos binarios, y se transforman a su correspondiente dígito hexadecimal. Realizando

grupos de 4 bits: 0001 0101 1010 = 15A 16

Decimal Binario Octal Hexadecimal BCD 8421 BCD exc 3 GRAY

0 0000 00 0 0000 0011 0000

1 0001 01 1 0001 0100 0001

2 0010 02 2 0010 0101 0011

3 0011 03 3 0011 0110 0010

4 0100 04 4 0100 0111 0110

5 0101 05 5 0101 1000 0111

6 0110 06 6 0110 1001 0101

7 0111 07 7 0111 1010 0100

8 1000 10 8 1000 1011 1100

9 1001 11 9 1001 1100 1101

10 1010 12 A 0001 0000 0100 0011 1111

11 1011 13 B 0001 0001 0100 0100 1110

12 1100 14 C 0001 0010 0100 0101 1010

13 1101 15 D 0001 0011 0100 0110 1011

14 1110 16 E 0001 0100 0100 0111 1001

15 1111 17 F 0001 0101 0100 1000 1000

16 10000 20 10 0001 0110 0100 1001 11000

Pasando al sistema decimal tenemos:

15A 16 = 1x162 + 5x16

1 + 10x16

0 = 1x256 + 5x16 +10 = 346 10

Sistema Numérico Octal

El Sistema Numérico Octal consta de 8 símbolos para representar cualquier cantidad numérica: 0 , 1 , 2 , 3 , 4 , 5 , 6 ,

7. Al igual que la base hexadecimal, en nuestro caso estos dos sistemas de numeración tienen importancia y se utilizan

por cuanto permiten compactar información binaria en forma sencilla, pero en este caso, la compactación es menor.

Mientras que en la base hexadecimal con un sólo dígito se puede representar una cadena de 4 dígitos binarios, en la base octal un dígito sólo puede representar 3 dígitos binarios. Los dígitos posibles para la base octal, evidentemente,

son los que van del 0 al 7.

Cambio de base

Como ya se vio anteriormente podemos pasar de una representación de una magnitud en un sistema número b a un sis-

tema de numeración de base 10 por aplicación del polinomio:

N = An b

n + An-1 b

n-1 + … + A1 b

1 + A0 b

0 + A-1 b

-1 + A-2 b

-2 + …

Ejemplo 1. Convertir el número (11101)2 a base 10.

Page 15: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 15 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

24 2

3 2

2 2

1 2

0

1 1 1 0 1

Ejemplo 2. Convertir el número binario (1111100)2 a base 10.

26 2

5 2

4 2

3 2

2 2

1 2

0

1 1 1 1 1 0 0

Ejemplo 3. Convertir el número (29)10 en su equivalente en binario.

29 2

1 14 2

0 7 2

1 3 2

1 1 2

1 0

Ejemplo 4. Convertir el número decimal 4573 al sistema hexadecimal

4573 16

13 285 16

13 17 16

1 1

Ejemplo 5. Convertir el número decimal 1036 al sistema octal

1036 8

4 129 8

1 16 8

0 2

Ejemplo 6. Convertir el número binario 011100000001,11000100 a hexadecimal y a octal

a) Hexadecimal

0111 0000 0001 , 1100 0100 = (7 0 1 , C 4)16

b) Octal

011 100 000 001 , 110 001 000 = (3 4 0 1 , 6 1 0)8

Ejemplo 7. Convertir el número octal 673,12 a binario

(6 7 3,12)8 = 110 111 011 , 001 0102

Ejemplo 8. Convertir el número hexadecimal 39,B8 a decimal

(39, B8)16 = 3.161 + 9.16

0 + 11.16

-1 + 8.16

-2

= 48 + 9 + 0,687 + 0,031 = 57,71810

Ejemplo 9. Convertir el número octal 375,42 a decimal

(3 7 5 , 42 )8 = 3 . 82 + 7. 8

1 + 5 . 8

0 + 4 . 8

-1+ 2 . 8

-2 = (229.62) 10

Operaciones con binarios

Suma Binaria: la adición binaria se realiza de la misma forma que en el sistema decimal. El dígito menos significati-

vo se opera primero y el más significativo último. Existen cuatro casos cuando se suman cifras binarias (bits) que se

El número obtenido es

(0 1 1 1 0 1) 2 = 29 10

El número obtenido es

(4 5 7 3) 10 = 11DD16

El número obtenido es

(1 0 3 6) 10 = 20148

= 1.20 + 0.21 + 1.22 + 1.23 + 1.24

= 1 + 0 + 4 + 8 + 16 = 2910

= 1.26 +1.2

5 + 1.2

4 + 1.2

3 + 1.2

2 + 0.2

1 + 0.2

0

= 64 + 32 + 16 + 8 + 4 + 0 + 0 = 12410

Page 16: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 16 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

muestran en la tabla de verdad para dos variables binarias a y b. Como se aprecia en la tabla, cuando las dos variables

toman el valor „1‟ se produce un acarreo.

a b Suma Acarreo

0 0 0 0

0 1 1 0

1 0 1 0 1 1 0 1

Ejemplo:

1 Acarreo

a 1 0 1

b 0 0 1

Resultado 1 1 0

Resta Binaria: Esta operación al igual que la suma sigue las mismas reglas de restar que el sistema decimal, tener en

cuenta cuando se pide prestado 1, se debe 1:

a b Resta Prestado

0 0 0 0 0 1 1 1

1 0 1 0

1 1 0 0

Ejemplo:

1 Prestado

a 1 0 1

b 0 1 1

Resultado 0 1 0

Multiplicación Binaria: El proceso es muy simple ya que las cifras seran „0‟ o „1‟:

a b Multiplicación

0 0 0

0 1 0 1 0 0

1 1 1

Ejemplo:

1 0 0 1 910

1 0 1 1 1110

1 0 0 1

1 0 0 1

0 0 0 0

1 0 0 1

1 1 0 0 0 1 1 9910

División Binaria: El proceso en este caso resulta mas simple que el sistema decimal puesto que cuando se verifica

cuantas veces el divisor “cabe en” el dividendo, solo hay dos posibilidades „0‟ o „1‟.

1 0 0 1 1 1

0 0 0 1 1

1 0 0 Resultado

1 1

0 1 1

Page 17: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 17 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

1 1

0 0 Resto

1 0 1 0 1 0 0

1 0 0 1 0 , 1

0 0 1 0 0 Resultado 1 0 0

0 0 0 Resto

Obsérvese que en el segundo ejemplo se coloco la coma decimal y se agrego un cero para poder continuar con la divi-sión.

Representación de números con signo

Las magnitudes en los sistemas digitales se representan a través de una combinación de bits, en un sistema de 6 bits

podríamos representar cantidades que van desde 0000002 a 1111112 (010 a 6310). Si queremos representar números ne-gativos debemos valernos de algún medio de representación para el signo. Esto se lleva a cabo agregando un bit adi-

cional para representar el signo y estableciendo una convención tal como „0‟ equivales a signo „+‟ y „1‟ equivale a

signo „-„, entonces en nuestro sistema de seis bits las magnitudes que podemos representar van desde –31 a +31

0 1 1 0 0 1 = +25

Signo Magnitud

1 0 0 1 1 0 = -6

El bit de signo se usa para indicar si un número es positivo o negativo, el resto de los bits se usa para representar la

magnitud en forma binaria. Para los números negativos, no obstante existen tres formas de representar la magnitud:

a) En forma de magnitud verdadera b) En forma de complemento a 1

c) En forma de complemento a 2

Forma de magnitud verdadera: la magnitud se representa en binario natural.

Forma de complemento a 1: cuando se representa un número negativo en forma de complemento a 1, el bit de signo se

conserva en „1‟ y la magnitud se complementa a 1. Ejemplo:

-57 = 1 1 1 1 0 0 1 Forma de magnitud verdadera

= 1 0 0 0 1 1 0 Forma de complemento a 1 Bit de signo

Forma de complemento a 2: en este caso la magnitud se complementa a 1 y se le suma 1.

Ejemplo

-57 = 1 1 1 1 0 0 1 Forma de magnitud verdadera = 1 0 0 0 1 1 1 Forma de complemento a 2

Bit de signo

Las tres formas de representación se utilizan en los sistemas digitales, algunos almacenan la información en forma de

magnitud verdadera y la transforman a forma de complemento antes de realizar una operación aritmética.

Ejercicio: represente los siguientes números en formato verdadero y en complemento a 2: 13, -9, -3

Magnitud verdadera Complemento a 2

13 0 1 1 0 1 No corresponde por ser un

numero positivo

-9 1 1 0 0 1 1 0 1 1 1

-3 1 0 0 1 1 1 1 1 0 1

Page 18: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 18 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Ejercicio: los siguientes números son números binarios en complemento a dos, determine el valor decimal: a) 011002,

b) 110102 y c) 100012

a) como el signo es + la magnitud esta expresada en forma verdadera, entonces 011002 = +1210 b) Si complementamos la magnitud C2 = (10102)‟ = 01102 y como el signo se conserva tendremos que 101102 = -

610

c) Si complementamos la magnitud C2 = (00012)‟ = 11112 y como el signo se conserva tendremos que 111112 = - 1510

Resta con complemento:

a = 11012 (13) 10

b = 01112 (7) 10

Representemos los dos números añadiendo un bit de signo (BS) que será 0 si son positivos y 1 si son negativos:

BS

a = 0 11012 (13) 10 b = 0 01112 (7) 10

Realizaremos las siguientes operaciones (a-b) y (b-a) mediante los dos convenios conocidos, el complemento a uno y el complemento a dos.

Complemento a uno: Los números positivos se invierten para obtener los negativos y viceversa.

a = 0 11012 (13) 10 - a = 1 00102 (-13) 10

b = 0 01112 (7) 10 - b = 1 10002 (-7) 10

Las operaciones que debemos realizar se harán sumando los números positivos con los negativos representados con el

método del complemento a uno.

a - b

13 0 1 1 0 1

- 7 + 1 1 0 0 0 6 1 0 0 1 0 1

+ 1

0 0 1 1 0 El carry (acarreo) obtenido del resultado de la suma se añade al resultado parcial para obtener el valor total. El valor

01102 es el valor 6 en decimal.

b - a

7 0 0 1 1 1 - 13 + 1 0 0 1 0

- 6 1 1 0 0 1

Vemos que el bit de signo nos da 1; eso nos indica que l resultado es negativo. Para saber el valor real de la opera-

ción, hay que completar a uno el resultado:

1001 → 0110 complemento a uno.

Complemento a dos: Sabemos que para cambiar el signo de un número se invierte y después se le suma uno, tendre-

mos:

a = 0 11012 (13) 10

- a = 1 00102 + 00012 → - a = 1 00112 b = 0 01112 (7) 10

- b = 1 10002 + 00012 → -b = 1 10012

Page 19: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 19 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Las operaciones que debemos realizar se harán sumando los números positivos con los negativos representados con el

método del complemento a dos.

a - b 13 0 1 1 0 1

- 7 + 1 1 0 0 1

6 1 0 0 1 1 0

Con este método, el carry obtenido del resultado de la suma no se utiliza. El 01102 es el número 6 en decimal.

b - a 7 0 0 1 1 1

- 13 + 1 0 0 1 1

- 6 1 1 0 1 0

El bit de signo toma el valor 1, entonces es negativo. Ahora para saber el resultado real de la operación, es decir, con-

vertir 1010 a positivo, habrá que deshacer el complemento a dos. Primero le restamos 1 y luego invertimos el número;

nos dará 0110 que con el bit de signo es -6.

Sistema binario codificado decimal (BCD)

Recuérdese que en este sistema a cada digito decimal se lo representa por un código binario de cuatro bits así: 1510

(0001 0101 )BCD

Suma: Consideraremos dos casos

a) Cuando el resultado de la suma es menor o igual a 9 (<= 9)

5 0 1 0 1 BCD + 3 0 0 1 1 BCD

8 1 0 0 0 BCD

4 5 0 1 0 0 0 1 0 1 BCD

+ 3 3 0 0 1 1 0 0 1 1 BCD

7 8 0 1 1 1 1 0 0 0 BCD

b) Cuando el resultado de la suma es mayor a 9 (> 9)

6 0 1 1 0 BCD + 7 0 1 1 1 BCD

13 1 1 0 1 BCD código invalido para BCD

Siempre que esto ocurra la suma tiene que ser corregido por la adición de seis (0110) para tomar en cuenta la omisión

de los seis códigos no validos ( 1010, 1011, 1100, 1101, 1110 y 1111)

6 0 1 1 0 BCD + 7 0 1 1 1 BCD

13 1 1 0 1 BCD código invalido para BCD

+ 0 1 1 0 BCD 0 0 0 1 0 0 1 1 BCD

1 3

Resta: Al igual que la suma se debe salvar el error de los códigos inválidos cuando el resultado es superior a 9, en este

caso la corrección se realiza restando seis 7 0 1 1 1 BCD

- 6 0 1 1 0 BCD

1 0 0 0 1 BCD

45 0 1 0 0 0 1 0 1 BCD

Page 20: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 20 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

- 36 0 0 1 1 0 1 1 0 BCD

9 0 0 0 0 1 1 1 1 BCD invalido para BCD

- 0 1 1 0 BCD 0 0 0 0 1 0 0 1 BCD

0 9

Sistema de numeración hexadecimal (Base = 16)

Suma: El procedimiento es igual al decimal, debiéndose recordar que el digito mayor es „F‟ en lugar de „9‟

Ejemplos

5 8 16 La suma de 8 + 4 produce 1210 que es C16

+ 2 4 16

7 C 16

1 (acarreo)

5 8 16 Como B16 es 1110 ==> 816 + B16 = 810 + 1110 = 1910 + 4 B 16 y como 1910 = 1 * 16

1 + 9 * 16

0 = 1316

A 3 16

1 (acarreo)

3 A F 16 Como (F + C)16 es (15 + 12)10 = 2710 = 1B16

+ 2 3 C 16 Como (1+A+3)16 es (1+10+3)10 = 1410 = E16

5 E B 16

Resta: Recuérdese que los números hexadecimales son una forma muy eficaz de representar números binarios. Así,

podemos restar números hexadecimales utilizando el mismo procedimiento que se utiliza en los números binarios. El sustraendo se complementa a 2 y luego se sumara al minuendo, cualquier sobrepasamiento se despreciara. Podemos

mencionar dos métodos para obtener el complemento a 2 de un número hexadecimal: El primer método es transfor-

mando el número hexadecimal en binario, complementar y luego volver a trasformar en hexadecimal.

7 3 A numero en hexadecimal

0111 0011 1010 numero en binario

1000 1100 0110 numero en binario complementado a 2 8 C 6 numero hexadecimal complementado a 2

El segundo método consiste en restar F a cada digito, luego sumarle 1

F F F

-7 -3 -A

8 C 5 + 1

8 C 6 numero hexadecimal complementado a 2

Ejemplo: restar 3 A 516 de 59216

1) complementar 3 A 516 C5B16

2) sumar 5 9 2

+ C 5 B

1 1 E D Resultado = 1 E D16

Códigos Binarios

Se desprecia el acarreo

Page 21: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 21 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Entre las formas de representar un número binario hemos visto el sistema binario natural y el binario codificado deci-

mal (BCD). Recordemos que el código BCD cada digito decimal es codificado en su equivalente binario. La ventaja

del código BCD es la relativa facilidad de conversión, esta facilidad es especialmente importante desde el punto de vista del hardware y especialmente en aquellos casos donde la salida debe mostrarse en forma de dígitos decimales

como ser una calculadora.

El código de Exceso 3: se relaciona con el BCD y algunas veces utiliza en lugar de este debido a que posee ventajas

en ciertas operaciones aritméticas. El código Exceso 3 se efectúa igual que el BCD excepto que antes de la codifica-

ción se le suma 3 al digito decimal.

(8)10 (3)10

1000BCD 0011BCD

(8)10 (3)10

1011EXC3 0110EXC3

8 3

+3 +3

11 6 1011 0110 BCD EXCESO 3

En la siguiente tabla se muestran el código BCD y el Exceso 3, nótese que si bien ambos códigos utilizan 10 de los 16

posibles combinaciones binarias, los códigos inválidos no son los mismos. Mientras el BCD considera como inválidos los códigos 1010, 1011, 100, 1101, 1110, 1111; en el exceso 3 los códigos inválidos son 0000, 0001, 0010, 1101,

1110, 1111.

Decimal BCD Exceso

0 0000 0011

1 0001 0100

2 0010 0101

3 0011 0110

4 0100 0111

5 0101 1000

6 0110 1001

7 0111 1010

8 1000 1011

9 1001 1100

El código de GRAY

Pertenece a una clase de códigos llamado de cambio mínimo en los cuales solo cambia un bit cuando se pasa de una

combinación otra. Este código se utiliza generalmente en dispositivos de entrada y salida y especialmente en aquellas

situaciones donde se hace necesario efectuar controles sobre el sistema por su facilidad de auto detección de errores. Ejemplo: supongamos un sensor de temperatura como entrada a un sistema de control de un horno, si en una variación

de temperatura cambia más de un bit podríamos estar en presencia de un error dado que la temperatura no puede saltar

de 12ºC a 14ºC, si o si debe pasar por 13ºC.

Decimal Código Gray

0 0000

1 0001

2 0011

3 0010

4 0110

5 0111

Solo cambia 1 bit entre dos combi-

naciones consecutivas, en este caso

decimos que el código es CON-

SECUTIVO

Page 22: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 22 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

6 0101

7 0100

Si entre el primer código y el último solo cambia un bit y además el código es consecutivo decimos que el código es

cíclico.

Códigos Alfanuméricos.

En general los sistemas digitales deben poder reconocer código que representen no solo números sino también letras y

caracteres especiales. Estos códigos son llamados código alfanuméricos. Un conjunto completo de caracteres incluye:

26 letras minúsculas

26 letras mayúsculas 10 cifras numéricas

~25 caracteres especiales

O sea aproximadamente 87 caracteres diferentes Para representar 87 caracteres diferentes se requerirán 7 bits ya que con 7 bits podemos representar 2

7 = 128 combina-

ciones posibles.

El código ASCII, American Standard Code for Information Interchange, es el código con el cual operan los microcom-putadores que trabajan bajo el sistema operativo MS-DOS y Windows. Se compone de un conjunto de caracteres de con-

trol, y caracteres imprimibles, numerados del 0 al 255. Ocupa cada uno de ellos un Byte de memoria, es decir ocho bit.

Códigos detectores de errores

El proceso de transferencia de información está sujeto a errores que deben detectarse siempre que sea posible. Uno de los métodos más utilizados es el método de paridad. Este método consiste en agregar un bit adicional al código. El bit

adicional será “0” o “1” dependiendo de la cantidad de unos que tenga el código.

Page 23: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 23 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

El método de paridad puede controlar:

Paridad Par: en este caso el bit de paridad se escoge de manera tal que el número total de unos del código sea par. Si la letra “A” según el código ASCII es (1000001)2 y se agrega un bit de paridad par, el nuevo código para la letra “A”

será 0 1000001

Paridad Impar: al igual que la paridad par pero en este caso el bit de paridad se escoge de manera tal que el número

total de unos del código sea impar. Para el mismo caso de la letra “A” según el código ASCII es (1000001)2 y se agre-

ga un bit de paridad impar, el nuevo código para la letra “A” será 1 1000001

Debe aclararse que este método no detecta el 100% de los errores ya que si dos bit con condición de paridad o impu-

ridad no se alteraría. Por ello el método se utiliza en aquellos sistemas sonde la probabilidad de error es muy baja.

Compuertas Lógicas

Son dispositivos que implementan las diferentes operaciones que existen en el álgebra de Boole. Nos permiten obtener

resultados, dependiendo de los valores de las señales que le ingresemos.

COMPUERTA SÍMBOLO FUNCIÓNES

LÓGICAS

EXPRESIÓN

LÓGICA

TABLA DE

VERDAD

INVERSOR NOT (No) Negación lógica

A F

F = A‟ NOT A

A F

0 1

1 0

AND (Y)

Producto lógico

A

BF

A

BF

F= AB

F= (A‟ + B‟)‟ A AND B

A B F

0 0 0

0 1 0

1 0 0

1 1 1

OR (O)

Suma lógica

A

BF

A

BF

F = A + B

F = (A‟B‟)‟ A OR B

A B F

0 0 0

0 1 1

1 0 1

1 1 1

NAND (No Y)

A

BF

A

BF

F = (AB)‟

F = A‟ + B‟ NOT (A AND B)

A B F

0 0 1

0 1 1

1 0 1

1 1 0

NOR (No O)

A

BF

A

BF

F = (A + B)‟

F = A‟B‟ NOT (A OR B)

A B F

0 0 1

0 1 0

1 0 0

1 1 0

XOR (Oe Exclusiva) Exclusividad lógica

A

BF

F = AB‟ + A‟B A XOR B

A B F

0 0 0

0 1 1

1 0 1

1 1 0

Page 24: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 24 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

XNOR (No Oe Exclu-

siva)

A

BF

F = (AB‟ +

A‟B)‟

F = AB + A‟B‟

NOT (A XOR B)

A B F

0 0 1

0 1 0

1 0 0

1 1 1

Es necesario aclarar que las computadoras digitales utilizan el sistema de números binarios, que tiene dos dígitos 0 y 1.

Un dígito binario se denomina un bit. La información está representada en las computadoras digitales en grupos de bits. Utilizando diversas técnicas de codificación los grupos de bits pueden hacer que representen no solamente núme-

ros binarios sino también otros símbolos discretos cualesquiera, tales como dígitos decimales o letras de alfabeto. Uti-

lizando arreglos binarios y diversas técnicas de codificación, los dígitos binarios o grupos de bits pueden utilizarse pa-

ra desarrollar conjuntos completos de instrucciones para realizar diversos tipos de cálculos. La información binaria se representa en un sistema digital por cantidades físicas denominadas señales, Las señales

eléctricas tales como voltajes existen a través del sistema digital en cualquiera de dos valores reconocibles y represen-

tan una variable binaria igual a 1 o 0. Por ejemplo, de acuerdo a la tecnología utilizada un sistema digital particular puede emplear diferentes voltajes, parti-

cularmente para la tecnología TTL una señal de 0 a 0,4 volts representa el binario 0 y de 2,4 a 5 volts representa el bi-

nario 1 quedando una franja indeterminada o prohibida.

Salida alta

1 lógico

Estado indeterminado

Salida baja

0 lógico

0,4 V

2,4 V

+5V

Siempre podemos representar funciones booleanas con compuertas lógicas, podemos observar que la compuerta XOR se puede representar también con la composición de otras compuertas de tal manera que la tabla de verdad sea

equivalente, es importante notar la expresión lógica resultante.

A

BF

F = A XOR B

F = AB‟ + A‟B

F = A AND NOT B OR NOT A AND B

A

BF

A estos circuitos vamos a denominarlos combinacionales, ya que las salidas dependen de las entradas únicamente.

Veamos algunos ejemplos:

Circuito comparador de un bit:

Page 25: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 25 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

A>B

A=B

A<B

A B

Entradas Salidas

A B A>B A=B A<B

0 0 0 1 0

0 1 0 0 1

1 0 1 0 0

1 1 0 1 0

Las correspondientes funciones lógicas de las salidas serán:

A > B: AB‟ A = B: (AB‟ + A‟B)‟

A < B: A‟B

Circuito semisumador de dos bits:

A

BS

C

Entradas Salidas

A B S (su-ma)

C (aca-rreo)

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Las correspondientes funciones lógicas de las salidas serán:

S: AB‟ + A‟B C: AB

Circuito semirestador de dos bits:

A

BD

Bo

Entradas Salidas

A B D (res-

ta)

Bo (presta-

do)

0 0 0 0

0 1 1 1

1 0 1 0

1 1 0 0

Hay otros circuitos en que las salidas dependen de las entradas y también de las salidas anteriores, a estos se los de-

nominan circuitos secuenciales. El estado de las salidas permanece estable, aunque el estímulo exterior haya desapa-

recido. Esta última característica es la que les confiere la gran importancia que tienen estos circuitos en lógica como

elementos de memoria. Entre los más simples están las básculas, flip-flop o biestables. La explicación está fuera de alcance de este documen-

to.

Báscula RS (Set Reset) R

S

Q

Q’

Entradas Salida

S R Qn+1

0 0 Qn

0 1 0

1 0 1

1 1 ?

Page 26: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 26 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Capitulo 2

"La principal meta de la educación es crear hombres capaces de hacer cosas nuevas y no simplemente de repetir lo que

han hecho otras generaciones: hombres creadores, inventores y descubridores. La segunda meta de la educación es formar mentes que puedan ser críticas, que puedan verificar y no aceptar todo lo que se les ofrece." Jean Piaget.

Si no se aprende, la sinceridad se trueca en grosería; la valentía, en desobediencia; la constancia, en caprichoso empe-

cinamiento; la humanidad, en estupidez; la sabiduría, en confusión; la veracidad, en ruina. Confucio

Ambiente de un Problema

Lo primero a considerar en el proceso de resolución de problemas es la formalización de su ambiente. Vamos a definir

un conjunto de reglas que nos permitirán describir, con precisión y sin ambigüedad, los objetos del universo de un problema.

Una primer característica que diferencia entre sí a los objetos es que cada uno tiene un nombre que lo identifica unívo-camente, o sea, si queremos citar diferentes objetos, damos una lista de sus nombres o identificadores.

Además, cada objeto tiene un uso específico y que no se puede intercambiar. Entonces podemos decir que cada objeto

tiene un tipo particular que indica características comunes a todos los estados posibles del objeto. Otra característica

importante de los objetos es su valor.

Los objetos más simples son los objetos numéricos: enteros y reales; los lógicos y los caracteres.

En cada instante, todo objeto del ambiente tiene un valor (Nota: si no se le da algún valor entonces puede tener un va-

lor indeterminado). Para algunos objetos, este valor puede cambiar luego de la ejecución de una acción. También exis-

ten objetos cuyos valores nunca cambian.

Para resumir, podemos imaginarnos a los objetos de un ambiente, como celdas rotuladas (por el nombre), además la

celda tiene un tamaño determinado (según el tipo) y contiene una información (un valor posible del conjunto de valo-

res de un tipo dado):

Numero Letra

572 ꞌaꞌ

Precisiones acerca de los Objetos

Los objetos se pueden clasificar de la siguiente manera: variables y constantes.

Una variable es un objeto del ambiente cuyo valor puede cambiar y que posee además los siguientes atribu-tos:

- un nombre que la identifica,

- un tipo que describe los valores que puede tomar la variable y las operaciones que con dicha la va-riable pueden realizarse.

Cuando se define una variable, se debe precisar su nombre y su tipo. Definir una variable es crear un objeto para el

procesador. En el momento de la creación de una variable, ésta tiene un valor desconocido.

Una constante es un objeto cuyo valor no puede cambiar.

En la definición de variable hicimos referencia al concepto de tipo. En realidad en la bibliografía puede encontrarse

como tipo de datos. Dato es la expresión general que describe los objetos con los cuales opera un procesador. Existen

diferentes tipos de datos, nosotros nos ocuparemos en este capítulo de los llamados tipos primitivos y, dentro de ellos,

de los más simples: los numéricos (enteros y reales) los lógicos y los caracteres.

El tipo entero, consiste de un conjunto finito de valores de los números enteros, la cardinalidad de este con-

junto depende de las capacidades del procesador.

Page 27: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 27 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

El tipo real, consiste de un conjunto finito de valores de los números reales, la cardinalidad de este conjunto

depende de las capacidades del procesador.

Los números reales siempre tienen un punto decimal; las fracciones se guardan como números decimales porque no

existe forma de guardar separadamente numeradores y denominadores.

El tipo lógico, también llamado tipo booleano, es el conjunto de los valores de verdad: Verdadero (v) y Fal-

so (f).

El tipo caracter es el conjunto finito y ordenado de caracteres que el procesador puede reconocer.

En general el conjunto de caracteres contiene, entre otros:

las letras mayúsculas del abecedario.

las letras minúsculas del abecedario.

los dígitos decimales del 0...9.

el caracter de espacio blanco, caracteres especiales tales como: *, +, -, _, /,(, ), , , , $, ^, %, $, < ,>, “, .

Una constante de tipo caracter se escribe encerrada entre comillas simples, por ejemplo ꞌaꞌ , ꞌ8ꞌ.

Expresiones

Un procesador debe ser capaz de manipular los objetos del ambiente de un algoritmo. Es decir, debe ser capaz de cal-

cular expresiones como: 2 + 3, a>b, etc. Luego:

Una expresión describe un cálculo a efectuar cuyo resultado es un valor único.

Una expresión consta de operadores y operandos. Según el tipo de los objetos que manipula, se clasifican en expre-siones:

aritméticas,

relacionales,

lógicas.

El resultado de una expresión aritmética es de tipo numérico, el de una expresión relacional y el de una expresión lógi-

ca es de tipo lógico.

Expresiones Aritméticas

Un operando de una expresión aritmética puede ser, por ahora, una constante de tipo numérico, una variable de tipo

numérico u otra expresión aritmética, encerrada entre paréntesis. Los operadores aritméticos son:

Operador Significado

+ suma

- resta

* producto

/ división

^ potencia

Como regla general se considera que si dos operandos tienen el mismo tipo, el resultado también es del mismo tipo.

Por ejemplo, la suma de dos números enteros da como resultado otro valor entero. Si uno de los operandos es real el resultado es real. En el caso anterior si sumamos un entero y un real el resultado será real.

A continuación se dan las reglas que nos permitirán determinar cómo se evaluará una expresión de dos o más operan-

dos:

1. Todas las operaciones que están encerradas entre paréntesis se evalúan primero, cuando existen paréntesis anida-

dos las expresiones más internas se evalúan primero.

2. Las operaciones aritméticas, dentro de una expresión, se ejecutan con el siguiente orden o precedencia:

Page 28: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 28 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Orden de precedencia Operadores Significado

1 ^ potenciación (se aplica de de-recha a izquierda)

2 *, / multiplicación y división (se

aplican de izquierda a derecha)

3 +, - suma y resta (se aplican de iz-

quierda a derecha)

La tabla anterior indica que en una expresión primero se evalúa la potenciación, luego el producto y/o la división, que

tienen el mismo nivel de prioridad y, finalmente, la suma y/o resta. Tanto en el caso del producto y/o división como en el de la suma y/o resta cuando en la columna significado se dice

“se aplican de izquierda a derecha” implica que si en una expresión aritmética hay seguidas tres operaciones, por

ejemplo de producto, se comienza a calcular desde el que se encuentra más a la izquierda.

Ejemplo:

6 + 9 * 8 / 2 * 4 - 2 * 3 (6 + 9) * 8 / 2 * (4 - 2) * 3 6 + 72 / 2 * 4 - 2 * 3 15 * 8 / 2 * (4 - 2) * 3

6 + 36 * 4 - 2 * 3 15 * 8 / 2 * 2 * 3

6 + 144 - 2 * 3 120 / 2 * 2 * 3

6 + 144 - 6 60 * 2 * 3 150 - 6 120 * 3

144 360

De la misma manera una fórmula se puede expresar utilizando únicamente paréntesis y los operadores de acuerdo al

orden de precedencia para su resolución:

𝑏2 + 𝑎𝑎𝑐

3𝑋 + 𝑌

−4.5 − 𝑐

567

(b^2+a)/(a*c)/( 3/(X+Y) -(4.5-c^0.5)/567 )

Funciones internas o predefinidas

Además de las operaciones básicas como suma, resta, multiplicación, división y potencia, en general, existe otro con-

junto de operadores especiales llamados funciones internas que el procesador puede ejecutar, se resuelven primero en

orden de precedencia. Por ahora podemos utilizar las siguientes funciones internas aritméticas que el procesador puede interpretar:

Nombre

función

Tipo arg1 Tipo arg2 Tipo resultado Significado

Abs entero - entero valor absoluto

Abs real - real valor absoluto

Mod entero entero entero resto de la /

Otras funciones internas comunes:

Arctan (x) Cos (x)

Sen (x)

Exp (x) Ln (x)

Log 10 (x)

Redondeo (x)

Page 29: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 29 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Trunc (x)

Cuadrado (x)

Raiz (x)

Expresión Relacional

Concepto de predicado: Dados los valores lógicos verdadero y falso

L = {VERDADERO (v), FALSO (f)}

y un conjunto E cualesquiera

Un predicado es una aplicación de E en el conjunto L

Un predicado puede ser verdadero para ciertos elementos de E y falso para otros. Por ejemplo, sea E = {el conjunto de los números naturales} y sobre este conjunto definimos el siguiente predicado P:

“x es par”, el predicado P toma el valor verdadero para ciertos valores de x, es decir, para el conjunto {2, 4, 6, ...}

mientras que toma el valor falso para otros elementos de E {1, 3, 5, ...}. Si por ejemplo, X e Y son dos variables de tipo entero, podemos definir el predicado P= “X es mayor que Y” denotado

como “X > Y” y el conjunto E como el conjunto de pares de números enteros.

Para expresar un predicado o condición a menudo se escribe una comparación entre dos valores del mismo tipo, por

ejemplo ambos valores de tipo entero, real o caracter. Una comparación tal es llamada predicado elemental o expre-

sión relacional.

Para las comparaciones de valores numéricos, caracter y (cadenas de caracteres), los operadores relacionales son:

Operador Relacional Significado

= igual

< menor

<= menor o igual

> mayor

>= mayor o igual

<> distinto

Para la comparación de valores lógicos se usan, sólo, los operadores = y <>.

Si A es una variable entera cuyo valor es 3 y tenemos la constante entera 15, la tabla siguiente ejemplifica el cálculo de algunos posibles predicados:

Predicado Valor

A >= 15 FALSO

A = 15 FALSO

A < 15 VERDADERO

Los predicados elementales o expresiones relacionales pueden combinarse, mediante los conectores u operadores lógi-cos para formar predicados compuestos: Y (conjunción) , O (disyunción) NO (la negación).

Para formalizar estos conceptos, sea una condición p y otra q entonces se pueden definir las tablas de verdad para cada operador lógico como sigue:

Conjunción (Y lógico)

p q p Y q

v v v

Page 30: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 30 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

v f f

f v f

f f f

Como puede desprenderse de la tabla anterior, la conjunción sólo devuelve un valor de verdad verdadero (V) cuando

ambas proposiciones ( p y q) son verdaderas, en cualquier otro caso devuelve falso (F).

La disyunción (O inclusivo lógico) Cuando dos condiciones se combinan mediante O la condición resultante es una disyunción.

La pregunta es ¿Cuándo una disyunción es verdadera? Cuando una de las proposiciones o las dos son verdaderas.

p q p O q

v v v

v f v

f v v

f f f

La disyunción exclusiva (Oe exclusivo lógico)

p q p Oe q

v v f

v f v

f v v

f f f

Los resultados anteriores pueden generalizarse a condiciones compuestas que contengan más de dos condiciones sim-ples.

Negación lógica (NO lógico)

La negación se aplica a un predicado (que puede ser simple o compuesto) y su tabla de verdad es la siguiente:

p NO p

v f

f v

O sea, que simplemente cambia el valor de verdad del predicado.

Es importante notar que una condición que, matemáticamente, se escribe como:

A < B < C

el procesador no la reconocerá, sino que deberá reescribirse como:

(A < B) Y (B < C)

Expresiones Lógicas

Un operando de una expresión lógica puede ser una variable de tipo lógica o una expresión lógica. Los operadores lógicos son los ya definidos en el punto anterior, es decir: NO, Y, O, Oe.

El orden de precedencia de los operadores es:

1º NO (no lógico)

2º Y (conjunción)

3º O (disyunción) Oe (exclusiva)

Page 31: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 31 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Al igual que sucedía con las expresiones aritméticas, si dos operadores de igual prioridad aparecen seguidos la regla de

precedencia indica que se evalúan de izquierda a derecha, por ejemplo:

p Y q Y r se evaluará como (p Y q ) Y r

Ejemplo: Sean X, K y Z tres variables enteras cuyos valores son 1, 3 y 2, respectivamente, y sean los predicados ele-mentales p = “X = 1”, q =“K < 2” y r = “Z = 5”. Veamos, entonces la evaluación de la siguiente condición o predicado

compuesto (de ahora en más nos referiremos, cuando hablemos de predicados, a las condiciones).

Y sea el siguiente predicado compuesto o expresión lógica:

(( X = 1) O (K < 2 )) Y (Z = 5)

Entonces para conocer su valor de verdad se puede construir la tabla de verdad correspondiente:

p q r pO q (p O q) Y r

v v v v v

v v f v f

v f v v v

f v v v v

f f v f f

f v f v f

v f f v f

f f f f f

Para el ejemplo que estamos tratando el resultado final es falso tal cual se señala, remarcado en negrita, en la tabla..

Visto de otra forma más gráfica:

(( X = 1) O( K < 2 )) Y (Z = 5)

v

v

f

f

f

Precedencia de operadores En la siguiente tabla de operadores, la categoría #1 tiene la más alta prioridad de precedencia; la categoría #2 tiene la segunda prelación (jerarquía), y así sucesivamente. Los operadores relacionales tienen la misma prelación.

Operadores y Precedencia

# Categoría Operador Significado

1. Unarios NO

+

-

Negación lógica (NOT)

+ unario

- unario

2. Algebraicos ( ) ^

*, /

+, -

Paréntesis Potencia

Producto y división (igual jerarquía)

Suma y resta (igual jerarquía)

3. Relacionales ( )

=

< >

> > =

Paréntesis

Igual

Diferente

Mayor Mayor o igual

Page 32: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 32 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

<

< =

Menor

Menor o igual

4. Lógicos ( ) No

Y

O, Oe

Paréntesis Negación lógica

Conjunción lógica

Disyunción lógica y exclusividad lógica

Concepto de asignación

En un ambiente dado, para dar valor a una variable, se utiliza el operador de asignación, cuyo símbolo será La asignación es una operación que coloca un valor en una dirección de la memoria RAM. Utilizaremos como símbolo

de asignación (). La dirección de memoria corresponderá a una única variable que se ha definido inicialmente como de

un tipo de datos específico y que en la expresión de asignación se coloca al lado izquierdo del símbolo (). El valor que

toma la variable es el resultado de la evaluación de la expresión que se coloque al lado derecho del () en la expresión

de asignación, tal operación se escribe como:

V E

en la que:

1. V, es el nombre de la variable a la cual el procesador va a asignarle (darle) el valor de E.

2. , identifica al operador de asignación. 3. E, representa el valor a asignar y puede ser una constante, otra variable, o el resultado de la evaluación de una ex-

presión.

Según sea el tipo de V y E, la operación de asignación aritmética se clasifica como entera o real.

En particular, diremos que V E es una asignación aritmética entera si: 1. V, es una variable de tipo entero.

2. E, es una constante entera, una variable entera, una expresión entera o una función primitiva que retorna un valor

entero.

V E es una asignación aritmética real si:

1. V, es una variable de tipo real.

2. E, es una constante real, una variable real, una expresión real o una función primitiva que retorna un valor real.

Ejemplos:

La acción I 1 significa dar a la variable de nombre I, el valor 1.

Es importante remarcar que el número 1 reemplaza al valor que tuviere I antes de que se ejecute la acción de asigna-

ción. Siempre, cuando se asigna a una variable un nuevo valor, el anterior se pierde.

La acción A B significa dar a la variable A el valor de la variable B

Supongamos, por ejemplo, que el estado del ambiente antes de la ejecución de la acción de asignación anterior era: A

contenía el valor 6 y la variable B el valor 7. Gráficamente:

A B

6 7

Luego de la ejecución de la acción primitiva de asignación A B, el resultado es:

Page 33: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 33 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

A B

7 7

Note que mientras A pierde su viejo valor B lo mantiene, entonces podemos decir que la asignación es destructiva.

La acción A E, con E siendo una expresión, significa dar a la variable A el resultado de la evalua-ción de la expresión E.

Ejemplo: Sea la siguiente acción de asignación

SUM 3.5 + 4.0 * (-7.2)

Primero se evalúa la expresión, con las reglas dadas para la evaluación de expresiones, luego el resultado - 32.3 se

asigna a la variable SUM.

La acción I I + x significa incrementar en x el valor de I y guardarlo en la variable I.

donde x puede ser una constante, una variable, el resultado de la evaluación de una expresión o el resultado de la eva-

luación de una función primitiva.

Ejemplo: Sea la siguiente acción de asignación aritmética

I I + 1.0 Si antes de ejecutar la acción de asignación el estado del ambiente con respecto a I era que I contenía el valor 5.6, lue-

go de la ejecución de la acción de asignación el estado del ambiente con respecto a I es que esta variable contendrá el

valor 6.6. Esquemáticamente:

I

5.6

Luego:

I

6.6

Asignación caracter

V E es una asignación de caracter si:

1. V, es una variable de caracter. 2. E, es una constante de caracter.

Asignación Lógica

Diremos que V E es una asignación lógica si:

1. V, es una variable lógica.

2. E, es una constante lógica (VERDADERO (v), FALSO (f)), una variable lógica, una expresión relacional o una expresión lógica.

Ejemplo: Supongamos que H, T y Q son de tipo lógico, luego de ejecutar las siguientes acciones:

H (2 < 5)

Page 34: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 34 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

T H O ( 8 >= 9)

Q f

Los valores de H, T y Q son v, v, y f respectivamente.

Ejemplo: Las siguientes son ejemplos de asignaciones válidas en el ambiente de trabajo: …

contador ← 0

fila ← 25 contador ← contador + 1

ValorReal ← 4.5E12

opcion ← 'B' valor ← RaizCuadrada (144)

La abstracción que debe tener de las asignaciones anteriores, y en la memoria RAM, debe ser la siguiente representación

gráfica y suponiendo que la variable contador estaba en cero: fila contador ValorReal opcion valor

25 1 4.5e12 „B‟ 12.0

Supongamos que a continuación efectuamos las siguientes operaciones de asignación con las mismas variables anteriores:

fila ← fila + contador contador ← (contador + 1) * fila

ValorReal ← - ValorReal

opcion ← 'w' valor ← valor * valor

En memoria RAM quedaría:

fila contador ValorReal opcion valor

26 52 -4.5e12 „w‟ 144.0

Algoritmos y programación

Es un conjunto pre escrito de instrucciones, sentencias, acciones, estructuras o reglas bien definidas, ordenadas y

finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Dados un

estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.

Características del algoritmo preciso, tiene que indicar el orden de realización en cada paso.

definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resul-

tado. finito, es decir, que el algoritmo tiene que tener un número determinado de pasos. Debe producir un resultado

en un tiempo finito. Tiene principio y fin.

sus acciones son primitivas. Si es necesario se recurre al refinamiento sucesivo para que sus acciones sean

primitivas. las acciones no son ambiguas para el procesador.

Es mejorable o evolutivo. Se pueden hacer varios algoritmos distintos que resuelvan el mismo problema.

Resuelve un problema lo más genérico posible. Al modificar los datos se modifican los resultados.

El concepto de programación estructurada como un enfoque científico a la programación de computadoras lo

introdujeron E.W.Dijkstra y C.A.R.Hoare a Fines de los años sesentas. Mediante el análisis matemático de la estructura de los programas, ellos mostraron que podemos evitar muchos errores de diseño de programas mediante un enfoque

sistemático a la programación. Es fundamental en la programación estructurada el diseño adecuado de los algoritmos y el

manejo de las estructuras de datos.

Teorema Fundamental de la Programación Estructurada, [C. Böhm, G. Jacopini]: “Todo programa propio se puede

Page 35: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 35 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

escribir utilizando únicamente las estructuras de control secuencial, condicional e iterativa”

Un programa propio es aquel que:

• Tiene un único punto de entrada y un único punto de salida. • Existen caminos desde la entrada hasta la salida que pasan por todas las partes del programa.

• Todas las instrucciones son ejecutables y no existen bucles sin fin.

La programación estructurada es una forma de escribir programas de ordenador (programación de computadora) de

manera clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso

de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).

Ventajas de la programación estructurada

1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial, sin necesidad de hacer

seguimiento a saltos de línea (GOTO) dentro de los bloques de código para entender la lógica. 2. La estructura del programa es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.

3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se facili-

ta debido a la estructura más visible, por lo que los errores se pueden detectar y corregir más fácilmente. 4. Reducción de los costos de mantenimiento de los programas.

5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).

6. Los bloques de código son auto explicativos, lo que facilita la documentación. 7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan de forma directa, por estar

prohibida su utilización, están incluidas implícitamente en las instrucciones de selección e iteración.

8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor estructura sino también una ex-

celente presentación. 9. La programación estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el

desarrollo de programas es, principalmente, una tarea de dedicación, esfuerzo y creatividad.

En realidad, cuando se programa hoy en día (inicios del siglo XXI) se suelen utilizar, tanto las técnicas de programa-

ción estructurada como las de programación modular, de forma conjunta y por lo tanto es posible que cuando uno haga

referencia a la programación estructurada esté considerando también las técnicas de modularización. Un método un poco más sofisticado es la programación por capas, en la que los módulos tienen una estructura jerár-

quica en la que se pueden definir funciones dentro de funciones o de procedimientos.

Resolución de problemas de programación

La resolución de un problema mediante un ordenador consiste en el proceso que a partir de la descripción de un pro-blema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema, permite desarro-

llar un programa que resuelva dicho problema.

Este proceso exige los siguientes pasos: Análisis del problema.

Diseño o desarrollo de un algoritmo.

Transformación del algoritmo en un programa (codificación). Ejecución y validación del programa.

Los dos primeros pasos son los más difíciles del proceso. Una vez analizado el problema y obtenido un algoritmo que

lo resuelva, su transformación a un programa de ordenador es una tarea de mera traducción al lenguaje de programa-

ción deseado.

Análisis del problema

Cuando un usuario plantea a un programador un problema a resolver mediante su ordenador, por lo general ese usuario

tendrá conocimientos más o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimien-

tos de informática. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa será un experto en contabilidad (dominio del problema), pero no tiene por qué ser experto en programación.

Del mismo modo, el informático que va a resolver un determinado problema puede ser un experto programador, pero

en principio no tiene por qué conocer el dominio del problema; siguiendo el ejemplo anterior, el informático que hace un programa no tiene por qué ser un experto en contabilidad.

Page 36: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 36 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la expe-

riencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solución satisfactoria es

necesario que: El problema esté bien definido con el máximo detalle

Las especificaciones de las entradas y salidas del problema, deben ser descritas también en detalle:

¿Qué datos son necesarios para resolver el problema? ¿Qué información debe proporcionar la resolución del problema?

Diseño del algoritmo

Un algoritmo consiste en una especificación clara y concisa de los pasos necesarios para resolver un determinado pro-

blema, pero para poder diseñar algoritmos es necesario disponer de una notación, que llamaremos „notación algorítmi-

ca‟, que permita: Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...)

Describir los objetos manipulados por el algoritmo (datos/informaciones)

Controlar la realización de las acciones descritas, indicando la forma en que estas se organizan en el tiempo Para poder describir cualquier tipo de acción de las que intervienen en un algoritmo, diversos autores proponen el uso

de un conjunto de construcciones lógicas (secuencia, decisión e iteración) con las que es posible escribir cualquier

programa. Lo que sigue a continuación es la descripción de las diferentes construcciones disponibles para el diseño de algoritmos.

Acciones elementales

Se entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que serán de dos tipos:

Aritmético – lógicas: Operaciones que, a partir de unos determinados datos, realizan un cálculo aritmético (suma, resta, multiplicación,...) o un cálculo lógico (mayor que, menor que, igual que,...).Las primeras devuelven un valor

numérico (4, -5.67,...) y las segundas un valor lógico (verdadero o falso).

De entrada – salida: Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).

Instrucción de escritura en pantalla

Para transferir valores de constantes, variables, expresiones algebraicas, o expresiones delimitadas como cadenas de caracteres de la memoria del computador a la pantalla, emplearemos la instrucción: Escribir , en su forma por defecto.

Esta instrucción, Escribir, insertará datos en el flujo de salida hacia la pantalla; es decir despliega o muestras los valores,

numéricos o de texto, que se le indiquen, en pantalla.

Instrucción de lectura desde teclado

Para transferir datos desde el teclado a la memoria RAM de la computadora utilizaremos la instrucción: Leer. La

instrucción Leer en tiempo de ejecución detiene al computador y espera a que se digite un valor, el valor, el cual puede

ser cualquier secuencia de caracteres ASCII terminados con la tecla de <ENTRAR>, será almacenado en la dirección de memoria de la variable que utilice la instrucción, después de esto el control lo devuelve a la siguiente instrucción del

programa o algoritmo.

Solamente por efectos de presentación en pantalla, debería ir previamente acompañada de una instrucción de impresión

en pantalla, para nuestro caso Escribir, donde se le mostrará al usuario lo que debe digitar a continuación, por ejemplo:

Escribir 'Digite un número: ' Leer N

La instrucción Escribir insertará en el flujo de salida hacia la pantalla la frase que está entre delimitadores y hará que la despliegue. A continuación el algoritmo seguirá secuencialmente en la instrucción del Leer N, el algoritmo se detendrá,

se verá el cursor titilando, en espera de que el usuario digite, en este caso números; la entrada se terminará cuando se

digite la tecla <ENTRAR>.

Las operaciones de entrada/salida

Un algoritmo para que pueda trabajar, entre otras cosas, debe poder operar los datos que se proporcionan mediante un

dispositivo de entrada y poder enviar los resultados después de procesados a un dispositivo de salida. En la forma

estándar o por defecto el dispositivo o archivo de entrada será el teclado y el dispositivo o archivo de salida la pantalla o monitor.

Page 37: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 37 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

La estructura de control secuencial

Las instrucciones se siguen en una secuencia fija. Es decir que las instrucciones se ejecutan de arriba hacia abajo.

Instrucción 1

Instrucción 2

… Instrucción n

Los algoritmos que tengan únicamente acciones de asignación y acciones de entrada y salida, se denominan lineales o secuenciales.

Para el diseño del algoritmo se podrán utilizar las siguientes herramientas: el pseudocódigo, el diagrama estructurado

de Nassi - Shneiderman o el diagrama de flujo.

Ejemplo: Diseñe un algoritmo que dado el radio R en centímetros calcule la longitud de la circunferencia y el área del

circulo.

Pseudocódigo

Diagrama Nassi-Shneiderman

Diagrama de flujo

Algoritmo primero

Constante

PI = 3.1415 Variable

Real: R, L, A

Inicio Leer R

L ← 2*PI*R

A ← PI*R^2

Escribir L, A Fin

Leer R

L ← 2*PI*R

A ← PI*R^2

Escribir L, A

El algoritmo así escrito debe ir documentado en lo que se denomina el ambiente del problema allí se informará de todos

los detalles de los objetos del ambiente. Los objetos pueden ser de entrada, de salida, de entrada salida, intermedia o de

trabajo de acuerdo a si el objeto está en la entrada, la salida, en el proceso o en una combinación de ellas. También en el ambiente se detalla el tipo de dato del objeto y alguna descripción que ayude a comprender mejor el

Page 38: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 38 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

problema.

Para el ejemplo anterior:

Ambiente

Objeto Descripción

PI Constante numérica real, intermedia, representa el número π

R Variable numérica real, de entrada,

representa el radio del círculo, su unidad es el centímetro.

L Variable numérica real, de salida,

representa la longitud de la

circunferencia, su unidad es el centímetro.

A Variable numérica real, de salida,

representa el área del círculo, su

unidad es el centímetro cuadrado.

Ejemplos de algoritmos con instrucciones secuenciales

El siguiente ejemplo presenta en pantalla un texto compuesto de varias líneas, contiene acciones de salida únicamente.

Algoritmo1

Inicio

Escribir (" ... Prevalece la superstición patética de que sabiendo más ")

Escribir ("y más hechos es posible llegar a un conocimiento de la ") Escribir ("realidad. De este modo se descargan en la cabeza de los ")

Escribir ("estudiantes centenares de hechos aislados e inconexos todo ")

Escribir ("su tiempo y toda su energía se pierden en aprender cada vez ") Escribir ("más hechos, de manera que les queda muy poco lugar para")

Escribir ("ejercitar el pensamiento. Es cierto que el pensar carente ")

Escribir ("de un conocimiento adecuado de los hechos sería vacío y ") Escribir ("ficticio pero la 'información' sin teoría puede representar ")

Escribir ("un obstáculo para el pensamiento tanto como su carencia. ... ")

Escribir (" ")

Escribir (" ERICH FROMM ") Escribir (" 'EL MIEDO A LA LIBERTAD' ")

Fin

Ejemplo de diferentes agrupaciones con paréntesis en expresiones algebraicas escriba expresión algebraica para cada

caso y calcúlela manualmente, contiene acciones de salida únicamente.

Algoritmo2 Inicio

Escribir ("1.0 + 2.0 * 3.0 / 4.0 = ", 1.0 + 2.0 * 3.0 / 4.0)

Escribir ("( 1.0 + 2.0 * 3.0 ) / 4.0 = ", (1.0 + 2.0 * 3.0) / 4.0) Escribir ("1.0 + ( 2.0 * 3.0 ) / 4.0 = ", 1.0 + (2.0 * 3.0) / 4.0)

Escribir ("( 1.0 + 2.0 ) * 3.0 / 4.0 = ", (1.0 + 2.0) * 3.0 / 4.0)

Escribir ("(1.0 + 2.0) * (3.0 / 4.0) = ", (1.0 + 2.0) * (3.0 / 4.0)) Escribir ("1.0 + ( 2.0 * 3.0 / 4.0 ) = ", 1.0 + (2.0 * 3.0 / 4.0) )

Escribir ("1.0 + ( (2.0 * 3.0)/ 4.0) = " , 1.0 + ( (2.0 * 3.0) / 4.0) )

Fin

El siguiente algoritmo calcula el volumen de un cilindro, a partir de la lectura del radio de la base y su altura por teclado.

Algoritmo3

Page 39: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 39 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Constante PI = 3.14159

Variable

Real: radio, altura, volumen Inicio

Escribir (" CALCULO DEL VOLUMEN DE UN CILINDRO ")

Escribir ("────────────────────────────────────") Escribir ("Digite el radio de la base del cilindro en centímetros: ")

Leer (radio)

Escribir ("Digite la altura del cilindro en centímetros: ") Leer (altura)

volumen ← PI * radio ^2 * altura

Escribir ("El volumen es de ", volumen, " centímetros cúbicos.")

Escribir("───────────────────────────────") Fin

Se debe digitar por teclado una cantidad en pesos ($) la cual corresponde al Impuesto al Valor Agregado (IVA) cancelado por un cliente en un almacén al cancelar una factura. A continuación digitar por teclado el porcentaje (%) que se aplicó a

la factura. Calcular el total cancelado en la factura y cuánto vale en pesos $ el(los) artículo(s) comprado(s), es decir sin

IVA.

Ejemplo de operaciones de división en expresiones algebraicas.

Algoritmo4 Variable

Entero: a, b

Inicio Escribir ("Digite un número entero: ")

Leer (a)

Escribir ("Digite otro número entero: ")

Leer (b) Escribir ("División entera = ", a DIV b)

Escribir ("División real = ", a / b)

Escribir ("Residuo división= ", a MOD b) Fin

El siguiente código presenta la evaluación de la expresión algebraica: 2a - 3(b + 2a) + 3X [ X - 2(Y -2) ], los valores reales para X y Y son leídos desde teclado. Los valores para las constantes son: a=2 y b=-3

Algoritmo5

Variables Entero: a = 2, b = -3

Real: x, y

Inicio Escribir (" Digite un valor real para X: ")

Leer (x)

Escribir (" Digite un valor real para Y: ") Leer (y)

Escribir ("2a-3(b+2a)+3X[X-2(Y-2)] = ", 2*a-3*(b+2*a)+3*x*(x-2*(y-2)) )

Fin

Se lee un número por teclado y se redondea a la decena más próxima.

Algoritmo7 Variables

Entero: numero

Inicio

Page 40: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 40 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Escribir ("Digite un número entero para redondearlo:")

Leer (numero)

numero ← numero + 5 numero ← numero DIV 10

numero ← numero * 10

Escribir (numero) Fin

El siguiente algoritmo evalúa la expresión cuadrática: Y = ax²-bx+c para valores de los coeficientes: a, b, c, y de la variable x pedidos por teclado.

Algoritmo8

Variables Real: a, b, c, x, y

Inicio

Escribir ("Digite el coeficiente a: ") Leer (a)

Escribir ("Digite el coeficiente b: ")

Leer (b) Escribir ("Digite el coeficiente c: ")

Leer (c)

Escribir ("Digite la variable X: ")

Leer (x) y ← a * x * x - b * x + c

Escribir ("El valor de la variable Y es ", y)

Fin

Se leen cadenas de caracteres desde teclado y luego se muestran en pantalla. Adicionalmente se realiza operación de

asignación de cadenas.

Algoritmo9

Variables

Cadena: nombre1, nombre2 Inicio

Escribir ( "Digite una cadena:")

LeerCadena (nombre1) Escribir (nombre1)

Escribir ( "Digite una cadena: ")

LeerCadena (nombre2)

Escribir (nombre1, " ", nombre2) nombre1 ← nombre2

Escribir ( "Variable nombre1 = ", nombre1 )

Escribir ( "Variable nombre2 = ", nombre2 ) Fin.

Se utilizan funciones matemáticas incorporadas.

Algoritmo10

Variables

Entero: a, b Real: x

Inicio

Escribir ("Digite un entero: ") Leer (a)

Escribir ("Digite entero negativo: ")

Leer (b)

Page 41: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 41 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Escribir ( a, " elevado a la ", b, " es ", a^b )

Escribir ("Valor absoluto de b es ", ABS(b) )

Escribir ("Digite un número real positivo con decimales: ") Leer (x)

Escribir ("Raiz cuadrada de x por b más a es igual a ", Raiz(x*b+a))

Escribir ("Seno de x igual a ", Seno(x)) Escribir ("Coseno de x es " , Coseno(x))

Escribir ("Parte Fraccionaria de x es ", Fraccion(x))

Escribir ("Parte entera de x es ", Entera(x)) Fin.

Conversión de escala termométrica centígrada a Fahrenheit.

Algoritmo11

Variables

Real: Centigrados, Fahrenheit Inicio

Escribir (" Conversión grados centígrados a fahrenheit ")

Escribir (" ───────────────────────────────── ") Escribir ("Digite grados centígrados: ")

Leer (Centigrados)

Fahrenheit ← 9.0 / 5.0 * Centigrados + 32

Escribir ("La temperatura en fahrenheit es: ", Fahrenheit ) Fin

Algoritmo12

Variable Real: IVAenPesos, PorcentajeIVA, TotalFactura, TotalCompraSinIVA

Inicio

Escribir ("Digite cantidad cancelada por concepto de IVA $:")

Leer (IVAenPesos) Escribir ("Digite porcentaje correspondiente al IVA: ")

Leer (PorcentajeIVA)

TotalFactura ← IVAenPesos / (PorcentajeIVA/100) TotalCompraSinIVA ← TotalFactura - IVAenPesos

Escribir ("Total compra sin IVA = ", TotalCompraSinIVA)

Escribir ("IVA = ", IVAenPesos) Escribir ("-------------------------------------------")

Escribir ("Total Cancelado = ", TotalFactura)

Fin

La estructura de control condicional

En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no

en función del valor de una condición.

Los tipos más conocidos de setencias condicionales son el SI..ENTONCES (if..then), el SI..ENTONCES..SI NO

(if..then..else) y el SEGÚN (case o switch), aunque también podríamos mencionar al lanzamiento de errores como una

alternativa más moderna para evitar el "anidamiento" de sentencias condicionales. Las sentencias condicionales constituyen, junto con los bucles, los pilares de la programación estructurada, y su uso es

una evolución de una sentencia en lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de

una condición.

Sentencias condicionales simples

La estructura de las sentencias condicionales simples (Si...Entonces…FinSi y Si...Entonces...Si No… FinSi) se man-

tiene en casi todos los lenguajes de programación, y se representa:

Page 42: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 42 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Pseudocódigo

Diagrama Nassi-Shneiderman

Diagrama de flujo

…. Si <Exp. Lógica>

Entonces

Instrucción(es) FinSi

….

Exp.Lógica

Instruccione(s)

VF

….

Si <Exp. Lógica> Entonces

Instrucción(es)

Afirmativa(s) SiNo

Instrucción(es)

Negativa(s)

FinSi ….

Exp.Lógica

Instruccione(s)

Negativa(s)

Instruccione(s)

Afirmativa(s)

VF

La palabra Entonces (then) en algunos lenguajes es obligatoria (Pascal), en otros no existe (como en C) y en unos ter-

ceros es opcional (como Basic o FoxPro).

Sentencia condicional SEGÚN

Un caso especial de instrucción condicional o alternativa es la estructura alternativa generalizada. Se utiliza cuando el

selector es de tipos ordinal como de caracter o enteros y adicionalmente hay múltiples condiciones a cumplir. Esta

instrucción proporciona una forma clara de bifurcación múltiple.

Pseudocódigo ….

Según Selector hacer

v1: Instrucción(es)

Page 43: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 43 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

v1: Instrucción(es)

…………………..

vn: Instrucción(es) de otro modo

v1: Instrucción(es)

Finsegun …

Diagrama NS

Diagrama de flujo

Nota: la palabra reservada SiNo, es equivalente a sustituirlo por de otro modo

Donde la variable selector es un entero al igual que v1, v2... vn y donde la sentencia que se ejecutará dependerá del va-lor que tome la variable de selector (que reemplaza la expresión lógica). Si la variable de selector es igual a v1 se eje-

cutará el Cuerpo de instrucciones1, si es igual a v2 se ejecutará Cuerpo de instrucciones 2 y así sucesivamente. En ca-

so de que no coincida con ninguno de los valores especificados se ejecutará Cuerpo de instrucciones SiNo.

Ejemplos de algoritmos con instrucciones condicionales simples

El siguiente ejemplo utiliza la instrucción selectiva Si, de la forma más elemental en Decisión simple.

Algoritmo SI_1 Variable

Entero: numero

Inicio Escribir ("Digite un número: ")

Leer (numero)

Si (numero > 100) entonces

Escribir ("Se digitó un número mayor a 100") FinSi

Fin

El siguiente algoritmo utiliza la instrucción selectiva Si, en decisión simple.

Page 44: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 44 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Algoritmo SI_2

Variables Entero: numero

Inicio

Escribir ("Digite un número: ") Leer (numero)

Si (numero > 100) entonces

numero ← numero + 10 Escribir("Se digitó un número mayor a 100 ")

Escribir("y a continuación se incrementa en 10 para dar ")

FinSi

Escribir (numero) Fin.

El siguiente algoritmo utiliza la instrucción selectiva Si en su forma completa y de la forma más elemental, es decir sin bloques de código delimitados.

Algoritmo SI_3 Variables

Entero: numero

Inicio

Escribir ("Digite un número: ") Leer (numero)

Si (numero > 100) entonces

Escribir ("Se digitó un número mayor a 100") Si_no

Escribir ("Se digitó un número menor o igual a 100")

FinSi

Fin.

siguiente algoritmo permite leer desde el teclado dos números y mostrar comentarios que digan: "los dos son positivos" o

"los dos son negativos" o "tienen diferente signo".

Algoritmo SI_4

Variables Real: a, b

Inicio

Escribir ("Digite real: ")

Leer (a) Escribir ("Digite real: ")

Leer (b)

Si ( a > 0 Y b > 0) entonces Escribir("LOS DOS SON POSITIVOS")

Si_no

Si (a < 0 Y b < 0) entonces Escribir("LOS DOS SON NEGATIVOS")

Si_no

Escribir("TIENEN DIFERENTE SIGNO")

FinSi FinSi

Fin.

El siguiente algoritmo utiliza la instrucción selectiva Si en su forma completa de decisión múltiple.

Algoritmo SI_5

Page 45: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 45 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Variables

Entero: numero

Inicio Escribir ("Digite un número: ")

Leer (numero)

Si (numero > 100) entonces Escribir ("Se digitó un número mayor a 100 ")

numero ← numero + 10

Escribir ("y a continuación se incrementa en 10 para dar ") Si_no

Escribir ("Se digitó un número menor o igual a 100 ")

numero ← numero - 10

Escribir ("y a continuación se decrementa en 10 para dar") FinSi

Escribir (numero)

Fin.

El siguiente algoritmo calcula el número medio entre tres enteros, no es el promedio.

Algoritmo SI_6

Variables

Entero: a, b, c

Inicio Escribir ("Digite entero: ")

Leer (a)

Escribir ("Digite entero: ") Leer (b)

Escribir ("Digite entero: ")

Leer (c)

Si ( (b<a Y a<c) O (c<a Y a<b) ) entonces Escribir (a, " es el del medio")

FinSi

Si ( (a<b Y b<c) O (c<b Y b<a) ) entonces Escribir (b, " es el del medio")

FinSi

Si ( (a<c Y c<b) O (b<c Y c<a) ) entonces Escribir (c, " es el del medio")

FinSi

Fin.

El siguiente algoritmo calcula el número medio entre tres enteros, no es el promedio. Segunda versión

Algoritmo SI_7 Variables

Entero: a, b, c

Inicio Escribir ("Digite entero: ")

Leer (a)

Escribir ("Digite entero: ")

Leer (b) Escribir ("Digite entero: ")

Leer (c)

Si ( (b<a Y a<c) O (c<a Y a<b) ) entonces Escribir (a, " es el del medio")

SiNo

Si ( (a<b Y b<c) O (c<b Y b<a) ) entonces

Page 46: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 46 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Escribir (b, " es el del medio")

SiNo

Escribir (c, " es el del medio") FinSi

FinSi

Fin.

Se desarrolla un algoritmo el cual lee desde teclado los datos de una persona así: nombre, edad, sexo y estado civil. Se

debe imprimir el nombre solo si corresponde a un hombre casado menor de 30 años o a una mujer soltera menor de 50 años.

Algoritmo SI_8

Variables Entero: Edad

Caracter: Sexo, EstadoCivil

Caadenar: Nombre Inicio

Escribir ("Digite el nombre del encuestado: ")

Leer (Nombre) Escribir ("Sexo (M/F): ")

Leer (Sexo)

Escribir ("Edad: ")

Leer (Edad) Escribir ("Estado Civil (Casado, Soltero, Otro): ")

Leer (EstadoCivil)

Si ( ( Sexo=='M' Y Edad<30 ) O ( Sexo=='F' Y Edad<50 ) ) entonces Escribir (Nombre, " Cumple una de las condiciones")

SiNo

Escribir ("No cumple ninguna de las condiciones solicitadas")

FinSi Fin.

Se debe digitar por teclado un entero de hasta cuatro dígitos, con el siguiente limitante, que el usuario debe tener en cuenta al digitar: los dos primeros (00 al 23) significan las horas en un reloj de 24 horas, y los dos de la derecha

representan minutos (00 al 59). A continuación se hace aparecer la hora en el formato HH:MM, debiendo aparecer los

cuatro dgitos aún cuando seán ceros. Ejemplo: entrada: 904 debe producir en pantalla 09:04.

Algoritmo SI_9

Variables

Entero: hora, minuto Inicio

Escribir ("Digite entero de hasta cuatro dígitos: ")

Leer (hora) minuto ← hora MOD 100

hora ← hora / 100

Si ( hora < 10 Y minuto < 10 ) entonces Escribir ("0", hora, ":", "0", minuto)

Si_no

Si ( hora < 10 Y minuto >= 10 ) entonces

Escribir ("0", hora, ":", minuto) Si_no

Si ( hora > 10 Y minuto < 10 ) entonces

Escribir (hora, ":", "0", minuto) Si_no

Si ( hora > 10 Y minuto >= 10 ) entonces

Escribir (hora, ":", minuto)

Page 47: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 47 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

FinSi

FinSi

FinSi FinSi

Fin.

Dados dos enteros leídos desde teclado, ¿uno es divisor del otro?

Algoritmo SI_10 Variables

Entero: x, y

Inicio

Escribir ("Digite separados por un espacio dos números enteros: ") Leer (x, y)

Si (x MOD y == 0) entonces

Escribir (y, " es divisor de " , x) SiNo

Si (y MOD x == 0) entonces

Escribir (x, " es divisor de ", y) SiNo

Escribir ("No son divisores entre si")

FinSi

FinSi Fin.

Se calcula el valor de Y en función de X, teniendo en cuenta los siguientes intervalos: Y ← X^2 - 4 si X<4

Y ← X^3 + 2X - 31 si X>4 y X<=10

Y ← 3X^2 - 10.5X - 3 si X>10

Algoritmo SI_11

Variables

Real: x, y Inicio

Escribir ("Digite valor de la variable independiente X: ")

Leer (x) Si (x <= 4) entonces

y ← x*x - 4

SiNo

Si (x <= 10) entonces y ← x^3 + 2*x - 31

SiNo

y ← 3*x*x - 10.5*x - 3 FinSi

FinSi

Escribir ("Variable dependiente Y = ", y) Fin.

Un capital Co, está colocado a un tipo de interes I. Al término de dos años, calcular el capital Final Cf y decir si es el

doble o mayor del inicial. Sabiendo que Cf = Co (1+i), donde n es el periodo en este caso dos años.

Algoritmo SI_12

Variables Real: Co, // capital inicial

Cf, // capital Final

I // interes

Page 48: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 48 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Entero: n // número de periodos

Inicio

Escribir ("Capital inicial $ ") Leer (Co)

Escribir ("Interes en % por periodo de tiempo: ")

Leer (I) I ← I /100

Cf ← Co * (1+I) * (1+I)

Escribir ("Capital Final = $ ", Cf) Si (Cf >= 2*Co) entonces

Escribir ("El Capital es mayor o igual al doble " )

SiNo

Escribir ("El Capital No se duplicó " ) FinSi

Fin.

Dados tres valores numéricos por teclado, a, b c: se imprime el mayor, el menor y se calcula su promedio.

Algoritmo SI_13 Variables

Real: a, b, c, menor, mayor, promedio

Inicio

Escribir ("Digite valor para a: ") Leer (a)

Escribir ("Digite valor para b: ")

Leer (b) Escribir ("Digite valor para c: ")

Leer (c)

Si (a > b Y a > c) entonces

Escribir ("Mayor es ", a) SiNo

Si (b > a Y b > c) entonces

Escribir ("Mayor es ", b) SiNo

Escribir ("Mayor es " , c)

FinSi FinSi

Si (a < b Y a < c) entonces

Escribir (" Menor es " , a)

SiNo Si (b < a Y b < c) entonces

Escribir ("Menor es ", b)

SiNo Escribir ("Menor es " , c)

FinSi

FinSi promedio ← (a + b + c) / 3

Escribir ("Promedio de los tres números = " , promedio)

Fin.

Dado el número de un mes, digitado desde teclado, y si el año es bisiesto, se determina el nombre y el número de días del

mes correspondiente.

Algoritmo SI_14

Variables

Entero: Mes, NumeroDias

Page 49: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 49 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Cadena: NombreMes

Caracter: Bisiesto

Escribir ("Digite el número de un mes(1 - 12): ") Leer (Mes)

Si (Mes = 1) entonces

NombreMes ← " Enero " NumeroDias ← 31

Si_no Si (Mes = 2) entonces

NombreMes ← " Febrero "

Escribir ("¿Es el año bisiesto? (S/N): ")

Leer (Bisiesto) Si (Bisiesto = 'S' O Bisiesto = 's') entonces

NumeroDias ← 29

Si_no NumeroDias ← 28

FinSi

Si_no Si (Mes = 3) entonces

NombreMes ← " Marzo "

NumeroDias ← 31

Si_no Si (Mes = 4) entonces

NombreMes ← " Abril "

NumeroDias ← 30 Si_no

Si (Mes = 5) entonces

NombreMes ← " Mayo "

NumeroDias ← 31 Si_no

Si (Mes = 6) entonces

NombreMes ← " Junio " NumeroDias ← 30

Si_no

Si (Mes = 7) entonces NombreMes ← " Julio "

NumeroDias ← 31

Si_no

Si (Mes = 8) entonces NombreMes ← " Agosto "

NumeroDias ← 31

Si_no Si (Mes = 9) entonces

NombreMes ← " Septiembre "

NumeroDias ← 30 Si_no

Si (Mes = 10) entonces

NombreMes ← " Octubre "

NumeroDias ← 31 Si_no

Si (Mes = 11) entonces

NombreMes ← " Noviembre " NumeroDias ← 30

Si_no

Si (Mes = 12) entonces

Page 50: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 50 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

NombreMes ← " Diciembre "

NumeroDias ← 31

Si_no NombreMes ← " Error "

FinSi

FinSi FinSi

FinSi

FinSi FinSi

FinSi

FinSi

FinSi FinSi

FinSi

FinSi Si ( Mes<1 O Mes>12 ) entonces

Escribir ("Se equivocó al digitar número del 1 al 12")

Si_no Escribir (NombreMes, " tiene ", NumeroDias, " días")

FinSi

Fin.

El siguiente algoritmo permite leer la hora, minutos y segundos en un instante de tiempo y a continuación presenta la

hora un segundo después.

Algoritmo SI_15

Variables

Entero: hora, minuto, segundo

Cadena: AmPm Inicio

Escribir ("Digite hora(0 -23): ")

Leer (hora) Escribir ("Digite minutos (0-59): ")

Leer (minuto)

Escribir ("Digite segundos (0-59): ") Leer (segundo)

Escribir ("Digite AM o PM: ")

Leer (AmPm)

segundo ← segundo + 1 Si (segundo = 60) entonces

segundo ← 0

minuto ← minuto + 1 Si (minuto = 60) entonces

minuto ← 0

hora ← hora + 1 Si (hora = 12) entonces

Si (AmPm = "AM")

AmPm ← "PM"

SiNo AmPm ← "AM"

FinSi

FinSi Si (hora = 13) entonces

hora ← 1

FinSi

Page 51: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 51 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

FinSi

FinSi

Si ( hora < 10 ) Escribir ( "0" )

FinSi

Escribir(hora, ":") Si ( minuto < 10 )

Escribir ( "0" )

FinSi Escribir (minuto, ":")

Si ( segundo < 10 )

Escribir ( "0" )

FinSi Escribir (segundo, " ", AmPm)

Fin.

Una pizzería vende pizzas de tres tamaños: pequeña, mediana y grande. Se determina el precio de venta al público (PVP).

El PVP se determina así:

+ Un costo fijo igual para todos los tamaños

+ Un costo variable, dependiente del tamaño, el cual se determina

multiplicando un factor, obtenido empíricamente, para cada tamaño por su correspondiente costo fijo.

-------------------------------------------------------------------

= Costo de cada pizza * 20% utilidad sobre cada pizza

-------------------------------------------------------------------

= Precio de Venta al Público

En el algoritmo se lee inicialmente el tamaño de la pizza y a continuación aparece el PVP correspondiente. Se supone un

costo fijo de $1000 para cada uno de los tamaños y unos factores para el cálculo del costo variable de: pequeña=1.5,

mediana=2.0 y grande=3.0.

Algoritmo SI_16

Constante Real: CostoFijo = 1000, FactorPequena = 1.5,

FactorMediana = 2.0,

FactorGrande = 3.0

Variables Real: CostoVariable, PVP

Carácter: Tamaño

Inicio Escribir ("Tipos de pizza: Pequeña Mediana Grande")

Escribir ("Digite inicial de tamaño de pizza a comprar: ")

Leer (Tamaño) Si (Tamaño = 'P' O Tamaño = 'p') entonces

CostoVariable ← FactorPequena * CostoFijo

SiNo

Si (Tamaño = 'M' O Tamaño = 'm') entonces CostoVariable ← FactorMediana * CostoFijo

SiNo

CostoVariable ← FactorGrande * CostoFijo FinSi

FinSi

PVP ← (CostoFijo + CostoVariable) * 1.2

Page 52: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 52 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Escribir ("Precio de Venta al Público = $ " , PVP)

Fin.

Se lee desde teclado el nombre de un empleado, su salario básico por hora y el número de horas trabajadas durante una

semana. Se calcula el salario neto, teniendo en cuenta si el número de horas trabajadas a la semana es mayor a 48, esas

horas de más se consideran como extras y tienen un 35% de recargo. Al Final se imprime el nombre y el salario neto a cancelar al empleado.

Algoritmo SI_17 Variables

Cadena: NombreEmpleado

Real: BasicoPorHora, HorasSemanales, HorasExtras, SalarioSemanal

Inicio Escribir ("Digite el nombre y apellido del empleado: ")

Leer (NombreEmpleado)

Escribir ("Digite el salario básico por hora: ") Leer (BasicoPorHora)

Escribir ("Digite el número de horas laboradas en esta semana: ")

Leer (HorasSemanales) Si (HorasSemanales <= 48) entonces

SalarioSemanal ← BasicoPorHora * HorasSemanales

SiNo

HorasExtras ← HorasSemanales - 48 SalarioSemanal ← BasicoPorHora*48 + HorasExtras*BasicoPorHora*1.35

FinSi

Escribir (NombreEmpleado, " devengará esta semana $", SalarioSemanal) Fin.

Se desarrolla un algoritmo para leer desde el teclado el nombre de un empleado, su salario básico por mes y el número

de horas trabajadas durante un periodo de un mes. Se calcula el salario bruto, la retención en la fuente y el salario neto. Para el cálculo de la retención en la fuente se tiene en cuenta lo siguiente:

Para salarios brutos hasta $590,000 no hay retención en la fuente mayores a $590,000 y menores o iguales a $1'000,000 retención del 5%

desde $1'00,001 y menores o iguales a $2'000,00 retención del 8%

mayores a $2'000,000 retención del 12%

Algoritmo SI_18

Variables

Carácter: NombreEmpleado Real: BasicoMensual, HorasMensuales, ReteFuente, SalarioBruto, SalarioNeto, BasicoHora

Inicio

Escribir ("Digite el nombre y apellido del empleado: ") Leer (NombreEmpleado)

Escribir ("Digite el salario básico Mensual: ")

Leer (BasicoMensual) Escribir ("Digite el número de horas laboradas en este mes: ")

Leer (HorasMensuales)

BasicoHora ← BasicoMensual / 30 / 8

SalarioBruto ← BasicoHora * HorasMensuales Si (SalarioBruto <= 590000) entonces

ReteFuente ← 0

SiNo Si (SalarioBruto <= 100000) entonces

ReteFuente ← SalarioBruto*5.0/100

SiNo

Page 53: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 53 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Si (SalarioBruto <= 200000) entonces

ReteFuente ← SalarioBruto*8.0/100

SiNo ReteFuente ← SalarioBruto*12.0/100

FinSi

FinSi FinSi

SalarioNeto ← SalarioBruto - ReteFuente

Escribir ("Nombre Empleado: " , NombreEmpleado) Escribir ("Salario Básico mensual: ", BasicoMensual)

Escribir ("Salario Básico por hora: ", BasicoHora)

Escribir ("Horas trabajadas en el mes: ", HorasMensuales)

Escribir ("Salario Bruto: ", SalarioBruto) Escribir("Retención en la fuente: ", ReteFuente)

Escribir ("Salario Neto A cancelar: $ ", SalarioNeto)

Fin.

Se calcula el jornal a pagar, a destajo, a un trabajador, el cual labora en una empresa que tiene dos turnos: diurno y

nocturno. La tarifa por hora diurna es de $1,000 y la nocturna de $1,500. Si es festivo la tarifa se incrementará en $500 el turno diurno y en $1,000 el nocturno.

Algoritmo SI_19

Variables Cadena: NombreTrabajador

Real: Jornal, Horas

Caracter: Turno, Festivo Inicio

Escribir ("Digite el nombre y apellido del trabajador: ")

Leer (NombreTrabajador)

Escribir ("Turno Diurno o Nocturno (D/N): ") Leer (Turno)

Escribir ("¿Es festivo? (S/N): ")

Leer (Festivo) Escribir ("Número de horas laboradas en el día: ")

Leer (Horas)

Si (Turno = 'D' O Turno = 'd') entonces Si (Festivo = 'S' O Festivo = 's') entonces

Jornal ← Horas * (1000 + 500)

SiNo

Jornal ← Horas * 1000 FinSi

SiNo

Si (Festivo = 'S' O Festivo = 's') Jornal ← Horas * (1500 + 1000)

SiNo

Jornal ← Horas * 1500 FinSi

FinSi

Escribir ("Jornal a cancelar a ", NombreTrabajador, " $", Jornal)

Fin.

Se lee el nombre, edad, sexo y estado civil de una persona y luego se muestra en pantalla si esta persona es mujer mayor

de 40 años y casada, si es un menor de edad, si es menor de edad casado y si es un hombre mayor de 60 años y soltero.

Algoritmo SI_20

Variables

Page 54: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 54 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Cadena: Nombre

Entero: Edad

Caracter: Sexo, EstadoCivil Inicio

Escribir ("Digite el nombre del encuestado: ")

Leer (Nombre) Escribir ("Sexo (M/F): ")

Leer (Sexo)

Escribir ("Edad: ") Leer (Edad)

Escribir ("Estado Civil (Casado, Soltero, Otro): ")

Leer (EstadoCivil)

Si (Sexo = 'M' Y Edad>60 Y EstadoCivil = 'S') entonces Escribir (Nombre, " hombre solterón mayor de 60 años")

Si_no

Si ( Sexo = 'F' Y Edad> 40 Y EstadoCivil = 'C' ) entonces Escribir (Nombre, " es una Mujer Casada mayor de 40 años")

Si_no

Si (Edad < 18) entonces Escribir (Nombre, " es un menor de edad ")

Si (EstadoCivil = 'C' O EstadoCivil = 'c') entonces

Escribir ("casado")

FinSi Si_no

Escribir ("No cumple ninguna de las condiciones solicitadas")

FinSi FinSi

FinSi

Fin.

Dados los datos A, B y C que representan números enteros diferentes, construir un algoritmo para escribir estos

números en forma descendente. Este es un ejemplo de los algoritmos conocidos como de Lógica Pura, ya que poseen

muchas decisiones y muchas bifurcaciones. Entradas: A, B y C.

Salida: A, B y C ordenados descendentemente. La dinámica del problema es comparar dos números a la vez para

conocer cuál es el mayor.

Algoritmo SI_21

Page 55: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 55 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Variables

Real: A, B, C

Inicio Leer (A, B, C)

Si (A>B) entonces

Si (A>C) entonces Si (B>C) entonces

Escribir (A, B, C)

SiNo Escribir (A, C, B)

FinSi

SiNo

Escribir (C, A, B) FinSi

SiNo

Si (B>C) entonces Si (A>C) entonces

Escribir (B, A, C)

SiNo Escribir (B, C, A)

FinSi

SiNo

Escribir (C, B, A) FinSi

FinSi

Fin.

Ejemplos de algoritmos con instrucciones condicionales generalizadas (Según)

Dado el número de un día de la semana, hacer aparecer el nombre del día correspondiente.

Algoritmo Segun_1

Variable

Entero: Dia

Inicio Escribir ("Digite el número de un día de la semana(1 - 7): "

Leer ( Dia )

Segun (Dia) hacer 1: Escribir ("Es día es LUNES")

2: Escribir ("El día es MARTES")

3: Escribir ("El día es MIERCOLES")

4: Escribir ("El día es JUEVES") 5: Escribir ("El día es VIERNES")

6: Escribir ("El día es SABADO" )

7: Escribir ("El día es DOMINGO") SiNo

Escribir ("ERROR, no es un entero válido")

FinSegun Fin.

Se digita un número menor o igual a 1000 y a continuación se muestra su representación en números romanos.

Algoritmo Segun_2

Variables

Entero: numero, unidades, decenas, centenas, resto Cadena: und, dec, cent

Inicio

Page 56: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 56 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Escribir ("Digite número (1 - 1000): ")

Leer ( numero )

centenas ← numero DIV 100 resto ← numero MOD 100

decenas ← resto DIV 10

unidades ← resto MOD 10 Segun (centenas) hacer

0: cent ← ""

1: cent ← "C" 2: cent ← "CC"

3: cent ← "CCC"

4: cent ← "CD"

5: cent ← "D" 6: cent ← "DC"

7: cent ← "DCC"

8: cent ← "DCCC" 9: cent ← "CM"

10:cent ← "M"

FinSegun Segun (decenas) hacer

0: dec ← ""

1: dec ← "X"

2: dec ← "XX" 3: dec ← "XXX"

4: dec ← "XL"

5: dec ← "L" 6: dec ← "LX"

7: dec ← "LXX"

8: dec ← "LXXX"

9: dec ← "XC" FinSegun

Segun (unidades) hacer

0: und ← "" 1: und ← "I"

2: und ← "II"

3: und ← "III" 4: und ← "IV"

5: und ← "V"

6: und ← "VI"

7: und ← "VII" 8: und ← "VIII"

9: und ← "IX"

FinSegun Escribir (cent, dec, und)

Fin.

Dado el número de un mes, digitado desde teclado, y si el año es bisiesto, se determina el nombre y el número de días del

mes correspondiente.

Algoritmo Segun_3 Variables

Entero: Mes, NumeroDias

Cadena: NombreMes Caracter: Bisiesto

Inicio

Escribir ("Digite el número de un mes(1 - 12): ")

Page 57: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 57 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Leer ( Mes )

Segun (Mes) hacer

1: NombreMes ← " Enero " NumeroDias ← 31

2: NombreMes ← " Febrero "

Escribir ("¿Es el año bisiesto? (S/N): ") Leer ( Bisiesto )

Si (Bisiesto == 'S' O Bisiesto == 's')

NumeroDias ← 29 SiNo

NumeroDias ← 28

FinSi

3: NombreMes ← " Marzo " NumeroDias ← 31

4: NombreMes ← " Abril "

NumeroDias ← 30 5: NombreMes ← " Mayo "

NumeroDias ← 31

6: NombreMes ← " Junio " NumeroDias ← 30

7: NombreMes ← " Julio "

NumeroDias ← 31

8: NombreMes ← " Agosto " NumeroDias ← 31

9: NombreMes ← " Septiembre "

NumeroDias ← 30 10: NombreMes ← " Octubre "

NumeroDias ← 31

11: NombreMes ← " Noviembre "

NumeroDias ← 30 12: NombreMes ← " Diciembre "

NumeroDias ← 31

SiNo: NombreMes, " Error "

FinSegun

Si (NombreMes == " Error " Escribir ("Se equivocó al digitar número del 1 al 12")

SiNo

Escribir (NombreMes, " tiene ", NumeroDias, " días" )

FinSi Fin.

Se lee un número entero entre 1 y 999, y a continuación se redondea a la decena más próxima. Se supone operador para división entera: DIV.

Algoritmo Segun_4 Variable

Entero: numero, resto, centena, decena, unidad

Inicio

Escribir ("Digite un número entero para redondearlo:") Leer ( numero )

centena ← numero DIV 100

resto ← numero MOD 100 decena ← resto DIV 10

unidad ← resto MOD 10

Segun (unidad) hacer

Page 58: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 58 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

0: numero ← centena*100 + decena*10

1: numero ← centena*100 + decena*10

2: numero ← centena*100 + decena*10 3: numero ← centena*100 + decena*10

4: numero ← centena*100 + decena*10

5: numero ← centena*100 + (decena+1)*10 6: numero ← centena*100 + (decena+1)*10

7: numero ← centena*100 + (decena+1)*10

8: numero ← centena*100 + (decena+1)*10 9: numero ← centena*100 + (decena+1)*10

FinSegun

Escribir (numero)

Fin.

Tablas de decisión

Una tabla de decisión es una herramienta que me va a servir para representar de manera más fácil la lógica de un pro-

blema cuando está es más o menos complicada. Para ello se trata de identificar en el problema las acciones que hay que ejecutar y las condiciones que se tienen que cumplir para ejecutar esas acciones.

Una tabla de decisión está compuesta por condiciones, acciones, indicador de condiciones e indicador de acciones.

Como se observa la parte de indicadores se divide en columnas, las reglas; son prescripciones que indican qué combi-naciones de condiciones producen tales acciones. Las tablas de decisión simples tienen, tienen en el indicador de con-

diciones, solo valores verdaderos “si” y “no” o, cuando la condición no es relevante un “-“ (da igual). Para el ejemplo

las combinaciones de condiciones en la regla 1 son: cuando hay “buen tiempo” y (AND lógico) “el agua tiene la tem-

peratura adecuada para bañarse”, entonces – sigue la acción – “ir a bañarse” e “ir a la cervecería” (en esta secuencia).

Condiciones (informaciones lógicas) Indicador de condiciones

(valores de las condiciones)

Acciones (instrucciones) Indicador de de acciones

1 2 3

Buen tiempo Si Si No

El agua tiene la temperatura

adecuada para bañarse

Si No -

Ir a bañarse X

Ir a la cervecería X X

Leer un libro X

La regla de decisión es una combinación de un estado en la entrada de condiciones y de una o más acciones asociadas

en la parte de la salida de acciones asociadas en la parte de la salida de acciones siendo N el número de condiciones y considerándolas como binarias (SI/NO) habrá un número máximo de 2 elevado a N reglas.

Cada regla equivale desde el parte de vista de algoritmos a una estructura si…entonces…finsi, y en cada momento so-

lo se puede cumplir una regla. Las tablas de decisión las podemos usar para controlar la lógica de control de un algo-ritmo.

El siguiente es ejemplo muy general de una tabla de decisión. No es necesario que en el indicador de condiciones apa-rezcan todas las combinaciones posibles, sino solamente aquellas que sean relevantes. Las restantes se pueden agrupar

en una regla general SiNo. Luego se agrega una parte del algoritmo que resolvería la situación.

R1 R2 R3 R4 R5 SiNo

B1 Si No No No Si --

B2 No -- Si No Si Si

B3 -- No Si Si -- --

A1 X X

Page 59: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 59 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

A2 X X X

A3 X X X

A4 X X

A5 X

Si B1 Y NO B2 entonces A1, A2, A4 finsi

Si NO B2 Y NO B3 entonces A1, A3 finsi Si NO B1 Y B2 Y B3 entonces A3 finsi

Si NO B1 Y NO B2 Y B3 entonces A1, A3 finsi

Si B1 Y B2 entonces A2, A4 finsi

Si B2 entonces A5 finsi

Realizar el algoritmo correspondiente en pseudocódigo para resolver en todos los casos 𝐹 = 𝐴−𝐵

𝐶

2 , una buena alter-

nativa se encuentra especificada en la siguiente tabla de decisión:

Condiciones Reglas de decisión

C1. C < > 0 Si Si No No

C2. (A - B) / C >= 0 Si No Si No

Acciones

A1. Imposible X X

A2. Solución real X

A3. Solución imaginaria X

Condiciones Reglas de decisión

C1. C < > 0 Si Si No ----

C2. (A - B) / C >= 0 Si No Si ----

Acciones

A1. Imposible X ----

A2. Solución real X

A3. Solución imaginaria X

Ejemplo: Si me hacen precio fijo me compro un corsa, si me hacen precio fijo y me suben el sueldo me compro un fa-

miliar, pero si me toca la lotería me compro un BMW.

Page 60: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 60 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

C1: Precio fijo / precio no fijo

C2: Salario / no salario

C3: Lotería / no lotería A1: No compro un coche

A2: Compro un corsa

A3: Compro un familiar A4: Compro un BMW

Precio fijo S S S S N N N N

Salario S S N N S S N N

Lotería S N S N S N S N

No coche X X

Corsa X

Familiar X

BMW X X X X

Construcción de tablas

Primero localizamos las condiciones en el enunciado, después las acciones y las reglas entre las acciones y las condi-ciones. Después compruebo que la tabla sea correcta. Que no ocurran:

- Redundancias: Poner la misma regla más de una vez.

- Completa: Que no falte alguna regla.

- Contradictoria: Que la misma acción de lugar a cosas contradictorias. Después se mira a ver si se puede simplificar la tabla, añadiendo si es posible indiferencias (cada una sustituye a 2 re-

glas). Una tabla se puede simplificar si hay 2 reglas que dan lugar a la misma acción o conjunto de acciones y solo se

diferencia en el estado o valor de una de sus condiciones, entonces sustituyo esas 2 reglas por una sola, que tenga para esa condición el valor de indiferencia.

Precio fijo - S S N

Salario - S N -

Lotería S N N N

No coche X

Corsa X

Familiar X

BMW X

Conversión de tablas en algoritmos

Primero hay que ver si se puede simplificar la tabla. Hay 2 formas de hacer la conversión: - Programación directa: Que cada regla equivale a una sentencia condicional. Es ineficiente, pero es suficiente para

el desarrollo de nuestros trabajos prácticos.

- Se puede pasar la tabla de decisión a diagrama de flujo o pseucódigo mediante el siguiente el método: 1. Para cada regla al final de su columna ponemos el número de reglas simples a las que equivale. Cada indiferencia

de una regla equivale a 2 reglas simples.

2. Para cada condición al final de su fila hallamos un coeficiente que resulta de la suma de los valores de las reglas para las que esa condición valga indiferente, cuanto menor sea ese valor, más importante es esa regla, porque va a

tener menos reglas para las que esa condición es indiferente.

3. Elijo la condición con menor valor en su coeficiente, si hay varias condiciones que tienen el mismo valor en su co-eficiente y además es el menor, hallo un segundo coeficiente que se obtiene por la diferencia en valor absoluto de

la diferencia entre el número de SI y NO en valor absoluto de esas condiciones, y elijo la que tenga la diferencia

mayor, y si sigue habiendo empate tomo cualquiera de ellas.

4. Para la regla elegida obtengo otras 2 tablas, que se caracterizan porque no contienen ya a la condición por la que he dividido las tablas, y una tabla contiene las reglas para las que esa condición contiene valor SI, y la otra contie-

ne las reglas para las que la condición es NO, y para las reglas con condición indiferencia las pongo en las 2 ta-

Page 61: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 61 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

blas, y con las 2 tablas vuelvo a hacer otra vez lo mismo hasta que no se pueda dividir más, y cada vez que se hace

una división pongo la condición en el diagrama de flujo o pseudocódigo.

Ejemplo anterior:

Precio fijo - S S N 2

Salario - S N - 4

Lotería S N N N 0

No coche X

Corsa X

Familiar X

BMW X

4 1 1 2

Lotería: S

Precio fijo -

Salario -

No coche

Corsa

Familiar

BMW X

Lotería: N

Precio fijo S S N 0

Salario S N - 2

No coche X

Corsa X

Familiar X

BMW

1 1 2

Precio fijo: N

Salario - 2

No coche X

Corsa

Familiar

BMW

2 Precio fijo: S

Salario S N 0

No coche

Corsa X

Familiar X

BMW

1 1 …

Si lotería = „S‟

Entonces

Escribir „BMW‟ sino

Si Precio fijo=‟N‟

Page 62: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 62 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Entonces

Escribir „No coche‟

Sino Si Salario =‟S‟

Entonces

Encribir „Familiar‟ Sino

Escribir „Corsa‟

Finsi finsi

finsi

….

La estructura de control iterativa

La mayoría de los algoritmos requieren que una determinada cantidad de instrucciones se ejecuten más de una vez, a este conjunto de instrucciones se los denominará cuerpo de instrucciones iterativas o cuerpo de iteración. Las estructuras

iterativas a estudiar son Mientras (Exp.Lógica) Hacer…FinMientras, Repetir …HastaQue (Exp. Lógica) y

Para…FinPara, con las primeras dos estructuras se pueden resolver todos los problemas que requieran un cuerpo iterativo terminado con una expresión lógica, son contrariamente equivalentes en la finalización del ciclo repetitivo; en

cambio la tercer estructura es un caso particular de iteración y es utilizada cuando de antemano se conoce la cantidad de

iteraciones que hará el cuerpo iterativo.

Conceptos a tener en cuenta:

Bucle: Un conjunto de instrucciones que se repiten un número finito de veces. Lleva asociado aparte de las ins-

trucciones una condición que es la que determina cuando se termina un bucle. Ejecución de un bucle (iteración).

Los bucles se pueden anidar unos dentro de otros, y puede haber varios bucles al mismo nivel, pero nunca se en-trelazan.

Contador: Un elemento cuyo valor se incrementa o decrementa en un valor constante en cada iteración de un bu-

cle, y se utiliza para controlar la condición del bucle.

Acumulador: Es una variable que también se suele usar en los bucles y que se incrementa o decrementa en cada

iteración del bucle, pero no en una cantidad constante.

Interruptor (marca, bandera o flag): Es una variable que sirve como indicador de una determinada información

y que solo puede tomar uno de dos valores. El valor de la variable tiene asociado un signo y puede variar a lo largo

de la ejecución.

Estructura de control iterativa Mientras (Exp.Lógica) Hacer…FinMientras

Pseudocódigo Diagrama Nassi-Shneiderman Diagrama de flujo

Mientras (Exp. Lógica) hacer

Instrucción(es)

FinMientras …

El ciclo que produce la instrucción Mientras se efectuará, ejecutando las instrucciones que contiene, mientras sea

<Exp. Lógica>

Instrucción(es)

Verdad

Falso

Page 63: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 63 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

verdadera la expresión booleana que lo está controlando.

La expresión booleana que controla el ciclo debe producir un resultado de verdadero o de falso. En algunos lenguajes de programación un valor numérico de 0 será considerado como falso, y cualquier otro valor numérico como verdadero.

Cuando la instrucción Mientras evalúe la expresión booleana que controla el ciclo como falsa, la ejecución lógica del algoritmo continuará secuencialmente después de la instrucción que marca el fin del ámbito de la instrucción, o sea el

FinMientras.

La instrucción Mientras es una palabra reservada, la cual debe ir seguida de una expresión lógica o relacional encerrada

entre paréntesis. La expresión al ser evaluada, si es verdadera decimos que entra la secuencia del algoritmo dentro del

ámbito de la instrucción Mientras, y secuencialmente ejecutará el cuerpo de instrucciones repetitivas hasta encontrar el

FinMientras, en este momento el flujo del algoritmo "vuelve" trasladándose "arriba" a la instrucción Mientras, nuevamente aquí la expresión es evaluada de nuevo, si es verdadera entra la secuencia otra vez al ámbito de la

instrucción, y así sucesivamente hasta que en un momento y dados los cambios ocasionados dentro del ámbito del

Mientras, la condición que controla el ciclo se vuelve falsa, en este momento el flujo del algoritmo se traslada después del FinMientras y el algoritmo seguirá secuencialmente debido a esto decimos que la instrucción Mientras termina.

Si la instrucción de control no toma nunca el valor de falso se producirá un ciclo infinito. Si al evaluarse la primera vez la condición de control, esta llegare a ser falsa, no se ejecutarían las instrucciones contenidas en el ámbito del Mientras, sino

que seguiría secuencialmente el algoritmo después de la instrucción FinMientras.

Algoritmo del máximo común divisor

Calcular el máximo común divisor entre 225 y 180 Factores primos

225 = 32 . 5

2

180 = 22 . 3

2 . 5

mcd (225, 180) = 32 . 5 = 45

Divisores 225 = {1, 3, 5, 9, 15, 25, 45, 75, 225}

180 = {1,2,3,4,5,6,9,10,12,15,18,20,30,36,45,60,90,180}

Algoritmo del máximo común divisor 1. Ingresar dos números naturales A y B.

2. Comparar A con B, si son iguales ir a 4, si no lo son continuar.

3. Comparar A con B, en el lugar del mayor se coloca la diferencia del mayor menos el menor, luego volver a 2. 4. Mostrar A o B, es el máximo común divisor.

A B

225 180

45 180

45 135

45 90

45 45

Page 64: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 64 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Resto de división entera

Resto = Ddo-Ddo/Dsor*Dsor

Ddo Dsor

Resto Cociente

Euclides (330 a.C. - 275 a.C.)

Datos de entrada A y B Mientras B ≠ 0 hacer

R ← resto de A / B

A ← B B ← R

El resultado es A (su último valor).

Calcular el máximo común divisor entre 6936 y 1200

Page 65: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 65 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

A B

6936 1200

5736 1200

4536 1200

3336 1200

2136 1200

936 1200

936 264

672 264

408 264

144 264

144 120

24 120

24 96

24 72

24 48

24 24

A B R

6936 1200 -

6936 1200 936

1200 936 264

936 264 144

264 144 120

144 120 24

120 24 0

24 0 0

Estructura de control iterativa Repetir …HastaQue (Exp. Lógica)

Pseudocódigo Diagrama Nassi-Shneiderman Diagrama de flujo

Repetir Instrucción(es)

Hasta que (Exp.Lógica)

El ciclo que produce la instrucción Repetir...Hasta, seguirá ejecutando las instrucciones del cuerpo de repetición, siempre que sea falsa la expresión booleana que lo está controlando; en otras palabras: se repetirá hasta que la condición de

control (Expresión lógica) se vuelva verdadera; decimos que esta instrucción se sale por abajo. Observe que siempre se

ejecutará al menos una vez el cuerpo de acciones repetitivas.

Algoritmo que calcula y muestra el promedio de las notas del primer parcial de los alumnos del curso de II. Observe el

concepto de acumulador.

Instrucción(es)

Exp. lógicaFalso

Verdad

Page 66: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 66 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Estructura de control iterativa Para…FinPara

La estructura repetitiva Para variable de control (Vc) desde valor inicial (Vi) hasta valor final (Vf) con paso P hacer … FinPara permite que las instrucciones las cuales contiene en su ámbito (cuerpo de repeticiones), se ejecuten un número de

veces determinado, controlado por la variable de control.

Pseudocódigo Diagrama Nassi-Shneiderman Diagrama de flujo

Para Vc desde Vi hasta Vf con paso P hacer Instrucción(es)

FinPara

Una variable de control, que llamamos contador, se incrementa o decrementa desde un valor inicial hasta un valor final.

Supondremos si es que no se asigna un valor de paso en particular tendremos, un incremento de uno en uno y

decrementos de menos uno en menos uno.

Es muy importante tener en cuenta que dentro de las instrucciones del cuerpo repetitivo, no debe haber ninguna acción que modifique las variables del encabezado (Vc, Vi, P, Vf).

El diagrama de flujo siguiente explica el funcionamiento de la estructura Para FinPara cuando la variable de control va incrementado desde el valor inicial para llegar hasta el valor final, Ud. debería deducir los cambios en las acciones para

obtener decremento de la variable de control, observe que la estructura es muy parecida a la estructura iterativa Mientras

FinMientras:

Page 67: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 67 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Algoritmo que calcula y muestra la serie telescópica: S = 1+ 2 + 3 + 4 + … + n converge a n(n+1)/2

Algoritmo serie Variable

Entero: i, N, S

Inicio Leer N

S ← 0

Para i desde 1 hasta N con paso 1 hacer

S ← S + i FinPara

Escribir S

Fin.

Vc <= Vf

Instrucción(es)

Verdad

Falso

Vc ← Vi

Vc ← Vc +P

Page 68: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 68 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Ejercicio: diseñar un algoritmo que calcule y muestre la serie. Realizar la traza.

S = 1 + 3 + 5 + 7 +..... hasta que la acumulación de términos sea mayor que X.

hasta el n-ésimo término.

hasta que el n-ésimo término sea mayor que Q.

Proceso serie

Escribir 'ingrese el valor a superar por la acumulacion'; Leer X;

s <- 0;

i <- 0;

Mientras s <= X Hacer i <- i + 1;

s <- s + (2*i-1);

FinMientras Escribir 'serie= ', s,' termino= ',i;

FinProceso

x s i s <= x

16 ----- ----- -----

16 0 ----- -----

16 0 0 -----

16 0 0 V

16 0 1 V

16 1 1 V

16 1 1 V

16 1 2 V

16 4 2 V

16 4 2 V

16 4 3 V

16 9 3 V

16 9 3 V

16 9 4 V

16 16 4 V

16 16 4 V

16 16 5 V

16 25 5 F

Proceso serie

Escribir 'ingrese el numero de terminos ';

Leer n; s <- 0;

Para i <- 1 Hasta n con Paso 1 Hacer

s <- s + (2*i-1); FinPara

Escribir 'serie=', s;

FinProceso

Proceso serie

Escribir 'ingrese el valor a superar por el termino';

Leer Q; s <- 0;

Page 69: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 69 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

i <- 1;

T <- (2*i-1);

Mientras T <= Q Hacer s <- s + T;

i <- i + 1;

T <- (2*i-1); FinMientras

Escribir 'serie= ', s,' termino= ',i-1;

FinProceso

Ejercicio: Diseñar un algoritmo que calcule y muestre la división entera de dos números enteros mediante restas suce-

sivas. Realizar la traza.

Ejemplos de la Estructura de control iterativa Mientras (Exp.Lógica) Hacer…FinMientras

A continuación se presenta un algoritmo para sumar los 100 primeros números:

Algoritmo Mientras_1

Variables Entero: numero = 0, suma = 0

Inicio

Mientras (numero < 100) hacer

numero ← numero + 1 suma ← suma + numero

FinMientras

Escribir ("Sumatoria del 1 al 100 = " , suma) Fin.

Se presenta la serie de los números pares entre 2 y 100:

Algoritmo Mientras_2

Variables

Entero: x = 0, suma = 0 Inicio

Mientras (x < 100 ) hacer

x ← x + 2 Escribir (x, " ")

suma ← suma + x

FinMientras

Escribir ("LA SUMA DE LOS NUMEROS PARES ES: ", suma) Fin.

Se presenta la serie de los primeros 100 números impares en pantalla y se efectúa su sumatoria:

Algoritmo Mientras_3

Variables Entero: i=0, impar, suma = 0

Inicio

Mientras (i < 100 ) hacer

i ← i + 1 impar ← i * 2 - 1

Escribir (impar, " ")

suma ← suma + impar FinMientras

Escribir ("LA SUMA DE LOS ANTERIORES IMPARES ES: ", suma)

Page 70: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 70 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Fin.

Serie de los n primeros términos de la serie: 1*2*3 + 2*3*4 + 3*4*5 + 4*5*6 …

Algoritmo Mientras_4

Variables Entero: i=0, n=0

Real: suma=0

Inicio Escribir ("Digite el valor de N: ")

Leer (n)

Mientras( i<n ) hacer

i ← i + 1 Escribir ( i, " * ", i+1, " * ", i+2, " + ")

suma ← suma + i * (i+1) * (i+2)

FinMientras Escribir ("Sumatoria = ", suma)

Fin.

Se calcula la siguiente serie: S = - 1 + 2 - 3 + 4 -5 ...

Algoritmo Mientras_5

Variables Entero: i=0, n

Real: suma=0

Inicio Escribir ("Ingrese un número:")

Leer (n)

Mientras ( i < n ) hacer

i ← i + 1 Si (i MOD 2 = 0) entonces

Escribir ( i)

suma ← suma + i SiNo

Escribir (-i)

suma ← suma - i FinSi

FinMientras

Escribir (" Sumatoria = ", suma)

Fin.

Se calcula la siguiente serie: S = - 2 + 4 - 6 +8 - 10 + 12 - 14 ...

Algoritmo Mientras_6

Variables

Entero: n, suma=0, termino, i=0, potencia Inicio

Escribir ("Digite la cantidad de términos en la serie: ")

Leer (n)

Mientras ( i < n ) hacer i ← i + 1

Si (i MOD 2 = 0) entonces

termino ← 2 * i SiNo

termino ← 2 * (-i)

FinSi

Page 71: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 71 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

suma ← suma + termino

Escribir ( termino )

FinMientras Escribir ("LA SUMA ES: ", suma)

Fin.

Se imprimen en pantalla los números primos entre 2 y 2000

Algoritmo Mientras_7 Constante

Entero: Verdad=1, Falso=0

Variables

Entero: n=2, divisor, EsPrimo Inicio

Escribir ("NUMEROS PRIMOS ENTRE 2 Y 2000")

Escribir ( n ) // El 2 es el único primo que es par n ← 1

Mientras (n < 2000) hacer

n ← n + 2 // se generan solo números impares EsPrimo ← Verdad

divisor ← 3

Mientras ( ( divisor <= RaizCuadrada(n) ) Y EsPrimo ) hacer

Si (n MOD divisor = 0) entonces EsPrimo ← Falso

SiNo

divisor ← divisor + 2 FinSi

FinMientras

Si (EsPrimo) entonces

Escribir ( n ) FinSi

FinMientras

Fin.

Descomposición de un número en sus factores primos:

Algoritmo Mientras_8

Variables

Entero: numero, impar = 3

Inicio Escribir ("Digite un Número para calcularle sus factores primos: ")

Leer (numero)

Mientras ( (numero MOD 2) = 0 ) hacer Escribir ( 2 )

numero ← numero / 2

FinMientras Mientras (impar <= (RaizCuadrada(numero) + 1) ) hacer

Mientras (numero MOD impar = 0 ) hacer

Escribir ( impar )

numero ← numero / impar FinMientras

impar ← impar + 2

FinMientras Si ( numero > 1 ) entonces

Escribir ( numero )

FinSi

Page 72: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 72 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Fin.

Algoritmo de Euclides sobre el máximo común divisor entre dos números m y n.

Algoritmo Mientras_9

Variables Entero: m, n, aux, diferencia

Inicio

Escribir ("Digite m: ") Leer (m)

Escribir ("Digite n: ")

Leer (n)

Mientras (m <> n) hacer Si (m < n) entonces

aux ← m

m ← n n ← aux

FinSi

diferencia ← m - n m ← n

n ← diferencia

FinMientras

Escribir ("M.C.D. = " , m) Fin.

Encontrar raíces de función entre intervalos dados por error y ensayo: Evaluar la función: 𝑦 = 𝑥3 − 9𝑥2 + 23𝑥 − 15 entre el intervalo a = - 1 y b = 7 con incrementos de x leído por teclado.

Algoritmo Mientras_10

Variables Real: a, b, x, y, DeltaX

Inicio

Escribir ("Digite valor inicial intervalo (Xo): ") Leer (a)

Escribir ("Digite valor final intervalo (Xf): ")

Leer (b)

Escribir ("Digite incremento en X: ") Leer (DeltaX)

x ← a

Escribir ("───────────────────────────") Escribir (" X Y ")

Escribir ("───────────────────────────")

Mientras (x <= b) hacer y ← x^3 - 9*x^2 + 23*x - 15

Si (y = 0) entonces

Escribir (" ", x, " ", y, " Raiz exacta")

Si_no Escribir (" ", x, " ", y)

FinSi

x ← x + DeltaX FinMientras

Escribir ("───────────────────────────")

Fin.

Leer un número en cualquier base, desde el 2 al 9, y obtener una respuesta en base diez. No hace validaciones de si el

número es de esa base o no. Ejemplo: convertir el número 1110 en base 2 a base 10

Page 73: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 73 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

1110 => en decimal: 0*20 + 1*2

1 + 1*2

2 + 1*2

3 = 0 + 2 + 4 + 8 = 14

Para esto se debe descomponerse el número en sus dígitos dividiendo sucesivamente entre 10, así:

1110 │ 10 0 ├────

111 │ 10

1 ├──── 11 │ 10

1 ├────

1 │ 10

├──── 0 ← se hacen divisiones entre 10 hasta obtener un cociente de cero.

Algoritmo Mientras_11 Variables

Entero: numero, base_origen, cociente, digito, decimal, potencia

Inicio Escribir ("Digite número en base del 2 al 9(cero para terminar): ")

Leer (numero)

Mientras ( numero > 0 ) hacer

Escribir ("base del número digitado: ") Leer (base_origen)

potencia ← 1

cociente ← numero / 10 digito ← numero MOD 10

decimal ← digito * potencia

Mientras (cociente > 0) hacer

digito ← cociente MOD 10 cociente ← cociente / 10

potencia ← potencia * base_origen

decimal ← decimal + potencia * digito FinMientras

Escribir ("en base 10 = ", decimal)

Escribir ("Digite número en base del 2 al 9 (cero para terminar): ") Leer (numero)

FinMientras

Fin.

Sume los N primeros términos de la siguiente serie:

Algoritmo Mientras_12

Variables Real suma = 0, termino

Entero: i = 0, N

Inicio Leer (N)

Mientras (i < N) hacer

i ← i + 1

termino ← 1 / (2*i-1)^2 Escribir (termino)

suma ← suma + termino

FinMientras Escribir ("Sumatoria = " , suma)

Fin.

Page 74: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 74 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Ejemplos de la Estructura de control iterativa Repetir …HastaQue (Exp. Lógica)

A continuación se presenta un algoritmo para sumar los 10 primeros números:

Algoritmo Repetir_1

Variables

Entero: numero, suma

Inicio numero ← 0

suma ← 0

Repetir numero ← numero + 1

suma ← suma + numero

Hasta que numero = 10

Escribir ("Sumatoria del 1 al 10 = ", suma) Fin.

Algoritmo de Euclides sobre el Máximo Común Divisor. Algoritmo Repetir_2

Variables

Entero: m, n, aux, resto Inicio

Escribir ( "Digite m: " )

Leer ( m )

Escribir ( "Digite n: " ) Leer ( n )

Repetir

Si (m < n) aux ← m

m ← n

n ← aux FinSi

resto ← m - n

m ← n

n ← resto Hasta que m = n

Escribir ( "El m.c.d = ", m )

Fin.

El siguiente algoritmo efectúa una división utilizando solo la operación de resta.

Algoritmo Repetir_3

Variables Entero: D, d, m, s, r, c

Caracter: opcion

Inicio Repetir

Escribir ( "Digite un número entero: " )

Leer ( D ) Escribir ( "Digite otro entero, menor al anterior: " )

Leer ( d )

Si (d <> 0)

c ← 0 m ← D

s ← d

Mientras (m >= 0) c ← c + 1

r ← m

Page 75: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 75 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

m ← m - s

FinMientras

Escribir ( "C = ", c-1, " R = ", r SiNo

Escribir ( "Error" )

FinSi Escribir ( "Desea continuar?(S/N): " )

Leer ( opcion )

Hasta que ( opcion = 'N' O opcion = 'n') Fin.

Efectúe la prueba de ejecución manual al siguiente algoritmo:

Algoritmo Repetir_4

Variables

Entero: e1, e2 Inicio

Escribir ( "Digite enteros mayores a cero. (Iguales para términar)"

Repetir Repetir

Escribir ( "Primer entero: ")

Leer ( e1 )

Hasta que (e1 > 0) Repetir

Escribir ( "Segundo entero: ")

Leer ( e2 ) Hasta (e2 > 0)

Si (e2 > e1)

e2 ← e2 - e1

SiNo Si (e1 > e2)

e1 ← e1 - e2

FinSi Escribir ( "Primer entero = ", e1, "Segundo entero = ", e2

Hasta (e1 = e2)

Fin.

Ejemplos de la Estructura de control iterativa Para…FinPara

Efectúe la prueba de ejecución en forma manual del siguiente algoritmo.

Algoritmo PARA_01 Variables

Entero: N, i

Real: suma = 0 Inicio

Escriba("Introducir un número entero: ")

Leer ( N ) Para i desde 1 hasta N hacer

Escribir ( i )

suma ← suma + i

FinPara Escribir ("La suma del 1 al ", N, " es ", suma)

Fin.

Efectúe prueba de ejecución manual del siguiente algoritmo.

Page 76: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 76 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Algoritmo PARA_2

Variables

Entero: i, j, N, termino=0 Inicio

Leen (N) // Pruebe con N=6

Para i desde 1 hasta N hacer Para j desde i hasta N hacer

termino ← termino + i

Escribir ( termino ) FinPara

FinPara

Fin.

Se calcula la siguiente serie: S = 1 + 2 + 3 - 4 + 5 + 6 + 7 - 8 + ...

Algoritmo PARA_3 Variables

Entero: n, suma=0, i=1

Inicio Escribir ("DIGITE UN VALOR PARA N:")

Leer (n)

Para i desde 1 hasta N hacer

Si ( i % 4 = 0 ) Escribir ( -i )

suma ← suma - i

SiNo suma ← suma + i

Escribir ( i )

FinSi

FinPara Escribir ("Sumatoria = ", suma)

Fin.

Obtenga la sumatoria de los N primeros términos de la siguiente serie:

1 +1

2!+ 3 +

1

4!+ 5 +

1

6!…

Algoritmo PARA_4 Variables

Entero: N, Factorial=1, i

Real SumatoriaSerie=0

Inicio Escribir ("n = ")

Leer (N)

Para i desde 1 hasta N hacer SumatoriaSerie ← SumatoriaSerie + i

Factorial ← Factorial * i

i ← i + 1

Si (i <= N ) entonces Factorial ← Factorial * i

SumatoriaSerie ← SumatoriaSerie + 1.0 / Factorial

FinSi FinPara

Escribir ("Sumatoria Serie = ", SumatoriaSerie)

Fin.

Page 77: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 77 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Un número es perfecto si la suma de sus divisores excepto él mismo es igual al propio número. Por ejemplo:

Numero 6 28 36

Divisores 1

2

3

1

2

4 7

14

1

2

4 6

12

18

Sumatoria 6 28 52

De lo anterior se deduce que el 6 y el 28 son números perfectos, el 36 no lo es.

Algoritmo PARA_5

Variables

Entero: numero, i, suma Inicio

Escribir ("Ingrese un número mayor de 200… ")

Leer (numero)

Escribir ("ESPERE UN MOMENTO... ") Para i desde 1 hasta numero hacer

suma ← 0

i ← 1 Mientras ( i <= (numero / 2) ) hacer

Si (numero MOD i = 0) entonces

suma ← suma + i FinSi

i ← i + 1

FinMientras

Si (suma = numero) entonces Escribir (numero)

FinSi

FinPara Fin.

Capitulo 3

"El gran peligro de hoy, son las consignas, las opiniones colectivas, las corrientes de pensamiento hechas a medida. Debemos estar en condiciones de resistir, de criticar, de distinguir entre lo probado y lo que no ha sido comprobado.

Por ello necesitamos alumnos activos, que puedan aprender pronto a descubrir por sí mismos, en parte mediante su ac-

tividad, espontánea y en parte por medio de materiales que les proporcionamos; que aprendan pronto a determinar qué

es verificable y qué es simplemente lo primero que se les viene a la mente." Jean Piaget.

"Por la ignorancia nos equivocamos, y por las equivocaciones aprendemos." Proverbio Romano.

Pruebas de software

“El testing puede probar la presencia de errores pero no la ausencia de ellos” Edsger Dijkstra

Una de las últimas fases del ciclo de vida antes de entregar un programa para su explotación, es la fase de pruebas.

Una de las sorpresas con las que suelen encontrar los nuevos programadores es la enorme cantidad de tiempo y esfuer-zo que requiere esta fase. Se estima que la mitad del esfuerzo de desarrollo de un programa (tanto en tiempo como en

gastos) se va en esta fase. Si hablamos de programas que involucran vidas humanas (medicina, equipos nucleares, etc)

el costo de la fase de pruebas puede fácilmente superar el 80%.

Page 78: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 78 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Pese a su enorme impacto en el coste de desarrollo, es una fase que muchos programadores aún consideran clasificable

como un arte y, por tanto, como difícilmente conceptualizable. Es muy difícil entrenar a los nuevos programadores,

que aprenderán mucho más de su experiencia que de lo que les cuenten en los cursos de programación. Aún siendo una tarea abocada al fracaso, voy a intentarlo.

¿Qué es probar?

Como parte que es de un proceso industrial, la fase de pruebas añade valor al producto que se maneja: todos los pro-

gramas tienen errores y la fase de pruebas los descubre; ese es el valor que añade. El objetivo específico de la fase de pruebas es encontrar cuantos más errores, mejor.

Es frecuente encontrarse con el error de afirmar que el objetivo de esta fase es convencerse de que el programa funcio-

na bien. En realidad ese es el objetivo propio de las fases anteriores (¿quién va a pasar a la sección de pruebas un pro-ducto que sospecha que está mal?). Cumplido ese objetivo, lo mejor posible, se pasa a pruebas. Esto no obsta para re-

conocer que el objetivo último de todo el proceso de fabricación de programas sea hacer programas que funcionen

bien; pero cada fase tiene su objetivo específico, y el de las pruebas es destapar errores.

Probar un programa es ejercitarlo con la peor intención a fin de encontrarle fallos. Por poner un ejemplo duro, probar un programa es equivalente a la actividad de ciertos profesores para los que exami-

nar a un alumno consiste en poner en evidencia todo lo que no sabe. Esto es penoso cuando se aplica a personas; pero

es exactamente lo que hay que hacerle a los programas. La Prueba Exhaustiva es Imposible

La prueba ideal de un sistema sería exponerlo en todas las situaciones posibles, así encontraríamos hasta el último fa-

llo. Indirectamente, garantizamos su respuesta ante cualquier caso que se le presente en la ejecución real.

Esto es imposible desde todos los puntos de vista: humano, económico e incluso matemático. Dado que todo es finito en programación (el número de líneas de código, el número de variables, el número de valores

en un tipo, etc etc) cabe pensar que el número de pruebas posibles es finito. Esto deja de ser cierto en cuanto entran en

juego bucles, en los que es fácil introducir condiciones para un funcionamiento sin fin. Aún en el irrealista caso de que

el número de posibilidades fuera finito, el número de combinaciones posibles es tan enorme que se hace imposible su identificación y ejecución a todos los efectos prácticos.

Probar un programa es someterle a todas las posible variaciones de los datos de entrada, tanto si son válidos como si

no lo son. Imagínese hacer esto con un compilador de cualquier lenguaje: ¡habría que escribir, compilar y ejecutar to-dos y cada uno de los programas que se pudieran escribir con dicho lenguaje!

Sobre esta premisa de imposibilidad de alcanzar la perfección, hay que buscar formas humanamente abordables y ecó-

nomicamente aceptables de encontrar errores. Nótese que todo es muy relativo y resbaladizo en este área. Organización

Hay multitud de conceptos (y palabras clave) asociadas a las tareas de prueba. Clasificarlas es difícil, pues no son mu-

tuamente disjuntas, sino muy entrelazadas. En lo que sigue intentaremos la siguiente estructura para la presentación:

Fases de prueba:

UNIDADES Planteamientos:

o CAJA BLANCA

Cobertura: de segmentos

de ramas

de condición/decisión de bucles

o CAJA NEGRA

Cobertura de requisitos

INTEGRACIÓN ACEPTACIÓN

La prueba de unidades se plantea a pequeña escala, y consiste en ir probando uno a uno los diferentes módulos que

constituyen una aplicación. Las pruebas de integración y de aceptación son pruebas a mayor escala, que puede llegar a dimensiones industriales

cuando el número de módulos es muy elevado, o la funcionalidad que se espera del programa es muy compleja.

Las pruebas de integración se centran en probar la coherencia semántica entre los diferentes módulos, tanto de semán-tica estática (se importan los módulos adecuados; se llama correctamente a los procedimientos proporcionados por ca-

da módulo), como de semántica dinámica (un módulo recibe de otro lo que esperaba). Normalmente estas pruebas se

van realizando por etapas, englobando progresivamente más y más módulos en cada prueba.

Page 79: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 79 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Las pruebas de integración se pueden empezar en cuanto tenemos unos pocos módulos, aunque no terminarán hasta

disponer de la totalidad. En un diseño descendente (top-down) se empieza a probar por los módulos más generales;

mientras que en un diseño ascendente se empieza a probar por los módulos de base. El planteamiento descendente tiene la ventaja de estar siempre pensando en términos de la funcionalidad global; pero

también tiene el inconveniente de que para cada prueba hay que "inventarse" algo sencillito (pero fiable) que simule el

papel de los módulos inferiores, que aún no están disponibles. El planteamiento ascendente evita tener que escribirse módulos ficticios, pues vamos construyendo pirámides más y

más altas con lo que vamos teniendo. Su desventaja es que se centra más en el desarrollo que en las espectativas fina-

les del cliente. Estas clasificaciones no son las únicas posibles. Por ejemplo, en sistemas con mucha interacción con el usuario es fre-

cuente codificar sólo las partes de cada módulo que hacen falta para una cierta funcionalidad. Una vez probada, se

añade otra funcionalidad y así hasta el final. Esto da lugar a un planteamiento más "vertical" de las pruebas. A veces se

conoce como "codificación incremental". Por último, las pruebas de aceptación son las que se plantea el cliente final, que decide qué pruebas va a aplicarle al

producto antes de darlo por bueno y pagarlo. De nuevo, el objetivo del que prueba es encontrar los fallos lo antes posi-

ble, en todo caso antes de pagarlo y antes de poner el programa en producción. Prueba de Unidades

¿Cómo se prueban módulos sueltos?

Normalmente cabe distinguir una fase informal antes de entrar en la fase de pruebas propiamente dicha. La fase infor-

mal la lleva a cabo el propio codificador en su despacho, y consiste en ir ejecutando el código para convencerse de que "básicamente, funciona". Esta fase suele consistir en pequeños ejemplos que se intentan ejecutar. Si el módulo falla, se

suele utilizar un depurador para observar la evolución dinámica del sistema, localizar el fallo, y repararlo.

En lenguajes antiguos, poco rigurosos en la sintaxis y/o en la semantica de los programas, esta fase informal llega a ser

muy dura, laboriosa, y susceptible de dejar pasar grandes errores sin que se note. En lenguajes modernos, con reglas estrictas, hay herramientas que permiten análisis exhaustivos de los aspectos estáticos de la semántica de los progra-

mas: tipado de las variables, ámbitos de visibilidad, parámetros de llamada a procedimientos, etc etc

Hay asimismo herramientas más sofisticadas capaces de emitir "opiniones" sobre un programa y alertar de construc-ciones arriesgadas, de expresiones muy complicadas (que se prestan a equivocaciones), etc. etc. A veces pueden pre-

venir sobre variables que pueden usarse antes de tomar algún valor (no inicializadas), variables que se cargan pero

luego no se usan, y otras posibilidades que, sin ser necesariamente errores en sí mismas, sí suelen apuntar a errores de verdad.

Más adelante, cuando el módulo parece presentable, se entra en una fase de prueba sistemática. En esta etapa se em-

pieza a buscar fallos siguiendo algún criterio para que "no se escape nada". Los criterios más habituales son los deno-

minados de caja negra y de caja blanca. Se dice que una prueba es de caja negra cuando prescinde de los detalles del código y se limita a lo que se ve desde el

exterior. Intenta descubrir casos y circunstancias en los que el módulo no hace lo que se espera de él.

Por oposición al término "caja negra" se suele denominar "caja blanca" al caso contrario, es decir, cuando lo que se mira con lupa es el código que está ahí escrito y se intenta que falle. Quizás sea más propio la denominación de "prue-

bas de caja transparente".

Caja blanca

Sinónimos: pruebas estructurales

pruebas de caja transparente

En estas pruebas estamos siempre observando el código, que las pruebas se dedican a ejecutar con ánimo de "probarlo

todo". Esta noción de prueba total se formaliza en lo que se llama "cobertura" y no es sino una medida porcentual de ¿cuánto código hemos cubierto?

Hay diferentes posibilidades de definir la cobertura. Todas ellas intentan sobrevivir al hecho de que el número posible

de ejecuciones de cualquier programa no trivial es (a todos los efectos prácticos) infinito. Pero si el 100% de cobertura es infinito, ningún conjunto real de pruebas pasaría de un infinitésimo de cobertura. Esto puede ser muy interesante pa-

ra los matemáticos; pero no sirve para nada.

Cobertura de segmentos

A veces también denominada "cobertura de sentencias". Por segmento se entiende una secuencia de sentencias sin puntos de decisión. Como el ordenador está obligado a ejecutarlas una tras otra, es lo mismo decir que se

han ejecutado todas las sentencias o todos los segmentos.

Page 80: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 80 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

El número de sentencias de un programa es finito. Basta coger el código fuente e ir contando. Se puede dise-

ñar un plan de pruebas que vaya ejercitando más y más sentencias, hasta que hayamos pasado por todas, o por

una inmensa mayoría. En la práctica, el proceso de pruebas termina antes de llegar al 100%, pues puede ser excesivamente laborioso

y costoso provocar el paso por todas y cada una de las sentencias.

A la hora de decidir el punto de corte antes de llegar al 100% de cobertura hay que ser precavido y tomar en consideración algo más que el índice conseguido. En efecto, ocurre con harta frecuencia que los programas

contienen código muerto o inalcanzable. Puede ser que este trozo del programa, simplemente "sobre" y se

pueda prescindir de él; pero a veces significa que una cierta funcionalidad, necesaria, es inalcanzable: esto es un error y hay que corregirlo.

Cobertura de ramas

La cobertura de segmentos es engañosa en presencia de segmentos opcionales. Por ejemplo:

IF Condicion THEN EjecutaEsto; END; Desde el punto de vista de cobertura de segmentos, basta ejecutar una vez, con éxito en la condición, para cu-

brir todas las sentencias posibles. Sin embargo, desde el punto de vista de la lógica del programa, también de-

be ser importante el caso de que la condición falle (si no lo fuera, sobra el IF). Sin embargo, como en la rama ELSE no hay sentencias, con 0 ejecuciones tenemos el 100%.

Para afrontar estos casos, se plantea un refinamiento de la cobertura de segmentos consistente en recorrer to-

das las posibles salidas de los puntos de decisión. Para el ejemplo de arriba, para conseguir una cobertura de ramas del 100% hay que ejecutar (al menos) 2 veces, una satisfaciendo la condición, y otra no.

Estos criterios se extienden a las construcciones que suponen elegir 1 de entre varias ramas. Por ejemplo, el

CASE.

Nótese que si lograramos una cobertura de ramas del 100%, esto llevaría implícita una cobertura del 100% de los segmentos, pues todo segmento está en alguna rama. Esto es cierto salvo en programas triviales que care-

cen de condiciones (a cambio, basta 1 sóla prueba para cubrirlo desde todos los puntos de vista). El criterio

también debe refinarse en lenguajes que admiten excepciones (por ejemplo, Ada). En estos casos, hay que añadir pruebas para provocar la ejecución de todas y cada una de las excepciones que pueden dispararse.

Cobertura de condición/decisión

La cobertura de ramas resulta a su vez engañosa cuando las expresiones booleanas que usamos para decidir

por qué rama tirar son complejas. Por ejemplo: IF Condicion1 OR Condicion2 THEN HazEsto; END;

Las condiciones 1 y 2 pueden tomar 2 valores cada una, dando lugar a 4 posibles combinaciones. No obstante

sólo hay dos posibles ramas y bastan 2 pruebas para cubrirlas. Pero con este criterio podemos estar cerrando los ojos a otras combinaciones de las condiciones.

Consideremos sobre el caso anterior las siguientes pruebas:

Prueba 1: Condicion1 = TRUE y Condicion2 = FALSE Prueba 2: Condicion1 = FALSE y Condicion2 = TRUE

Prueba 3: Condicion1 = FALSE y Condicion2 = FALSE

Prueba 4: Condicion1 = TRUE y Condicion2 = TRUE

Bastan las pruebas 2 y 3 para tener cubiertas todas las ramas. Pero con ellos sólo hemos probado una posibili-dad para la Condición1.

Para afrontar esta problemática se define un criterio de cobertura de condición/decisión que trocea las expre-

siones booleanas complejas en sus componentes e intenta cubrir todos los posibles valores de cada uno de

ellos. Nótese que no basta con cubrir cada una de las condciones componentes, si no que además hay que cuidar de

sus posibles combinaciones de forma que se logre siempre probar todas y cada una de las ramas. Así, en el

ejemplo anterior no basta con ejecutar las pruebas 1 y 2, pues aun cuando cubrimos perfectamente cada posibi-lidad de cada condición por separado, lo que no hemos logrado es recorrer las dos posibles ramas de la deci-

sión combinada. Para ello es necesario añadir la prueba 3.

El conjunto mínimo de pruebas para cubrir todos los aspectos es el formado por las pruebas 3 y 4. Aún así, nótese que no hemos probado todo lo posible. Por ejemplo, si en el programa nos colamos y ponemos AND

donde queríamos poner OR (o viceversa), este conjunto de pruebas no lo detecta. Sólo queremos decir que la

cobertura es un criterio útil y práctico; pero no es prueba exhaustiva.

Cobertura de bucles Los bucles no son más que segmentos controlados por decisiones. Así, la cobertura de ramas cubre plenamen-

Page 81: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 81 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

te la esencia de los bucles. Pero eso es simplemente la teoría, pues la práctica descubre que los bucles son una

fuente inagotable de errores, todos triviales, algunos mortales. Un bucle se ejecuta un cierto número de veces;

pero ese número de veces debe ser muy preciso, y lo más normal es que ejecutarlo una vez de menos o una vez de más tenga consecuencias indeseables. Y, sin embargo, es extremadamente fácil equivocarse y redactar un

bucle que se ejecuta 1 vez de más o de menos.

Para un bucle de tipo WHILE hay que pasar 3 pruebas 1. 0 ejecuciones

2. 1 ejecución

3. más de 1 ejecución Para un bucle de tipo REPEAT hay que pasar 2 pruebas

1. 1 ejecución

2. más de 1 ejecución

Los bucles FOR, en cambio, son muy seguros, pues en su cabecera está definido el número de veces que se va a ejecutar. Ni una más, ni una menos, y el compilador se encarga de garantizarlo. Basta pues con ejecutarlos 1

vez.

No obstante, conviene no engañarse con los bucles FOR y examinar su contenido. Si dentro del bucle se altera la variable de control, o el valor de alguna variable que se utilice en el cálculo del incremento o del límite de

iteración, entonces eso es un bucle FOR con trampa.

También tiene "trampa" si contiene sentencias del tipo EXIT (que algunos lenguajes denominan BREAK) o del tipo RETURN. Todas ellas provocan terminaciones anticipadas del bucle.

Estos últimos párrafos hay que precisarlos para cada lenguaje de programación. Lo peor son aquellos lengua-

jes que permiten el uso de sentencias GOTO. Tampoco conviene confiarse de lo que prometen lenguajes como

MODULA-2, que se supone que prohiben ciertas construcciones arriesgadas. Los compiladores reales suelen ser más tolerantes que lo que anuncian los libros.

Si el programa contiene bucles LOOP, o simplemente bucles con trampa, la única cobertura aplicable es la de

ramas. El riesgo de error es muy alto; pero no se conocen técnicas sistemáticas de abordarlo, salvo reescribir el código.

Y en la práctica ¿qué hago? Tanta definición acaba resultando un tanto académica e inútil.

En la práctica de cada día, se suele procura alcanzar una cobertura cercana al 100% de segmentos. Es muy recomenda-ble (aunque cuesta más) conseguir una buena cobertura de ramas. En cambio, no suele hacer falta ir a por una cobertu-

ra de decisiones atomizadas.

¿Qué es una buena cobertura? Pues depende de lo crítico que sea el programa. Hay que valorar el riesgo (o coste) que implica un fallo si éste se des-

cubre durante la aplicación del programa. Para la mayor parte del software que se produce en Occidente, el riesgo es

simplemente de imagen (si un juego fallece a mitad, queda muy feo; pero no se muere nadie). En estas circunstancias, coberturas del 60-80% son admisibles.

La cobertura requerida suele ir creciendo con el ámbito previsto de distribución. Si un programa se distribuye y falla

en algo grave puede ser necesario redistribuirlo de nuevo y urgentemente. Si hay millones de clientes dispersos por va-

rios paises, el coste puede ser brutal. En estos casos hay que exprimir la fase de pruebas para que encuentre práctica-mente todos los errores sin pasar nada por alto. Esto se traduce al final en buscar coberturas más altas.

Es aún más delicado cuando entramos en aplicaciones que involucran vidas humanas (aplicaciones sanitarias, centrales

nucleares, etc) Cuando un fallo se traduce en una muerte, la cobertura que se busca se acerca al 99% y además se pres-ta atención a las decisiones atómicas.

También se suele perseguir coberturas muy elevadas (por encima del 90%) en las aplicaciones militares. Esto se debe

a que normalmente van a ser utilizadas en condiciones muy adversas donde el tiempo es inestimable. Si un programa fallece, puede no haber una segunda oportunidad de arrancarlo de nuevo.

La ejecución de pruebas de caja blanca puede llevarse a cabo con un depurador (que permite le ejecución paso a paso),

un listado del módulo y un rotulador para ir marcando por dónde vamos pasando. Esta tarea es muy tediosa, pero pue-

de ser automatizada. Hay compiladores que a la hora de generar código máquina dejan incrustado en el código sufi-ciente código como para poder dejar un fichero (tras la ejecución) con el número de veces que se ha ejecutado cada

sentencia, rama, bucle, etc.

Limitaciones Lograr una buena cobertura con pruebas de caja blanca es un objetivo deseable; pero no suficiente a todos los efectos.

Un programa puede estar perfecto en todos sus términos, y sin embargo no servir a la función que se pretende.

Page 82: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 82 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Por ejemplo, un Rolls-Royce es un coche que sin duda pasaría las pruebas más exigentes sobre los últimos detalles de

su mecánica o su carrocería. Sin embargo, si el cliente desea un todo-terreno, difícilmente va a comprárselo.

Por ejemplo, si escribimos una rutina para ordenar datos por orden ascendente, pero el cliente los necesita en orden decreciente; no hay prueba de caja blanca capaz de detectar la desviación.

Las pruebas de caja blanca nos convencen de que un programa hace bien lo que hace; pero no de que haga lo que ne-

cesitamos. Caja negra

Sinónimos:

pruebas de caja opaca

pruebas funcionales pruebas de entrada/salida

pruebas inducidas por los datos

Las pruebas de caja negra se centran en lo que se espera de un módulo, es decir, intentan encontrar casos en que el

módulo no se atiene a su especificación. Por ello se denominan pruebas funcionales, y el probador se limita a suminis-trarle datos como entrada y estudiar la salida, sin preocuparse de lo que pueda estar haciendo el módulo por dentro.

Las pruebas de caja negra están especialmente indicadas en aquellos módulos que van a ser interfaz con el usuario (en

sentido general: teclado, pantalla, ficheros, canales de comunicaciones, etc etc) Este comentario no obsta para que sean útiles en cualquier módulo del sistema.

Las pruebas de caja negra se apoyan en la especificación de requisitos del módulo. De hecho, se habla de "cobertura de

especificación" para dar una medida del número de requisitos que se han probado. Es fácil obtener coberturas del 100% en módulos internos, aunque puede ser más laborioso en módulos con interfaz al exterior. En cualquier caso, es

muy recomendable conseguir una alta cobertura en esta línea.

El problema con las pruebas de caja negra no suele estar en el número de funciones proporcionadas por el módulo (que

siempre es un número muy limitado en diseños razonables); sino en los datos que se le pasan a estas funciones. El con-junto de datos posibles suele ser muy amplio (por ejemplo, un entero).

A la vista de los requisitos de un módulo, se sigue una técnica algebraica conocida como "clases de equivalencia". Esta

técnica trata cada parámetro como un modelo algebraico donde unos datos son equivalentes a otros. Si logramos partir un rango excesivamente amplio de posibles valores reales a un conjunto reducido de clases de equivalencia, entonces

es suficiente probar un caso de cada clase, pues los demás datos de la misma clase son equivalentes.

El problema está pues en identificar clases de equivalencia, tarea para la que no existe una regla de aplicación univer-sal; pero hay recetas para la mayor parte de los casos prácticos:

si un parámetro de entrada debe estar comprendido en un cierto rango, aparecen 3 clases de equivalencia: por

debajo, en y por encima del rango.

si una entrada requiere un valor concreto, aparecen 3 clases de equivalencia: por debajo, en y por encima del rango.

si una entrada requiere un valor de entre los de un conjunto, aparecen 2 clases de equivalencia: en el conjunto o

fuera de él. si una entrada es booleana, hay 2 clases: si o no.

los mismos criterios se aplican a las salidas esperadas: hay que intentar generar resultados en todas y cada una

de las clases.

Ejemplo: utilizamos un entero para identificar el día del mes. Los valores posibles están en el rango [1..31]. Así, hay 3 clases:

1. números menores que 1

2. números entre 1 y 31 3. números mayores que 31

Durante la lectura de los requisitos del sistema, nos encontraremos con una serie de valores singulares, que marcan di-

ferencias de comportamiento. Estos valores son claros candidatos a marcar clases de equivalencia: por abajo y por arriba.

Una vez identificadas las clases de equivalencia significativas en nuestro módulo, se procede a coger un valor de cada

clase, que no esté justamente al límite de la clase. Este valor aleatorio, hará las veces de cualquier valor normal que se

le pueda pasar en la ejecución real. La experiencia muestra que un buen número de errores aparecen en torno a los puntos de cambio de clase de equiva-

lencia. Hay una serie de valores denominados "frontera" (o valores límite) que conviene probar, además de los elegi-

dos en el párrafo anterior. Usualmente se necesitan 2 valores por frontera, uno justo abajo y otro justo encima.

Limitaciones Lograr una buena cobertura con pruebas de caja negra es un objetivo deseable; pero no suficiente a todos los efectos.

Page 83: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 83 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Un programa puede pasar con holgura millones de pruebas y sin embargo tener defectos internos que surgen en el

momento más inoportuno (Murphy no olvida).

Por ejemplo, un PC que contenga el virus Viernes-13 puede estar pasando pruebas de caja negra durante años y años. Sólo falla si es viernes y es día 13; pero ¿a quién se le iba a ocurrir hacer esa prueba?

Las pruebas de caja negra nos convencen de que un programa hace lo que queremos; pero no de que haga (además)

otras cosas menos aceptables.

Pruebas de Integración

Las pruebas de integración se llevan a cabo durante la construcción del sistema, involucran a un número creciente de

módulos y terminan probando el sistema como conjunto. Estas pruebas se pueden plantear desde un punto de vista estructural o funcional.

Las pruebas estructurales de integración son similares a las pruebas de caja blanca; pero trabajan a un nivel conceptual

superior. En lugar de referirnos a sentencias del lenguaje, nos referiremos a llamadas entre módulos. Se trata pues de

identificar todos los posibles esquemas de llamadas y ejercitarlos para lograr una buena cobertura de segmentos o de ramas.

Las pruebas funcionales de integración son similares a las pruebas de caja negra. Aquí trataremos de encontrar fallos

en la respuesta de un módulo cuando su operación depende de los servicios prestados por otro(s) módulo(s). Según nos vamos acercando al sistema total, estas pruebas se van basando más y más en la especificación de requisitos del usua-

rio.

Las pruebas finales de integración cubren todo el sistema y pretenden cubrir plenamente la especificación de requisitos del usuario. Además, a estas alturas ya suele estar disponible el manual de usuario, que también se utiliza para realizar

pruebas hasta lograr una cobertura aceptable.

En todas estas pruebas funcionales se siguen utilizando las técnicas de partición en clases de equivalencia y análisis de

casos límite (fronteras).

Pruebas de Aceptación

Estas pruebas las realiza el cliente. Son básicamente pruebas funcionales, sobre el sistema completo, y buscan una co-

bertura de la especificación de requisitos y del manual del usuario. Estas pruebas no se realizan durante el desarrollo, pues sería impresentable de cara al cliente; sino una vez pasadas todas las pruebas de integración por parte del desarro-

llador.

La experiencia muestra que aún despues del más cuidadoso proceso de pruebas por parte del desarrollador, quedan una serie de errores que sólo aparecen cuando el cliente se pone a usarlo. Los desarrolladores se suelen llevar las manos a

la cabeza:

"Pero, ¿a quién se le ocurre usar así mi programa?"

Sea como sea, el cliente siempre tiene razón. Decir que los requisitos no estaban claros, o que el manual es ambiguo puede salvar la cara; pero ciertamente no deja satisfecho al cliente. Alegar que el cliente es un inútil es otra tentación

muy fuerte, que conviene reprimir.

Por estas razones, muchos desarrolladores ejercitan unas técnicas denominadas "pruebas alfa" y "pruebas beta". Las pruebas alfa consisten en invitar al cliente a que venga al entorno de desarrollo a probar el sistema. Se trabaja en un

entorno controlado y el cliente siempre tiene un experto a mano para ayudarle a usar el sistema y para analizar los re-

sultados. Las pruebas beta vienen despues de las pruebas alfa, y se desarrollan en el entorno del cliente, un entorno que está fue-

ra de control. Aquí el cliente se queda a solas con el producto y trata de encontrarle fallos (reales o imaginarios) de los

que informa al desarrollador.

Las pruebas alfa y beta son habituales en productos que se van a vender a muchos clientes. Algunos de los potenciales compradores se prestan a estas pruebas bien por ir entrenando a su personal con tiempo, bien a cambio de alguna ven-

taja económica (mejor precio sobre el producto final, derecho a mantenimiento gratuito, a nuevas versiones, etc etc).

La experiencia muestra que estas prácticas son muy eficaces.

Otros tipos de pruebas

Recorridos (walkthroughs)

Quizás es una técnica más aplicada en control de calidad que en pruebas. Consiste en sentar alrededor de una mesa a los desarrolladores y a una serie de críticos, bajo las órdenes de un moderador que impida un recalen-

tamiento de los ánimos. El método consiste en que los revisores se leen el programa línea a línea y piden ex-

plicaciones de todo lo que no está meridianamente claro. Puede que simplemente falte un comentario explica-

tivo, o que detecten un error auténtico o que simplemente el código sea tan complejo de entender/explicar que

Page 84: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 84 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

más vale que se rehaga de forma más simple. Para un sistema complejo pueden hacer falta muchas sesiones.

Esta técnica es muy eficaz localizando errores de naturaleza local; pero falla estrepitosamente cuando el error

deriva de la interacción entre dos partes alejadas del programa. Nótese que no se está ejecutando el programa, sólo mirándolo con lupa, y de esta forma sólo se ve en cada instante un trocito del listado.

Aleatorias (random testing)

Ciertos autores consideran injustificada una aproximación sistemática a las pruebas. Alegan que la probabili-dad de descubrir un error es prácticamente la misma si se hacen una serie de pruebas aleatoriamente elegidas,

que si se hacen siguiendo las instrucciones dictadas por criterios de cobertura (caja negra o blanca).

Como esto es muy cierto, probablemente sea muy razonable comenzar la fase de pruebas con una serie de ca-sos elegidos al azar. Esto pondrá de manifiesto los errores más patentes. No obstante, pueden permanecer

ocultos errores más sibilinos que sólo se muestran ante entradas muy precisas.

Si el programa es poco crítico (una aplicación personal, un juego, ...) puede que esto sea suficiente. Pero si se

trata de una aplicación militar o con riesgo para vidas humanas, es de todo punto insuficiente.

Solidez (robustness testing)

Se prueba la capacidad del sistema para salir de situaciones embarazosas provocadas por errores en el suminis-

tro de datos. Estas pruebas son importantes en sistemas con una interfaz al exterior, en particular cuando la in-terfaz es humana.

Por ejemplo, en un sistema que admite una serie de órdenes (commands) se deben probar los siguientes extre-

mos: órdenes correctas, todas y cada una

órdenes con defectos de sintaxis, tanto pequeñas desviaciones como errores de bulto

órdenes correctas, pero en orden incorrecto, o fuera de lugar

la orden nula (línea vacia, una o más) órdenes correctas, pero con datos de más

provocar una interrupción (BREAK, ^C, o lo que corresponda al sistema soporte) justo después de in-

troducir una orden. órdenes con delimitadores inapropiados (comas, puntos, ...)

órdenes con delimitadores incongruentes consigo mismos (por ejemplo, esto]

Aguante (stress testing)

En ciertos sistemas es conveniente saber hasta dónde aguantan, bien por razones internas (¿hasta cuantos datos podrá procesar?), bien externas (¿es capaz de trabajar con un disco al 90%?, ¿aguanta una carga de la CPU del

90?, etc etc)

Prestaciones (performance testing) A veces es importante el tiempo de respuesta, u otros parámetros de gasto. Típicamente nos puede preocupar

cuánto tiempo le lleva al sistema procesar tantos datos, o cuánta memoria consume, o cuánto espacio en disco

utiliza, o cuántos datos transfiere por un canal de comunicaciones, o ... Para todos estos parámetros suele ser importante conocer cómo evolucionan al variar la dimensión del problema (por ejemplo, al duplicarse el vo-

lumen de datos de entrada).

Conformidad u Homologación (conformance testing)

En programas de comunicaciones es muy frecuente que, además de los requisitos específicos del programa que estamos construyendo, aparezca alguna norma más amplia a la que el programa deba atenerse. Es frecuen-

te que organismos internacionales como ISO y el CCITT elaboren especificaciones de referencia a las que los

diversos fabricantes deben atenerse para que sus ordenadores sean capaces de entenderse entre sí. Las pruebas, de caja negra, que se le pasan a un producto para detectar discrepancias respecto a una norma de

las descritas en el párrafo anterior se denominan de conformidad u homologación. Suelen realizarse en un cen-

tro especialmente acreditado al efecto y, si se pasan satisfactoriamente, el producto recibe un sello oficial que dice: "homologado".

Interoperabilidad (interoperability tesing)

En el mismo escenario del punto anterior, programas de comunicaciones que deden permitir que dos ordena-

dores se entiendan, aparte de las pruebas de conformidad se suelen correr una serie de pruebas, también de ca-ja negra, que involucran 2 o más productos, y buscan problemas de comunicación entre ellos.

Regresión (regression testing)

Todos los sistemas sufren una evolución a lo largo de su vida activa. En cada nueva versión se supone que o bien se corrigen defectos, o se añaden nuevas funciones, o ambas cosas. En cualquier caso, una nueva versión

exige una nueva pasada por las pruebas. Si éstas se han sistematizado en una fase anterior, ahora pueden vol-

ver a pasarse automáticamente, simplemente para comprobar que las modificaciones no provocan errores don-

Page 85: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 85 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

de antes no los había.

El mínimo necesario para usar unas pruebas en una futura revisión del programa es una documentación muy

muy clara. Las pruebas de regresión son particularmente espectaculares cuando se trata de probar la interacción con un

agente externo. Existen empresas que viven de comercializar productos que "graban" la ejecución de una

prueba con operadores humanos para luego repetirla cuantas veces haga falta "reproduciendo la grabación". Y, obviamente, deben monitorizar la respuesta del sistema en ambos casos, compararla, y avisar de cualquier dis-

crepancia significativa.

Mutación (mutation testing) Es una técnica curiosa consistente en alterar ligeramente el sistema bajo pruebas (introduciendo errores) para

averiguar si nuestra batería de pruebas es capaz de detectarlo. Si no, más vale introducir nuevas pruebas. Todo

esto es muy laborioso y francamente artesano.

Depuración (debugging)

Casi todos los compiladores suelen llevar asociada la posibilidad de ejecutar un programa paso a paso, permitiéndole

al operador conocer dónde está en cada momento, y cuánto valen las variables.

Los depuradores pueden usarse para realizar inspecciones rigurosas sobre el comportamiento dinámico de los progra-mas. La práctica demuestra, no obstante, que su uso es tedioso y que sólo son eficaces si se persigue un objetivo muy

claro. El objetivo habitual es utilizarlo como consecuencia de la detección de un error. Si el programa se comporta mal

en un cierto punto, hay que averiguar la causa precisa para poder repararlo. La causa a veces es inmediata (por ejem-plo, un operador booleano equivocado); pero a veces depende del valor concreto de los datos en un cierto punto y hay

que buscar la causa en otra zona del programa.

En general es mala idea "correr al depurador", tanto por el tiempo que se pierde buceando sin una meta clara, como

por el riesgo de corregir defectos intermedios sin llegar a la raiz del problema. Antes de entrar en el depurador hay que delimitar el error y sus posibles causas. Ante una prueba que falla, hay que identificar el dominio del fallo, averiguar

las características de los datos que provoca el fallo (y comprobar experimentalmente que todos los datos con esas ca-

racterísticas provocan ese fallo, y los que no las tienen no lo provocan). El depurador es el último paso para convencernos de nuestro análisis y afrontar la reparación con conocimiento de

causa.

Plan de Pruebas

Un plan de pruebas está constituido por un conjunto de pruebas. Cada prueba debe

dejar claro qué tipo de propiedades se quieren probar (corrección, robustez, fiabilidad, amigabilidad, ...)

dejar claro cómo se mide el resultado

especificar en qué consiste la prueba (hasta el último detalle de cómo se ejecuta) definir cual es el resultado que se espera (identificación, tolerancia, ...) ¿Cómo se decide que el resultado es

acorde con lo esperado?

Las pruebas angelicales carecen de utilidad, tanto si no se sabe exactamente lo que se quiere probar, o si no está claro cómo se prueba, o si el análisis del resultado se hace "a ojo".

Estas mismas ideas se suelen agrupar diciendo que un caso de prueba consta de 3 bloques de información:

1. El propósito de la prueba 2. Los pasos de ejecución de la prueba

3. El resultado que se espera

Y todos y cada uno de esos puntos debe quedar perfectamente documentado. Las pruebas de usar y tirar más vale que

se tiren directamente, aún antes de usarlas. Cubrir estos puntos es muy laborioso y, con frecuencia, tedioso, lo que hace desagradable (o al menos muy aburrida)

la fase de pruebas. Es mucho más divertido codificar que probar. Tremendo error en el que, no obstante, es fácil incu-

rrir. Respecto al orden de pruebas, una práctica frecuente es la siguiente:

1. Pasar pruebas de caja negra analizando valores límite. Recuerde que hay que analizar condiciones límite de en-

trada y de salida.

2. Identificar clases de equivalencia de datos (entrada y salida) y añadir más pruebas de caja negra para contemplar valores normales (en las clases de equivalencia en que estos sean diferentes de los valores límite; es decir, en

rangos amplios de valores).

Page 86: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 86 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

3. Añadir pruebas basadas en "presunción de error". A partir de la experiencia y el sentido común, se aventuran si-

tuaciones que parecen proclives a padecer defectos, y se buscan errores en esos puntos. Son pruebas del tipo

"¡Me lo temía!" 4. Medir la cobertura de caja blanca que se ha logrado con las fases previas y añadir más pruebas de caja blanca

hasta lograr la cobertura deseada. Normalmente se busca una buena cobertura de ramas (revise los comentarios

expuestos al hablar de caja blanca).

Aspectos Sicológicos y Organización del Trabajo

Parecen tonterías; pero pueden cambiar radicalmente el éxito de una fase de pruebas:

1. Probar es ejercitar un programa para encontrarle fallos. Jamás se debería probar un programa con el ánimo de mostrar que funciona; ese no es el objetivo.

2. Un caso de prueba tiene éxito cuando encuentra un fallo.

Lo gracioso no es encontrar un caso en el que el programa funciona perfectamente. Eso es, simplemente, lo

normal. 3. Las pruebas debe diseñarlas y pasarlas una persona distinta de la que ha escrito el código; es la única forma de

no ser "comprensivo con los fallos".

Hacer una "obra maestra" cuesta mucho esfuerzo y requiere gran habilidad. Encontrarle fallos a una "obra maes-tra" cuesta aún más esfuerzo y exige otro tipo de habilidad.

4. Las pruebas no pueden esperar a que esté todo el código escrito para empezar a pasarlas. Deben irse pasando

pruebas según se va generando el código para descubrir los errores lo antes posible y evitar que se propaguen a otros módulos. En realidad el nombre "fase de pruebas" es engañoso, pues hay muchas actividades que se des-

arrollan concurrentemente o, al menos, no se necesita cerrar una fase antes de pasar a la siguiente. Algunos au-

tores llegan al extremo de afirmar que "primero hay que probar y luego codificar". Frase graciosa que se plasma

en aspectos más concretos como que el programa se escriba pensando en que hay que probarlo. 5. Si en un módulo (o sección de un programa, en general) se encuentran muchos fallos, hay que insistir sobre él.

Es muy habitual que los fallos se concentren en pequeñas zonas. Hay mil causas para que ocurra este efecto:

o código escrito por un programador malo o código muy difícil

o código mal o insuficientemente especificado

o código escrito en un mal día, con prisas, ... Además, cuanto más se parchea un trozo de código, tanto más ruinoso queda y susceptible a derrumbamientos.

A la larga hay que acabar tirándolo y empezando de nuevo.

6. Si se detecta un fallo aislado, puede bastar una corrección aislada. Pero si se detectan muchos fallos en un

módulo, lo único práctico es desecharlo, diseñarlo de nuevo, y recodificarlo. La técnica de ir parcheando hasta que se pasan una serie de pruebas es absolutamente suicida y sólo digna del avestruz.

7. Las pruebas pueden encontrar fallos; pero jamás demostrar que no los hay.

Es como las bruxas: nadie las ha visto; pero haberlas, haylas. Ningún programa (no trivial) se ha probado jamás al 100%.

8. Las pruebas también tienen fallos. Los errores son propios de los humanos: todo el mundo se equivoca. Si una

prueba falla, hay que revisar tanto lo que se prueba como lo que lo prueba. No obstante, la experiencia muestra

que (casi siempre) hay más fallos el probado que en el probador.

Conclusiones

Probar es buscarle los fallos a un programa.

La fase de pruebas absorbe una buena porción de los costes de desarrollo de software. Además, se muestra renuente a un tratamiento matemático o, simplemente, automatizado. Su ejecución se basa en metodología (reglas que se les dan a

los encargados de probar) que se va desarrollando con la experiencia. Es tediosa, es un arte, es un trabajo que requiere

una buena dosis de mala intención, y provoca difíciles reacciones humanas. Aunque se han desarrollado miles de herramientas de soporte de esta fase, todas han limitado su éxito a entornos muy

concretos, frecuentemente sólo sirviendo para el producto para el que se desarrollaron. Sólo herramientas muy genera-

les como analizadores de complejidad, sistemas de ejecución simbólica y medidores de cobertura han mostrado su uti-

lidad en un marco más amplio. Pero al final sigue siendo imprescindible un artista humano que sepa manejarlas.

Capitulo 4

Page 87: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 87 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

“Si la injusticia forma parte de la necesaria fricción de toda máquina de gobierno, que siga, que siga. Quizá llegue a

suavizarse con el desgaste; la maquina, ciertamente lo hará. Si la injusticia tiene una polea, un muelle o una palanca

exclusivos, puede que quizá podáis considerar si el remedio no será peor que la enfermedad; pero si es de naturaleza tal, que requiere de vosotros como agentes de injusticia para otros, entonces os digo: Romped la ley. Que vuestra vida

sea una contraficción que detenga la máquina. Lo que hay que hacer, en todo caso, es no prestarse a servir al mismo

mal que se condena.” THOREAU, HENRY DAVID Del Deber de la Desobediencia Civil.

“Es útil haber visto este material previamente, aún cuándo no se lo pueda dominar en la primera vez. Es parte de nuestra

psicología el hecho de que aprendemos por aproximaciones. Además, el conocimiento en determinado nivel solo es comprendido plenamente cuando se lo usa en un subsiguiente nivel de mayor profundidad. Por tanto, el estudiar algunas

cosas más arduas, aún cuando solo se obtenga una comprensión limitada de ellas, hace posible comprender plenamente

las cosas más fáciles." Serge Lang "Calculo I".

Estrategias de resolución de problemas.

Una estrategia es un conjunto de acciones que se llevan a cabo para lograr un determinado fin. Proviene del griego

ΣΤΡΑΤΗΓΙΚΗΣ Stratos = Ejército y Agein = conductor, guía.

Un problema es una situación, cuantitativa o de otra clase, a la que se enfrenta un individuo o un grupo, que requiere

solución, y para la cual no se vislumbra un medio o camino aparente y obvio que conduzca a la misma. Krulik y Rud-

nik, 1980.

“Tener un problema significa buscar de forma consciente una acción apropiada para lograr un objetivo claramente

concebido, pero no alcanzable de manera inmediata”. Polya, (1961).

“Para que una situación constituya un problema para una persona, debe estar enterada de la existencia de la situación,

reconocer que debe ejecutar algún tipo de acción ante ella, desear o necesitar actuar, hacerlo y no estar capacitado, al

menos en lo inmediato, para superar la situación”. Teaching and learning Mathematics, F. Bell, (1978).

Estrategia de resolución de problemas I:

1. Entender el problema. 2. Configurar un plan.

3. Ejecutar el plan.

4. Mirar hacia atrás

• Si no consigues entender un problema, dibuja un esquema. • Si no encuentras la solución, haz como si ya la tuvieras y mira qué puedes deducir de ella (razonando hacia

atrás a la inversa).

• Si el problema es abstracto, prueba a examinar un ejemplo concreto.

• Intenta abordar primero un problema más general (es la “paradoja del inventor”: el propósito más ambicioso

es el que tiene más posibilidades de éxito). George Polya

Estrategia de resolución de problemas II:

1. Detectar el problema.

2. Formular el enunciado. 3. Generar alternativas.

4. Ejecutar la mejor alternativa.

5. Evaluar los resultados.

6. Obtener conclusiones. 7. Mirar hacia atrás.

Schoenfeld (1985) en su libro “Mathematical Problem Solving”, considera insuficientes las estrategias planteadas por Polya para la resolución de problemas, sostiene que este proceso es más complejo e involucra más elementos, inclusi-

ve de carácter emocional-afectivo, psicológico, sociocultural, entre otros. Establece, por tanto, la existencia de cuatro

aspectos que intervienen en el proceso de resolución de problemas: los recursos (entendidos como conocimientos pre-vios, o bien, el dominio del conocimiento), las heurísticas (estrategias cognitivas), el control (estrategias metacogniti-

vas) y el sistema de creencias. Los recursos, refieren al conocimiento matemático que el individuo es capaz de brindar

en la resolución de un problema. Las estrategias heurísticas son reglas o planteamientos generales que ayudan en el

Page 88: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 88 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

abordaje de un problema; este aspecto fue ampliamente considerado por Polya en su libro “Matemáticas y razonamien-

tos plausibles”. La manera en que los individuos utilizan la información y las estrategias heurísticas que poseen para

resolver un problema, es lo que Schoenfeld denomina control, éste involucra conductas de interés tales como: planifi-car, seleccionar metas y submetas y monitoreo constante durante el proceso de resolución. Finalmente, Schoenfeld es-

tablece un aspecto transversal en la resolución de problemas y lo denomina sistema de creencias. Éste consiste en el

conjunto de ideas o percepciones que los estudiantes poseen a cerca de la matemática y su enseñanza.

Diferencia entre ejercicios y problemas

Ejercicio Problema

Comprensión Se entiende de inmediato en

qué consiste la cuestión y cuál es el medio para resol-

verlo.

No se sabe a primera vista cómo atacarlo y resolverlo; a veces ni si-

quiera se ve claro en qué consiste el problema.

Objetivos Es que el alumno aplique de forma mecánica conocimien-

tos y algoritmos ya adquiri-

dos y fáciles de identificar.

Es que el alumno busque, investigue, utilice la intuición, profundice en el conjunto de conocimientos y experiencias anteriores y elabore

una estrategia de resolución.

Aplicación Son cuestiones cerradas. Están abiertos a posibles variantes y generalizaciones y a nuevos problemas.

Motivación No suele implicar la afectivi-

dad.

Supone una fuerte inversión de energías y de afectividad. A lo largo

de la resolución se suelen experimentar sentimientos de ansiedad,

de confianza, de frustración, de entusiasmo, de alegría, etc.

Tiempo Exige poco tiempo y éste se

puede prever de antemano.

Exige un tiempo que es imposible de prever de antemano.

Textos Abundan. Son escasos.

Ley de Weiler: Nada es imposible para la persona que no tiene que hacerlo.

Ley de Howe: Todo individuo tiene un plan que no funciona.

Ley 90/90: El primer 10% de la tarea requiere el 90% del tiempo. El 90% restante ocupa el 10% que queda.

Ley de Gordon: Si no vale la pena realizar un proyecto, no vale la pena realizarlo bien.

Ley de Slack: Lo mínimo con que se conforme será lo máximo que puede esperar obtener.

Sherlock Holmes (citado en El Tratado Naval de Arthur Conan Doyle):

“¿Ve usted alguna pista?”

“Me ha proporcionado usted siete, pero naturalmente deberé probarlas antes de poder decir si sirven de algo.” „¿Seguramente sospecha de alguien? ”

“Sospecho de mí mismo.”

“¿Cómo?” “Sospecho que estoy sacando conclusiones con demasiada premura.”

Ejemplo: La herencia del Hacendado

Un campesino hacendado tenía tres hijos, a quienes les dejó al morir una herencia de 17 caballos, con un testamento en el que dejaba impuesto que debían repartírselos, pero sin matar ninguno de ellos, para poder cumplir esta petición del

padre debían hacerlo de la siguiente manera: el mayor recibiría la mitad; el segundo la tercera parte y el menor la no-

vena parte. Los hijos de este campesino, discutían acaloradamente, al querer cumplir la voluntad del padre, y se dieron cuenta que no había más remedio que descuartizar algunos. Sin embargo en ese momento pasaba un viejo a caballo,

quien habiendo escuchado la discusión, propuso resolver el problema. ¿Como lo hizo?

Solución Si sumamos una mitad, una tercera parte y una novena parte, no se obtiene el total de los 17 caballos (debería ser

17/17) Efectivamente: 1/2 + 1/3 + 1/9 = (9+6+2)/18 = 17/18

El número 17 (primo) no es múltiplo común de 2, 3 y 9. Se debe hacer el reparto sin matar ningún caballo. Evidente-mente, el problema no tiene solución tal y como se presenta. Sin embargo, el viejo, intentó dar una solución lo mas

aproximada posible y que dejase contentos a los hijos. Se dio cuenta que añadiendo otro caballo se obtenía un número

Page 89: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 89 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

(18) múltiplo de 2, 3 y 9 que permitía hacer el reparto exacto y además le permitía recuperar el caballo añadido (la

suma de las tres fracciones era 17/18, de 18 caballos se repartían 17.

Ejemplo: Cuatro amigos cercanos, Ávidos pescadores para más señas además de ser propietarios de caballos, deciden

bautizar sus barcas de pesca con los nombres de los caballos de sus amigos. No hay dos barcas con el mismo nombre.

A partir de los enunciados a continuación conteste:¿Cuál es el nombre de cada caballo(uno se llama spike) y qué nom-bre recibió cada barca?

1) La barca de pesca de Jake recibió el nombre del caballo de Jay

2) El caballo de Jeb se llama King 3) La barca de pesca de Joe se llama Ace

4) La barca de pesca de Jeb no se llama Beau

Ejemplo: Juego del Nim

Este juego consiste en que sobre una mesa hay n fósforos que dos jugadores van quitando de 1, 2 o 3 a la vez. El objetivo para ganar es que el jugador contrario tenga que levantar el último fósforo de la mesa.

En este algoritmo los dos jugadores serán un humano y su contrincante: la computadora.

El humano elije cuántos fósforos hay al inicio sobre la mesa, y además es quién comienza jugando. Queremos conseguir que la computadora gane al humano. Para ello deberemos definir un heurístico que le permita

calcular a la computadora cuántos fósforos debe tomar en cada turno para que el humano termine levantando el último

fósforo.

Capitulo 5

"Uno de los defectos de la educación superior moderna es que hace demasiado énfasis en el aprendizaje de ciertas es-

pecialidades, y demasiado poco en un ensanchamiento de la mente y el corazón por medio de un análisis imparcial del

mundo." Bertrand Russell. (Frases de Bertrand Russell).

Con el verdadero maestro el discípulo aprende a aprender, no a recordar y obedecer. La compañía del noble, no mode-

la sino que libera. Nisargadatta

Método científico

El método científico (del griego: -meta = hacia, a lo largo- -odos = camino-; y el latín scientia = conocimiento; cami-

no hacia el conocimiento) presenta diversas definiciones debido a la complejidad de una exactitud en su conceptuali-

zación: "Conjunto de pasos fijados de antemano por una disciplina con el fin de alcanzar conocimientos válidos me-diante instrumentos confiables", "secuencia estándar para formular y responder a una pregunta", "pauta que permite

a los investigadores ir desde el punto A hasta el punto Z con la confianza de obtener un conocimiento válido". Así el

método es un conjunto de pasos que trata de protegernos de la subjetividad en el conocimiento.

El método científico está sustentado por dos pilares fundamentales. El primero de ellos es la reproducibilidad, es decir,

la capacidad de repetir un determinado experimento, cualquier lugar y por cualquier persona. Este pilar se basa, esen-

cialmente, en la comunicación y publicidad de los resultados obtenidos. El segundo pilar es la falsabilidad. Es decir, que toda proposición científica tiene que ser susceptible de ser falsada (falsacionismo). Esto implica que se pueden di-

señar experimentos que en el caso de dar resultados distintos a los predichos negarían la hipótesis puesta a prueba. La

falsabilidad no es otra cosa que el modus tollendo tollens del método hipotético deductivo experimental. Según James B. Conant no existe un método científico. El científico usa métodos definitorios, métodos clasificatorios, métodos es-

tadísticos, métodos hipotético-deductivos, procedimientos de medición, etcétera. Según esto, referirse a el método

científico es referirse a este conjunto de tácticas empleadas para constituir el conocimiento, sujetas al devenir históri-

co, y que pueden ser otras en el futuro.1 Ello nos conduce tratar de sistematizar las distintas ramas dentro del campo

del método.

Modus tollendo tollens

En lógica, el modus tollendo tollens (en latín, modo que negando niega), también llamado modus tollens y general-mente abreviado MTT o MT, es una regla de inferencia que tiene la siguiente forma:

Si A, entonces B

Page 90: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 90 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

No B

Por lo tanto, no A

Por ejemplo, un razonamiento que sigue la forma del modus tollens podría ser: Si está soleado, entonces es de día.

No es de día.

Por lo tanto, no está soleado. Otra manera de presentar el modus tollens es:

Falsacionismo

El modus tollens es central al modelo falsacionista de la ciencia propuesto por Karl Popper en su libro La lógica de la

investigación científica. Según Popper, la ciencia nunca puede confirmar definitivamente una hipótesis, pero sí puede refutarla definitivamente deduciendo una consecuencia observable de la misma y mostrando que dicha consecuencia

no se cumple. Este procedimiento de refutación sigue la forma de un modus tollens:

La hipótesis H implica la consecuencia observable O. La consecuencia observable O no es el caso.

Por lo tanto, la hipótesis H tampoco es el caso.

La validez de este razonamiento contrasta con la invalidez de los intentos de confirmación de una hipótesis:

La hipótesis H implica la consecuencia observable O. La consecuencia observable O es el caso.

Por lo tanto, la hipótesis H también es el caso.

Este razonamiento es un caso de afirmación del consecuente, y por lo tanto no es un razonamiento válido. En conse-cuencia, mientras las refutaciones tienen la forma de un argumento deductivamente válido, las confirmaciones tienen

la forma de un argumento deductivamente inválido, y a lo sumo tienen la fuerza de un razonamiento inductivo.

Descripciones del método científico

Por proceso o "método científico" se entiende aquellas prácticas utilizadas y ratificadas por la comunidad científica como válidas a la hora de proceder con el fin de exponer y confirmar sus teorías. Las teorías científicas, destinadas a

explicar de alguna manera los fenómenos que observamos, pueden apoyarse o no en experimentos que certifiquen su

validez. Sin embargo, hay que dejar claro que el mero uso de metodologías experimentales, no es necesariamente sinónimo del uso del método científico, o su realización al 100%. Por ello, Francis Bacon definió el método científico

de la siguiente manera:

1. Observación: Observar es aplicar atentamente los sentidos a un objeto o a un fenómeno, para estudiarlos tal como se presentan en realidad, puede ser ocasional o causalmente.

2. Inducción: La acción y efecto de extraer, a partir de determinadas observaciones o experiencias particulares, el

principio particular de cada una de ellas.

3. Hipótesis: Planteamiento mediante la observación siguiendo las normas establecidas por el método científico. 4. Probar la hipótesis por experimentación.

5. Demostración o refutación (antítesis) de la hipótesis.

6. Tesis o teoría científica (conclusiones). Así queda definido el método científico tal y como es normalmente entendido, es decir, la representación social domi-

nante del mismo. Esta definición se corresponde sin embargo únicamente a la visión de la ciencia denominada positi-

vismo en su versión más primitiva. Empero, es evidente que la exigencia de la experimentación es imposible de aplicar

a áreas de conocimiento como la vulcanología, la astronomía, la física teórica, etcétera. En tales casos, es suficiente la observación de los fenómenos producidos naturalmente, en los que el método científico se utiliza en el estudio (directo

o indirecto) a partir de modelos más pequeños, o a partes de este.

Por otra parte, existen ciencias no incluidas en las ciencias naturales, especialmente en el caso de las ciencias humanas y sociales, donde los fenómenos no sólo no se pueden repetir controlada y artificialmente (que es en lo que consiste un

experimento), sino que son, por su esencia, irrepetibles, por ejemplo la historia. De forma que el concepto de método

científico ha de ser repensado, acercándose más a una definición como la siguiente: "proceso de conocimiento carac-terizado por el uso constante e irrestricto de la capacidad crítica de la razón, que busca establecer la explicación de

un fenómeno ateniéndose a lo previamente conocido, resultando una explicación plenamente congruente con los datos

de la observación".

Page 91: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 91 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Así, por método o proceso científico se entiende aquellas prácticas utilizadas y ratificadas por la comunidad científica

como válidas a la hora de proceder con el fin de exponer y confirmar sus teorías, como por ejemplo los Postulados de

Koch para la microbiología. Las teorías científicas, destinadas a explicar de alguna manera los fenómenos que obser-vamos, pueden apoyarse o no en experimentos que certifiquen su validez.

El método científico como método para la eliminación de falacias y prejuicios

El método científico envuelve la observación de fenómenos naturales, luego, la postulación de hipótesis y su compro-bación mediante la experimentación. Pues bien, los prejuicios cognitivos no son más que hipótesis, inducciones o

construcciones mentales que han sido sesgadas positiva o negativamente por el cerebro. Asimismo cuando se realizan

afirmaciones o se argumenta y estos prejuicios cognitivos salen a la luz se convierten en falacias. El prejuicio cogniti-vo o proceso mental con el que se sesgan las creencias no se puede eliminar pues es un aspecto fisiológico intrínseco a

la psique del ser humano y que además parece estar extendido evolutivamente ya que cumple su función en la asocia-

ción y reconocimiento de objetos cotidianos, véase por ejemplo pareidolia. Lo que es posible es compensar el sesgo o

modificar las propias creencias mediante el método científico como mecanismo para descartar hipótesis que son falsas. De esta forma, el sesgo se situaría en dirección a hipótesis que son menos falsas hasta nuevas revisiones en busca de

factores desconocidos o nueva información.

La ciencia no pretende ser ni absoluta, ni autoritaria, ni dogmática. Todas las ideas, hipótesis, teorías; todo el conoci-miento científico está sujeto a revisión, a estudio y a modificación. El conocimiento que tenemos representa las hipó-

tesis científicas y teorías respaldadas por observaciones y experimentos (método empírico).

Para no caer en el prejuicio cognitivo es necesario, por tanto, la experimentación, el no hacerlo llevaría a la misma ne-gligencia puesto que la verdad de una aseveración según el método científico recae en la fuerza de sus evidencias

comprobadas por experimentación. Después de llevar a cabo la experimentación se analiza los resultados y se llega a

una conclusión. Si los resultados respaldan la hipótesis, ésta adquiere validez; si los resultados la refutan, ésta se des-

carta o se modifica presentando nuevas formas para refutarla. El método científico es también afectado naturalmente por los prejuicios cognitivos ya que los efectos asociativos de

nuestra mente son los que permiten, al mismo tiempo, lanzar el mayor número de hipótesis. Sin embargo, el método, si

es bien ejecutado en sus últimos y más importantes pasos, permite desecharlas. El primer paso en el método científico de tipo empírico es la observación cuidadosa de un fenómeno y la descripción

de los hechos, es aquí donde entran en juego los prejuicios. Después, el científico trata de explicarlo mediante hipóte-

sis las cuales, ya están sesgadas por los prejuicios en la percepción de los acontecimientos o en las propias creencias. Sin embargo, solamente las ideas que puedan comprobarse experimentalmente están dentro del ámbito de la ciencia lo

que permite desechar muchas teorías. Si las hipótesis enunciadas fueran invalidadas deberían predecir las consecuen-

cias en el experimento y además debería ser posible repetirlas. De esta forma, mediante la experimentación, la repeti-

ción y supervisión del experimento por parte de personas que pudieran tener otros sesgos cognitivos se minimizan los errores del experimento, los errores en la interpretación de los resultados o errores en estadísticas que harían a la teoría

una falsa o imprecisa creencia. Por eso, en ciencia se usa la revisión por pares, a mayor número de revisiones menor

probabilidad de sesgo o de falsa interpretación de los datos experimentales, con lo que el trabajo es considerado más riguroso o estable. Un proceso así aunque mucho menos riguroso se puede observar en el pensamiento crítico cuando

éste requiere de investigación activa propia para el esclarecimiento de argumentos y comprobación de las fuentes de

información. En el pensamiento crítico se toman decisiones en función de la carga de la prueba que se hayan realizado

sobre las fuentes y los argumentos y la información que se obtiene puede llegar a ser indirecta (de ahí la falta de rigu-rosidad). En el método científico no solo debe ser el hecho probado por la experimentación directa sino que debe ser

posible repetirlo.

El problema con los prejuicios cognitivos es que normalmente se aplican a conceptos que cambian con regularidad quizás a una velocidad mayor de lo que es posible medirlo mediante pruebas o experimentación, además no son uni-

formes y poseen excepciones, estos prejuicios se basan por tanto en probabilidades y no en afirmaciones certeras. El

método científico por lo menos permite ponderar estas probabilidades, realizar estadísticas y revisar la propia seguri-dad en las afirmaciones. De esta forma debería eliminar la posición de certeza o del perfecto conocimiento del funcio-

namiento del mundo (otro sesgo extendido). El método científico, por tanto, se convierte en el método maestro para

probar hipótesis y desechar las falsas. A esto se refería Einstein cuando dijo "No existe una cantidad suficiente de ex-

perimentos que muestren que estoy en lo correcto; pero un simple experimento puede probar que me equivoco.". De otra forma, sin el método científico, las presunciones o prejuicios quedarían fijas cuando las circunstancias cambian,

sujetas a nuestras propias interpretaciones de la realidad.

Page 92: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 92 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Pensamiento crítico

El pensamiento crítico se propone analizar o evaluar la estructura y consistencia de los razonamientos, particularmen-

te opiniones o afirmaciones que la gente acepta como verdaderas en el contexto de la vida cotidiana. Tal evaluación puede basarse en la observación, en la experiencia, en el razonamiento o en el método científico. El pensamiento críti-

co se basa en valores intelectuales que tratan de ir más allá de las impresiones y opiniones particulares, por lo que re-

quiere claridad, exactitud, precisión, evidencia y equidad. Tiene por tanto una vertiente analítica y otra evaluativa.

Aunque emplea la lógica, intenta superar el aspecto formal de esta para poder entender y evaluar los argumentos en su contexto y dotar de herramientas intelectuales para distinguir lo razonable de lo no razonable, lo verdadero de lo falso.

El pensamiento crítico se encuentra muy ligado al escepticismo y al estudio y detección de las falacias.

Introducción

Hay muchas definiciones de pensamiento crítico o razonamiento crítico. Desde un punto de vista práctico, puede ser

definido de la siguiente forma:

El pensamiento crítico es un proceso mediante el cual se usa el conocimiento y la inteligencia para llegar, de forma efectiva, a la posición más razonable y justificada sobre un tema, y en la cual se procura identificar y superar las nu-

merosas barreras u obstáculos que los prejuicios o sesgos introducen.

No todo el mundo valora la necesidad de un razonamiento crítico. Con frecuencia, ser metódicamente objetivo es visto

como algo frío, estéril y aburrido sobre todo para los que siguen políticas del estilo "Tened fe y dejad que vuestros sen-timientos os guíen a la verdad" o "No dejes que los hechos o detalles interrumpan el camino hacia una historia intere-

sante". Esto es así porque hoy en día muchos sobreviven justamente de la manipulación y de la llamada a las necesi-

dades primarias del ser humano. Véase Pirámide de Maslow. Sin embargo, cuando la verdad es requerida no se puede caer en las falacias o en lo que nos gustaría creer para protegernos porque la verdad de aquel que gusta del razona-

miento crítico es preferible a una mentira feliz.

La inteligencia y el conocimiento que se posean no implican forzosamente que se pueda tener un razonamiento o pen-

samiento crítico. Hasta el mayor de los genios puede tener las más irracionales creencias o las más disparatadas opi-niones. La teoría acerca del pensamiento crítico, trata sobre cómo se debería usar la inteligencia y el conocimiento pa-

ra alcanzar puntos de vista más racionales y objetivos con los datos que se poseen. Opiniones y creencias basadas en

un razonamiento crítico pueden estar mejor cimentadas comparadas con aquellas formuladas a través de procesos me-nos racionales. Al mismo tiempo, los buenos pensadores críticos están normalmente mejor equipados para tomar deci-

siones y resolver problemas comparados con aquellos que carecen de esta habilidad aprendida.

El razonamiento crítico también es más que pensar lógicamente o analíticamente. También se trata de pensar de forma

más racional y objetiva. Existe una importante diferencia. Lógica y análisis son esencialmente conceptos filosóficos y

matemáticos respectivamente, mientras que el pensar racionalmente y objetivamente son conceptos más amplios que

abrazan los campos de la psicología y la sociología que tratan de explicar los complejos efectos de los demás sobre nuestros propios procesos mentales.

En teoría para poder ser un buen pensador crítico se deberían seguir y desarrollar los siguientes cinco pasos, que serán

desarrollados: Paso 1: Adoptar la actitud de un pensador crítico.

Paso 2: Reconocer y evitar las barreras y sesgos cognitivos principales. Véase Lista de prejuicios cognitivos.

Paso 3: Identificar y caracterizar argumentos. Paso 4: Evaluar las fuentes de información.

Paso 5: Evaluar los argumentos.

Lo que el pensamiento crítico no es

1. El pensamiento crítico no es pensar de forma negativa o con predisposición a encontrar fallos o defectos. Es un proceso o procedimiento neutro y sin sesgo para evaluar opiniones y afirmaciones tanto propias como de

otras personas.

2. El pensamiento crítico no trata de hacer personas que piensen de la misma forma, ya que si bien, pueden apli-

car el mismo procedimiento éstos podrían diferir en sus prioridades, principios y lista de valores que, como se observa en la figura 1, afectan al razonamiento. Es decir, muchos podrían contar información o experiencias

nuevas que otros no cuentan, para que aplicando el mismo principio, se lleguen a conclusiones totalmente di-

ferentes. Adicionalmente, siempre habrá diferencias en la percepción y las necesidades emocionales básicas que harán definitivamente imposible que todos piensen de la misma forma, a pesar de la ponderación objetiva

que haga el razonamiento crítico, pues ésta sigue tratándose de información extra.

Page 93: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 93 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

3. El pensamiento crítico no trata de cambiar la propia personalidad, incrementa la objetividad consciente, pero

se siguen sintiendo los prejuicios habituales.

4. El pensamiento crítico no es una creencia. El pensamiento crítico puede evaluar la validez de las creencias, pe-ro no es una creencia en sí, es un procedimiento.

5. El pensamiento crítico no reemplaza o minimiza los sentimientos o emociones. Sin embargo, algunas deci-

siones emocionales que son también decisiones críticas, tales como decidir casarse o tener hijos, son observa-dos desde múltiplos puntos de vista.

6. El pensamiento crítico no favorece ni representa específicamente a la Ciencia. Sus argumentos pueden ser

usados para favorecer opiniones contrarias a las comúnmente aceptadas por el marco científico, como en el caso del diseño inteligente.

7. Los argumentos basados en el pensamiento crítico no son necesariamente siempre los más persuasivos. Con

gran frecuencia los argumentos más persuasivos son aquellos destinados a recurrir a las emociones más bási-

cas como el miedo, placer y necesidad más que a los hechos objetivos. Por esta razón, es común encontrar en los argumentos más persuasivos de muchos políticos, telepredicadores o vendedores una intencionada falta de

objetividad y razonamiento crítico.

Paso 1: Adoptar la actitud de un pensador crítico

El primer paso para llegar a ser un hábil y diestro pensador crítico es desarrollar una actitud que permita la entrada de

más información y permita detenernos a pensar. Estas actitudes señalan las siguientes características:

Las primeras dos características pueden parecer contradictorias, pero no lo son. El pen-

sador crítico debe querer investigar puntos de vista diferentes por sí mismo, pero al

mismo tiempo reconocer cuándo dudar de los méritos de sus propias investigaciones.

No debería ser ni dogmático, doctrinal u ortodoxo ni ingenuo o crédulo. Se trata de examinar el mayor número de ideas y puntos de vista diferentes; darle la oportunidad

de ser escuchadas hasta el fondo y luego razonar cuáles son los puntos buenos y malos

de cada uno de los lados. Aceptar el hecho de que podamos estar equivocados una vez los argumentos estén sobre la mesa y mantener el objetivo final de conseguir la verdad

o lo más cercano a ésta que la información que hemos dejado entrar o se nos ha presen-

tado nos permite. Demasiado escepticismo, o también pseudoescepticismo, conducirá a la paranoia y a ideas de cons-piración; nos llevará a dudar de todo y al final no conseguir nada, mientras que creer todo sin un juicio o mediante el

prejuicio o sesgo cognitivo básico de nuestro cerebro nos llevará a ser un público voluble.

Tener humildad intelectual significa poder ser capaz de dar una oportunidad a las opiniones y nuevas evidencias o ar-

gumentos incluso si dichas pruebas o indagaciones nos llevan a descubrir defectos en nuestras propias creencias. Véa-se Método socrático El pensador crítico debe poder ser independiente y ser un libre pensador. Es decir, no depender o

tener miedo a indagar sobre algo que pueda perjudicarlo en demasía. Las presiones sociales a la estandarización y al

conformismo pueden llegar a hacernos caer en la comodidad o en el propio deseo de creer o pertenencia al grupo. Esto puede ser muy difícil o casi imposible para algunos. Uno debe preguntarse si el miedo a represalias simplemente al

qué dirán motiva nuestras propias opiniones o creencias y si es así tener la fuerza para al menos temporalmente aca-

llarlas hasta que se tenga la libertad de realizar una objetiva y detallada evaluación de la misma. Finalmente, se debe

tener una natural curiosidad y motivación para avanzar en el propio conocimiento sobre una materia. La única forma de evitar tener un conocimiento básico sobre algo es estudiarlo hasta alcanzar el suficiente nivel de entendimiento ne-

cesario antes de realizar cualquier juicio.

Paso 2: Reconocer y evitar las barreras o prejuicios del pensamiento crítico

Cada día de nuestras vidas se está expuesto a variables que bloquean nuestra habilidad a pensar con claridad, precisión

y equidad. Algunas de estas barreras surgen de las limitaciones humanas naturales e inintencionadas, mientras otras

están claramente calculadas y manipuladas. Algunas son obvias pero la mayoría de éstas son sutiles y capciosas. Sin

embargo, si después de estar armado con la actitud apropiada del Paso 1, el pensador crítico tendría ahora que enten-der cómo reconocer y evitar (al menos mitigar) la máscara de engaño o embaucamiento que se tiene en la vida diaria.

Estas barreras pueden ser divididas en cuatro categorías, que serán presentadas en cuatro tablas diferentes al final del

artículo, algunas de éstas pueden verse también en la lista de prejuicios cognitivos: Tabla 1: Limitaciones humanas básicas

Tabla 2: Uso del lenguaje

Tabla 3: Falta de lógica y percepción

Tabla 4: Trampas y escollos psicológicos y sociales

Características

1) Mente abierta

2) Escepticismo sano

3) Humildad intelectual

4) Libertad de pensamiento

5) Una alta motivación

Page 94: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 94 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Cada una de las tablas muestra:

1. Una lista de las barreras u obstáculos al entendimiento aplicables a la categoría

2. Una concisa definición del obstáculo 3. Un ejemplo ilustrativo

4. sugerencias para evitar o superar los obstáculos al entendimiento

La tabla 1 o de limitaciones humanas básicas se aplica a cada uno, incluyendo los más hábiles pensadores críticos. Esas limitaciones recuerdan que no se es perfecto y que el entendimiento que se tiene de los hechos, percepciones,

memoria, sesgos imposibilita el entendimiento del mundo con total objetividad y claridad. Lo mejor que podemos

hacer es adquirir un adecuado y suficiente conocimiento del tema. El uso del lenguaje o la tabla 2 es muy importante para el pensamiento crítico. La correcta elección de las palabras puede llevar a la verdad, o a la verdad a medias, al

desconcierto, a la confusión o al propio engaño. Desde carteles publicitarios que garantizan la pérdida de peso a políti-

cos asegurando la prosperidad para todos, un pensador crítico debe aprender a reconocer cuando las palabras no están

encaminadas a comunicar ideas o sentimientos sino más bien a controlar lo que pensamos, sentimos, nuestra intención o elección y por tanto nuestro comportamiento.

Paso 3: Identificar y caracterizar los argumentos

En el centro de todo pensador crítico reside la habilidad de reconocer, construir y evaluar argumentos. La palabra ar-gumento puede ser desorientadora para algunos. No significa polemizar, reñir o discrepar, incluso aunque la palabra

sea usada con frecuencia informalmente en ese contexto. En el contexto del pensador crítico, un argumento significa

presentar una razón que soporte, respalde o apoye una conclusión, es decir:

Ejemplo de un argumento:

Ejemplos

No creas en Pedro porque él es un político

Conclusión Indicador Razón

Él es peligroso ya que viene de un país problemático

Conclusión Indicador Razón

Debe haber una o más razones y una o más conclusiones en cada argumento. Dependiendo del uso y el contexto, decir

razón es sinónimo de decir: premisa, evidencia, datos, proposiciones, pruebas y verificaciones. Y también dependien-

do de su uso y el contexto decir conclusiones es también decir, acciones, veredictos, afirmaciones, sentencias y opi-niones.

Un pensador crítico debe aprender a tomar y rescatar los argumentos de la comunicación verbal o escrita. Algunas ve-

ces los argumentos llevarán indicadores como ya que, porque, debido a, por, por esta razón, como es indicado por,

para separar la conclusión de las razones. En otros casos, los argumentos tendrán indicadores como por consiguiente, por eso, de esta forma, así, por tanto para separar la razón de las conclusiones. En otros no habrá indicador y el con-

texto indicará si la frase lleva la intención de razón o conclusión o ninguna de ellas. En general hay tres tipos de indi-

cadores:

Page 95: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 95 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

1. Indicadores de posición o conclusión: Son los indicadores que señalan cuál es la posición, postura o idea

principal a defender o argumentar. Algunos de estos indicadores son: por consiguiente, así, de esta forma,

consecuentemente, con esto se muestra, esto implica. Por ejemplo, Sólo entraron parejas de personas, por consiguiente debe haber un número par de personas.

2. Indicadores de razón: Son los indicadores que señalan cuál es la razón o justificación que apoya la posición u

otras razones anteriores. Porque, puesto que, dado que, a causa de, como se puede ver de, debido a, ya que. 3. Indicadores de objeción: Son los indicadores que señalan una oposición o pensamiento en contra de una po-

sición, una razón o una anterior objeción en caso de oponerse a una anterior objeción de denomina refutación

o impugnación. Pero, aunque, sin embargo, son de este tipo.

Se puede ver un ejemplo más elaborado:

Rosa fue la oficial de seguridad que estaba en servicio cuando los diamantes fueron robados. Muchas personas

consideran que ella es digna de confianza, porque ella ha trabajado en el puesto durante más de diez años sin pro-blemas. Sin embargo, Rosa pudo haber sido tentada a robar los diamantes, ya que ella ha estado teniendo estos

últimos meses dificultades, porque ella juega al póker online cada noche. María dice que Rosa no lo hizo, pero es

la mejor amiga de Rosa. La caja fuerte no estaba forzada, por consiguiente el ladrón tuvo que haber usado la llave adecuada. Consecuentemente Rosa robó los diamantes, ya que sólo ella tenía acceso a las llaves.

En lógica, se designa como inducción a un tipo de razonamiento que va de lo particular a lo general (concepción clási-ca) o bien a un tipo de razonamiento en donde se obtienen conclusiones tan sólo probables (concepción más moderna).

La inducción matemática es un caso especial, donde se va de lo particular a lo general y, no obstante, se obtiene una

conclusión necesaria.

Una pluma y un elefante caen con igual aceleración en el vacío, por lo que se induce o se generaliza que todas las masas caen con igual aceleración en el vacío.

Típicamente, el razonamiento inductivo se contrapone al razonamiento deductivo, que va de lo general a lo particular

y sus conclusiones son necesarias (véase inductivismo razonamiento inductivo). La lógica formal divide el argumento en inductivos y deductivos. Mientras que el pensamiento crítico es una aplica-

ción informal de la lógica, el pensador crítico debería al menos comprender las diferencias fundamentales entre las dos

formas. Si una cosa sigue necesariamente a otra esto implica un argumento deductivo. En otras palabras, un argumen-

to deductivo existe cuando B puede estar lógicamente y necesariamente inferido de A. Por ejemplo, si uno hace la si-guiente afirmación:

"Todos los solteros no están casados (A) y "Pedro es un soltero (B)"

Entonces uno puede alcanzar mediante deducción la conclusión necesaria de que Pedro debe no estar casado. Sin em-bargo, la mayoría de los argumentos que uno se puede encontrar en la vida diaria son inductivos. Al contrario de los

argumentos deductivos, los argumentos inductivos no son blanco o negro, porque estos no prueban sus conclusiones

con un necesariamente. En lugar de eso, ellos están basados en fundamentos razonables para su conclusión. Un pen-sador crítico debería entender que no importa como de fuerte es la evidencia que sostenga a un argumento inductivo ya

que nunca probará su conclusión mediante un necesariamente o con una absoluta certeza. Es decir, el argumento in-

ductivo solo prueba con cierto grado de probabilidad. Los argumentos presentados en la corte por los abogados son

buenos ejemplos de argumentos inductivos, donde un individuo debe ser considerado culpable más allá de la duda ra-zonable o equivalentemente mediante motivos razonables. Siempre será posible encontrar posibles argumentos induc-

Page 96: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 96 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

tivos que tengan razones lógicas y que al mismo tiempo lleven a conclusiones erróneas. Como dice el dicho: el camino

hacia el infierno está empedrado de buenas intenciones. Por ejemplo, incluso si un jurado encuentra a un individuo

culpable más allá de la duda razonable, siempre hay una posibilidad de que el individuo no haya cometido el crimen. El pensador crítico debería evaluar o tasar la coherencia o fuerza convincente de los argumentos inductivos en térmi-

nos de grado de certidumbre en lugar de absolutos "verdad o mentira", "bien o mal", "blanco o negro". Esto se aplica

también a cualquier decisión si o no, ninguno o también a ser realizada. Un razonamiento inductivo que se aplica en los juzgados es, por ejemplo, "En las pruebas forenses con ADN se muestra que Pedro tocó la camisa de Pilar", enton-

ces es probable que Pedro fuera quien cometió el crimen. Sin embargo, existe la duda razonable que puede ser explo-

tada por el defensor. Por ejempl, puede que las muestras estén contaminadas mediante otra persona, que las muestras fueran de otro día, o que simplemente Pedro si se encontrara con Pilar pero que no cometiera el crimen.

Paso 4: Evaluar las fuentes de información

La mayoría de los argumentos hacen referencia a datos para sostener sus conclusiones. Pero un argumento es tan fuer-

te como lo son las fuentes o datos a los que se refiere. Si los hechos que sostienen un argumento son erróneos, enton-ces el argumento será también erróneo. Un pensador crítico deberá aproximarse lógicamente a la evaluación de validez

de los datos. Al margen de nuestras propias y personales experiencias, los hechos son normalmente recibidos a través

de fuentes de información como los testimonios visuales de otras personas o personas que dicen ser expertos. Estas fuentes son citadas típicamente en los medios o publicadas en libros.

En una sociedad donde el entretenimiento y la diversión se han convertido en los fines a largo plazo, es con frecuencia

difícil encontrar información sin sesgo o objetiva respecto a un tema. Por ejemplo, los medios de masa han encontrado una forma de expresión que se vende muy bien y es el ¿y si?, es decir, se atreven a aventurar situaciones hipotéticas

sin pruebas o ningún tipo de dato no con la intención de mostrar los datos realmente probables sino porque dicha si-

tuación sería de gran interés emocional (respecto a sus necesidades humanas básicas) para el público si bien por la

conmoción posible, por la alevosía, entusiasmo o gracia que provoca. Por ejemplo. ¿y si el presidente hizo algo horri-ble?, ¿y si el secretario estaba realizando algún acto criminal?

Es usual ver periodistas reputados publicando especulaciones incendiarias como si se trataran de importantes noticias

o hechos o políticos igualmente manipulando y distorsionando según los intereses de su partido. ¿Cómo uno puede evitar las especulaciones, distorsiones, comentarios desorientadores, exageraciones en debates, discursos, televisión,

radio, periódicos, revistas e internet para dilucidar cuál es realmente la correcta? Incluso algunas editoriales reputadas

parecen estar más interesadas en la venta de libros o periódicos más que en confirmar la verdad que publican. Así que como saber ¿de qué fuente de información fiarse?

No solamente los medios de comunicación distorsionan y manipulan. En muchos casos los políticos también manipu-

lan, distorsionan y mienten. En muchos casos, en connivencia con algunos medios de comunicación (que en muchos

casos apoyan a un pártido político determinado). No hay una respuesta simple, un pensador crítico debería buscar fuentes de información que sean creíbles, precisas y

sin sesgo. Esto dependerá de variables como calidad o calificaciones de las fuentes, integridad y reputación. Véase

también Lista de prejuicios cognitivos o Argumentum ad verecundiam Ir al principio. Para evaluar o tasar estas condi-ciones, el pensador crítico debe buscar respuestas en los siguientes tipos de pregunta:

1. ¿Tiene la fuente de información la adecuada capacitación, aptitudes o nivele de entendimiento sobre la materia

como para afirmar una conclusión?

2. ¿Tiene la fuente de información reputación por exactitud y veracidad? 3. ¿Tiene la fuente de información un motivo para ser inexacta o altamente sesgada?

4. ¿Existe alguna razón para cuestionarse la honestidad o integridad de la fuente?

Si alguna de las respuestas es no para alguna de las dos primeras preguntas y si para las dos últimas, el pensador críti-co debería dudar aceptar los argumentos de dichas fuentes para encontrar otra información. Esto puede requerir inves-

tigación adicional para buscar fuentes de información confiables.

Las fuentes de información normalmente también citan encuestas y estadísticas, que son usados como argumentos que soportan las conclusiones. Es realmente muy fácil, extremadamente fácil, confundir a las personas con los números.

Ya que la correcta aplicación de la estadística y de los números para que sirvan a los argumentos se escapa de la fina-

lidad de este artículo, es importante que el pensador crítico se eduque en los principios fundamentales de probabilidad

y estadística. Uno no necesita ser un profesional en matemáticas para entender esos principios. Algunos libros excelen-tes para el hombre de la calle son How to lie with statistics por Darrel Huff y Innumeracy: Mathematical illiteracy and

its consequences por John Allen Paulos. Existen un pocas formas de realizar bien las muestras de población y muchas

formas de realizar mal las muestras de población, cálculos e informes, ya que muchas veces se ocultan datos que espe-cifican mucho la población.

Page 97: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 97 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Paso 5: Evaluación de los argumentos

El último paso para el razonamiento crítico, es la evaluación de los argumentos, este es por sí mismo un proceso de

tres pasos para determinar si: 1. Las presunciones, conjeturas, supuestos o asunciones están garantizadas

2. El razonamiento llevado a cabo es relevante y suficiente

3. Existe información que ha sido omitida

Asunciones: Las asunciones o suposiciones son esencialmente razones implícitas en un argumento que son garan-tizadas como verdaderas. Usando el argumento anterior de ejemplo, "No creas en Pedro porque él es un político".

La suposición implícita es que los políticos no pueden ser creídos. El primer paso para evaluar los argumentos es

determinar si éstos son suposiciones o conjeturas y si dichas asunciones están garantizadas o no. Una asunción ga-rantiza o certificada es aquella que cumple:

1. Es conocida de ser verdadera

2. Es razonable aceptarla sin requerir otro argumento que la soporte

Una suposición o asunción no está garantizada si falla en el cumplimiento de cualquiera de los dos criterios anteriores. Concerniente al primer criterio, puede ser necesario para el pensador crítico realizar investigación independiente para

clarificar o verificar que es "conocida como verdadera". Si el pensador crítico, a pesar de dicha investigación, es inca-

paz de realizar una decisión acerca de la verdad, él o ella no deberían arbitrariamente asumir que la suposición está no

garantizada véase argumentum a silentio o Ad ignorantiam. Con respecto al segundo criterio, un pensador crítico

normalmente evalúa la sensatez, juicio o sentido común de una suposición en función de tres factores:

El propio conocimiento y experiencia del pensador crítico La fuente de información para la asunción

El tipo de afirmación que se ha realizado

Si un argumento tiene una asunción no garantizada, injustificada o sin base, y si ésta asunción es necesaria para

validar la conclusión del argumento, el pensador crítico tiene un buen motivo para cuestionar la validez del ar-gumento entero. Muchas de los obstáculos para el entendimiento que hay en las tablas resumen (tablas 3 y 4) son

la base para muchas suposiciones sin base.

Razonamiento: El segundo paso para evaluar los argumentos es evaluar o tasar la relevancia y suficiencia de un razonamiento o evidencia para soportar la conclusión de un argumento. Es útil pensar en la relevancia

como una medida de calidad del razonamiento y la suficiencia como una medida de la cantidad de razona-

miento llevada a cabo. Los buenos argumentos deberían tener ambas, calidad (ser relevante) y cantidad (ser suficiente)

Normalmente es más fácil (aunque no siempre) extraer del razonamiento lo que es relevante que determinar si el

razonamiento es suficiente. Así pues, ¿cómo puede uno evaluar la suficiencia del razonamiento de una evidencia

que apoye una conclusión?. El término duda razonable, es usado en los juicios y puede considerarse una buena línea directiva. Pero de nuevo, ¿cómo puede uno determinar la duda razonable? Desafortunadamente, no hay una

respuesta sencilla, pero existen varios criterios.

1. Es importante mantener una actitud de pensador crítico del paso 1 y estar alerta de los obstáculos y trampas del pensamiento crítico del paso 2.

2. Preguntarse asimismo el propósito o las consecuencias que podría tener un argumento realizado. Esto

normalmente determinará cuantas pruebas o evidencias serán necesarias. Un móvil o un motivo puede

ayudarnos a esclarerecer por donde se debe buscar información nueva. 3. Estar alerta de los estándares actuales de evidencia para un sujeto. Por ejemplo, no puede juzgar la sufi-

ciencia de una evidencia para una afirmación científica a menos que tú conozcas los métodos y estánda-

res para la verificación de similares afirmaciones científicas. 4. La suficiencia de una evidencia debería estar en proporción a la fuerza con la que una conclusión ha sido

afirmada. Esto es, evidencia que no es suficiente para apoyar una conclusión fuerte (ejemplo conclusión

fuerte: Pedro definitivamente compró la pintura) puede ser suficiente para apoyar a una conclusión débil (ejemplo: Pedro, pudo haber comprado la pintura). En estos ejemplos, si las evidencias se limitan

a una fotografía de Pedro en la tienda el mismo día que la pintura fue comprada, esta evidencia no de-

bería ser suficiente para probar una conclusión fuerte, pero si ser suficiente para probar una conclusión

débil. Cuando se evalúan múltiples pruebas, tanto los pro como los contra, ¿cómo puede uno valorar el peso de la evi-

dencia para determinar si un argumento es convincente?. Otra vez, no hay una respuesta rápida. Para ser equitati-

vos, a más confiable es la fuente del paso 4, mayor peso debería darse a la evidencia. Adicionalmente para ser equitativos, a mayor peso que se haya dado a una evidencia (que se contradice con otra), debería también propor-

cionarse o requerirse mayor número de evidencias en términos de relevancia y suficiencia para validar el argu-

Page 98: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 98 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

mento. Muchas de las trampas u obstáculos al entendimiento listadas en las tablas 3 y 4 o en lista de prejuicios

cognitivos dan ejemplos de razonamientos insuficientes o irrelevantes.

Omisión: Un argumento convincente es aquel que está completo, es decir, en el que está presente todas las evidencias o razonamientos relevantes y no solo las evidencias que apoyen el argumento en una determinada

dirección. Argumentos que omiten pruebas relevantes pueden parecer más fuertes de lo que realmente son.

Este es el paso final para la evaluación de los argumentos es tratar de determinar si evidencias o pruebas im-portantes han sido omitidas o eliminadas. Algunas veces esto pasa sin intención o descuido o ignorancia, pe-

ro con demasiada frecuencia es un acto intencionado.

Como es normalmente improductivo o sin sentido reunir a los argumentadores o debatidores y preguntarles si han omitido datos, el mejor modus operandi del pensador crítico es buscar argumentos que se opongan al tema

en cuestión, con lo cual dicha búsqueda revelará con suerte dichas omisiones. Es muy raro ver a una persona que

activamente busca puntos de vista opuestos y los trata seriamente. Es muy raro porque precisamente es lo que un

pensador crítico hace.

Lista de comprobación para un argumento

Una vez entendidos los cinco pasos anteriores es un pensador crítico podría usar adicionalmente una lista rápida para

evaluar argumentos importantes. Estas preguntas deberían responderse usando la política de los cinco pasos. 1. ¿Existe alguna ambigüedad, punto oscuro o debilidad que bloquea mi entendimiento o comprensión del argu-

mento?

2. ¿Acaso el argumento en cuestión abraza o cae en alguna de las falacias o trampas al entendimiento de lista de prejuicios cognitivos o tablas del 1 al 4?

3. ¿Es el lenguaje usado excesivamente emocional o manipulador (véase recurrir a las emociones o tabla 2?

4. ¿He separado el razonamiento (evidencias) y asunciones o hechos relevantes de la información irrelevantes, si-

tuaciones imaginarias presentadas o hipótesis, ejemplos imaginarios, o información de fondo no contrastada? 5. ¿He determinado cuales asunciones están garantizadas y cuáles no?

6. ¿Puedo listar las razones o evidencias para un argumento y alguno de sus subargumentos?

7. ¿He evaluado la verdad, relevancia, equidad, justicia, integridad, plenitud, significancia y suficiencia de las pruebas que apoyan la conclusión?

8. ¿Necesito información adicional para realizar un juicio razonable sobre un argumento porque pueden haber

omisiones u otras razones? 9.

Tablas referencia: trampas al pensamiento crítico

Tabla 1: Barreras debidas a las limitaciones del ser humano

Trampa/Obstáculo Definición Ejemplo Consejo Pmto. Crítico

Sesgo de confirma-ción y pensamiento selectivo

El proceso mediante el cual uno tiende a notar y mirar y dar más valor a los hechos, evidencias o pruebas que confir-man las propias creencias y a obviar, ig-

norar o desvalorar las evidencias que las contradicen

Si uno cree que hay más asesina-tos con luna llena entonces ten-derá a leer o percibir más las noti-cias de asesinatos que ocurren en luna llena y tiende a descartar los asesinatos que ocurren en otras circunstancias.

Lo mejor es obtener evaluar objetivamen-te toda la información relevante y poner-se en la postura contraria del caso antes

de realizar un juicio de valor.

Sesgo de memoria, Confabulación

Esta trampa se produce cuando uno des-conoce que con frecuencia la memoria es manufacturada para llenar los espacios vacíos en nuestras historias, es decir, que la memoria de los hechos, con el tiempo puede ser inconscientemente reemplazada por fantasía

Los oficiales policiales no deber-ían mostrar una foto de un posible asaltante o agresor a un testigo an-tes de una previa alineación con otros sospechosos, o la memoria real del testigo puede ser incons-cientemente reemplazada

Poner más seguridad y confianza en los hechos probados que en las memorias, re-cuerdos recolectados o testimonios de otros. Conocer tus propias limitaciones de memoria.

Ignorancia

Se produce cuando existe una falta de co-nocimiento esencial de fondo o de infor-

mación sobre un tema cuando se realiza un juicio de valor

Uno puede estar convencido que un "mago" tiene el poder de hacer levitar objetos, pero no ve o sabe de la fina cuerda que tiene atados

a ellos

Realizar las indagaciones o investigacio-

nes apropiadas en los múltiples puntos de vista existentes sobre el tema para obtener todas las evidencias pertinentes antes de hacer un juicio de valor o lanzar conclu-siones.

Percepción selectiva

Se produce cuando uno está desprevenido o es inconsciente de que nuestra propias

limitaciones de percepción pueden llevar-

Mirando hacia las estrellas por la noche y percibir que ellas están

tan cerca como la luna y los pla-

Reconocer que "mirar" no es siempre "creer" porque nuestros sensores y la per-

cepción o interpretación por parte del ce-

Page 99: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 99 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

nos a desorientarnos sobre la realidad netas. O mirar la luna y pensar que esta nos sigue

rebro subsiguiente tienen limitaciones Ilusiones ópticas. Conocer cuándo y cómo verificar tus observaciones con

otras fuentes.

Sesgos personales y prejuicios

Se produce cuando uno está desprevenido o es inconsciente de que cada uno de no-sotros tiene sus propios sesgos y prejui-cios, resultado de nuestras propias y úni-cas experiencias vividas y el punto de vis-ta del mundo, lo cual hace difícil perma-

necer objetivo y pensar de forma crítica

Algunas personas tienen prejui-

cios en contra de las afirmaciones realizadas por los científicos por-que desde su punto de vista éstas parecen demasiado frías o imper-sonales

Resistir a tus propios prejuicios mediante una focalización en los hechos, las fuen-tes y el razonamiento que apoya los ar-gumentos.

Barreras físicas y emocionales

Se produce cuando uno está desprevenido o es inconsciente de que uno al tener estrés, fatiga, drogas y limitaciones de es-te tipo, puede influir y afectar severamen-te a nuestra habilidad para pensar con cla-ridad y crítica

Los controladores aéreos suelen tener dificultades para tomar bue-nas decisiones después de largas horas de trabajo

Limitar o restringirse de hacer decisiones críticas cuando se esté extremadamente exhausto, estresado o mentalmen-te/físicamente indispuesto.

Evidencia testimonial

Se produce cuando uno está desprevenido o es inconsciente de que uno suele basar en testimonios, anécdotas vividas de otros la construcción de sus propias creencias, incluso aunque éstas sean conocidas co-mo inherentemente subjetivas (falsa vi-vencia), inexactas, increíbles, sesgadas e

incluso ocasionalmente fraudulentas

Las dramáticas historias de las vi-

siones del "hombre de la nieve" no prueban su existencia

Resistirse a realizar juicios de valor basa-dos solo en testimonios. Afirmaciones ex-

traordinarias generalmente requieren también evidencias y pruebas extraordi-narias

Tabla 2: Barreras debidas al uso del lenguaje

Trampa/Obstáculo Definición Ejemplo Consejo Pmto. Crítico

Ambigüedad

Se produce cuando una palabra o ex-presión puede ser entendida en más de un sentido

De la frase, "Experto en mentiras testificó en el juicio" ¿es el experto un mentiroso o

es una persona que es capaz de saber cuando alguien miente?

Si el significado pretendido de una palabra o expresión ambigua no pue-

de ser determinado, evite realizar juicios de valor.

Expresiones cerradas o

inamovibles o dadas por hecho

Se produce cuando se usa una expre-sión que evita que uno pueda llegar a cuestionarse la validez de los argu-mentos

Expresiones como "Como todo el mundo

sabe" o "El sentido común nos dice" o "Como siempre", "cómo es evidente"

Evitar o descartar las expresiones ce-rradas y centrarse en los hechos y el razonamiento que soportan los ar-gumentos.

Eufemismos y doble moralidad

Se produce cuando se pretenden usar palabras o expresiones inofensivas pa-ra desorientarnos, evadirnos, o evitar enseñarnos la verdadera, cruda y des-agradable realidad

Referirse a la política de asesinatos en

masa o magnicidio como "limpieza étni-ca" o al homicidio accidental de personas inocentes como "daño colateral". Usando el contexto militar, frases como "neutrali-ce toda oposición" más que mate o asesi-ne (negativa)

Observar más allá del contenido emocional y reconocer el contenido cognitivo o basado en los hechos de las palabras y expresiones eufemísti-cas.

Jerga, argot o lenguaje técnico

Se produce cuando se usa lenguaje

específico o técnico para hacer pare-cer lo simple mucho más complejo, hacer parecer lo trivial mucho más profundo, o lo insignificante impor-tante, de forma intencionada y para impresionar a los demás

Referirse a una familia como "un conjun-to limitado de individuos que juegan cada uno su papel" o a un desalojado o sin te-cho como a un "miembro de la sociedad sin un objetivo"

Reconocer el contenido basado en hechos de las expresiones o palabras en jerga.

Contenido emotivo

Se produce cuando se usa intenciona-damente palabras para alimentar y avivar los sentimientos sobre un tema sesgando o creando prejuicios en los otros de forma positiva o negativa. La

finalidad habitual es para ganar in-fluencia o poder

Llamar a un detergente "Diver" o "Ge-

nial" (connotaciones positivas) y no "Ru-tinol" o "Tristón" (connotaciones negati-vas). En el contexto político, "Lo hare-mos por el pueblo, para que todo el mun-do pueda conseguir lo que quiera, para que se sientan orgullosos, dignos de per-tenecer a este gran País"

Aprender a reconocer y distinguir el contenido emotivo del lenguaje. Tra-tar de concentrarse en el razonamien-to y el contenido real o basado en los hechos del lenguaje cuando se esté evaluando los argumentos.

Implicación falsa Es un lenguaje que es claro y preciso pero desorientador porque sugiere al-

La industria de la alimentación inteligen-temente expresa el contenido de grasas

Entender no solo los hechos sino también su relevancia y contexto. Se

Page 100: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 100 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

go falso como un porcentaje del peso del producto no de calorías. Esto es un 2% "leche baja en grasas" en realidad tiene un 31% de

grasa cuando la grasa es medida como porcentaje de calorías

recomienda entender o saber inter-pretar estadísticas.

Galimatías

Es el uso de lenguaje no técnico pero confuso para desorientar o embaucar

Una compañía usa lenguaje intimidatorio y lánguido para simplemente expresar que si tu orden de pago es devuelta, en-tonces el recibo de pago también es anu-lado

Reconocer los hechos en el conteni-do de las expresiones con galimatías.

Andarse con rodeos o

palabras evasivas

Es el uso del lenguaje que parece lle-varnos a un punto de vista particular o en un sentido pero debido a sus pala-bras permite negar esa intención y re-tirarse

La afirmación del presidente Clinton de que no había tenido "una relación sexual" con Mónica Lewinsky y que después ex-plicó que "realizar una felación" no es mantener una relación sexual

Estar atento de rodeos o palabras evasivas no claras que eliminen los detalles que evidencien o determinen con claridad los hechos de un argu-mento.

Juicios de valor

Realizar opiniones o juicios de valor como si pensáramos que son hechos para que la audiencia no tenga porqué preocuparse por realizar su propio jui-

cio

El presidente se mostró con motivo orgu-lloso al firmar el tratado de paz.

Distinguir entre lo que es un hecho y

lo que es una opinión en cada argu-mento. En este ejemplo un hecho pudo haber sido que el presidente se mostrara orgulloso por la firma pero la coletilla con motivo viene de una opinión personal que no ha sido ar-gumentada.

Comparaciones sin sentido o absurdas

Se trata de realizar una comparación que implica que algo es superior pero al mismo tiempo se puede negar que

lo sea

Una afirmación de un anuncio sobre una batería solo dice: "Hasta un 30% más de duración" sin embargo, no dice, que "du-

rará" un 30% más ya que la palabra has-ta permite todo un recorrido y si lo hicie-ra no dice sobre qué se produce el incre-mento del 30%

Evitar realizar juicios si no se está completamente seguro sobre lo que está siendo comparado

Vaguedad o indefini-ción

Se trata de un lenguaje que es menos preciso que lo que el contexto requie-re

Si alguien necesita cobrar mañana y el prestamista dice, "Te pagaré pronto" la respuesta del prestamista es, en ese caso o contexto, demasiado vaga.

Estar alerta de las consecuencias de usar afirmaciones imprecisas o va-gas.

Tabla 3: Barreras debidas a fallos en la lógica o percepción (Falacias y sesgos lista de prejuicios cognitivos)

Trampa/Obstáculo Definición Ejemplo Consejo Pmto. Crítico

Ad Hoc

Una nueva hipótesis o parche, que no puede ser independientemente testado, es usado para explicar los hechos que refu-tan una afirmación o teoría haciéndola no falsificable

Algunos investigadores rechazan "los comentarios hostiles" del adversario y alegan que éstos modifican los instru-mentos de medida o estropean las pruebas

Poner poca seguridad o confianza o reservarse los juicios de valor sobre afirmaciones que no pueden ser pro-badas independientemente por cual-quiera.

Apofenia y supersti-ción

Es la percepción errónea de una conexión entre eventos que en realidad no están re-lacionados

Irracionalmente se cree que como uno siempre lleva su sombrero mientras ve

el fútbol, cuando no lo lleva se percibe que hay casualmente otras jugadas: se asocia que el sombrero puede influir en el juego

Reconocer la diferencia entre causa y efecto en contra de coincidencias irrelacionadas.

Argumentum ad ig-norantiam

Es una falacia lógica que afirma que algo es verdad por el mero hecho de no haber sido probado como falso

Creer que debe haber vida en Marte porque nadie ha probado que no hay

vida en él. No creer en Plutón porque nadie te ha probado que existe. Creer en Dios porque nadie puede probar que no existe. Creer en los extraterrestres porque nadie puede probar que no exis-ten

No creer en una proposición simple-mente porque no puede ser probada como falsa. La creencia se debe apo-

yar o basar en los argumentos no en el subjetivo conocimiento que tenga uno o la humanidad sobre algo. En caso de no tener información la me-jor postura es abstenerse a hacer jui-cios de valor o agnosticismo, Véase lista de prejuicios cognitivos.

Razonamiento circu-lar

Es una forma falaz de razonamiento en el que uno asume como verdadero algo que

Un hombre afirma que los fenómenos paranormales existen porque él ha teni-

Reconocer cuando un argumento asume un lema como verdad sin

Page 101: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 101 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

al mismo tiempo intenta probar do experiencias que pueden únicamente ser descritas como paranormales. Es decir, si se asume que únicamente pue-

de ser descrito como algo paranormal evidentemente se asume la existencia o lo que se intenta justificar. Ej. Los sal-tadores del circo llevan cables sujetos porque es imposible que éstos salten sin temor en el circo sin llevar cables. Estos razonamientos se usan también el el método socrático pero conscientes de

la premisa supuesta y para encontrar hipótesis falsas

haber argumentado y al mismo tiem-po se trata probar ese mismo lema. Si esto ocurre hay que buscar por expli-

caciones alternativas.

Ilusión de serie o fa-lacia del francotira-dor

Es la impresión errónea de que algunos eventos totalmente aleatorios ocurren de forma agrupada o serial y no totalmente aleatoria

En algunos experimentos paranormales la búsqueda de agua con una varita: éste sistema puede encontrar agua por probabilidad sobre un largo periodo de tiempo y asumirse que esto prueba que

la vara funciona

Entender los principios básicos de probabilidad y estadística. Reconocer cuando los números están siendo usados correctamente y objetivamen-te y cuando están desviados o usados

incorrectamente.

Falsa analogía

Hacer analogías ilógicas para apoyar la

validez de una afirmación particular

Argumentar que está mal que dos niños compartan la misma cama porque las camas dobles o convivencia de crimi-nales en las penitenciarías puede con-ducir a un mal comportamiento

Aprender a reconocer los fallos en las asunciones y errores de contexto que

se encuentran detrás de las falsas analogías.

Efecto Forer

Es la tendencia a aceptar descripciones de personalidad vagas que pueden ser apli-cables a cualquiera como únicamente aplicables a uno mismo (horóscopo, carta

astral, quiromancia)

Las cartas astrales o los horóscopos tra-tan a las personas de un signo específi-co con calificativos que serían aplica-bles a cualquier individuo. Este efecto funciona en conjunción con el auto-engaño y Pensamiento mágico

Evaluar de forma crítica si las des-cripciones personales son únicamente verdaderas para ti o podrían ser apli-cables para la mayoría de las perso-

nas.

Falacia del jugador o falacia de Gambler

Esta falacia se basa en creer que un suce-so con probabilidades fijas, como el lan-

zamiento de una moneda, puede incre-mentar o decrementar sus posibilidades en función de los resultados más recien-tes. Es decir, pensar que algunos sistemas tienen memoria cuando no lo tienen.

El concepto equivocado de tomar

números de lotería que no han sido to-davía resultado ganadores puesto que esto incrementará nuestras probabilida-des de ganar]

Aprender a reconocer y distinguir en-tre eventos que tienen una probabili-dad fija o una probabilidad variable a parámetros

Comparación irrele-vante

Realizar una comparación que es irrele-vante, inapropiada o entre objetos de dife-rentes niveles o clases

Realizar la afirmación: "Para una ofici-na la impresora A es mejor pues hace mejores copias que la impresora B, cuando se ignora un hecho importante

como que la impresora B también per-mite enviar fax, copiar y escanear

Estar seguro de estar comparando "manzanas con manzanas", es decir,

que si la finalidad de la comparación es ver qué manzana es mejor, pues entonces hacer que la comparación tenga sentido. El problema normal-mente viene de no tener claro o bien definido la finalidad de la compara-ción.

Ley de los grandes números

Un error que se produce al entender que en una muestra lo suficientemente grande muchas aparentemente improbables coin-cidencias son de hecho probables coinci-dencias, es decir, probables de ocurrir. Esto se debe al propio efecto foco osesgo de confirmación en la percepción e inter-pretación de los datos.

Decir que el número 11 es especial por el 11 de septiembre puede ser rebatido

matemáticamente o estadísticamente

Entender los principios básicos de probabilidad y estadística. Reconocer cuando los números están siendo

usados correctamente y objetivamen-te.

Non sequitur

Las razones dadas para soportar una afirmación son irrelevantes o no correla-das

Decir: "Tengo miedo al agua así que mi deporte será el puenting" o "me gusta conducir por eso me compro un Toyo-

ta". En cualquiera de los casos com-prarse un Toyota o hacer puenting no depende directamente de la razón dada ya que hay muchos más coches o de-portes que se han descartado

Aprender a reconocer cuando los ar-gumentos están soportados por razo-nes irrelevantes. Este tipo de falacia es muy importante por lo común y generalizada que está. Esta falacia evita tener claros los motivos, inclu-so para la propia persona, por lo que

se hacen las cosas. Es usual verla con el auto-engaño.

Pareidolia Un tipo de error de confusión en la per- La mayoría de los avistamientos OVNI, Reconocer que una vaga percepción

Page 102: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 102 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

cepción debida a la natural asociación e instinto social de reconocimiento de ex-presiones faciales y objetos comunes que

se produce cuando al introducir un estí-mulo vago éste se percibe como algo cla-ro, distintivo o altamente significante. Pueden estar provocados por sesgos de memoria (errores en la red neuronal ba-yesiana de asociación que nos hacen creer haber visto algo que realmente no vimos), por sesgos de confirmación, o por sesgos

naturales de asociación

Bigfoot, Elvis o también las asociacio-nes a caras en las nubes u otros objetos

de un evento extraño puede tener múltiples explicaciones y no única-mente la primera asociación natural.

Buscar explicaciones alternativas que sean más probables que emocionan-tes.

Post hoc ergo prop-ter hoc

Es el error cometido al pensar que cuando una cosa A viene tras otra B, la primera A es necesariamente la causa del segundo evento B

Creer que tocar los tambores durante un eclipse hará que el sol vuelva al cie-lo

Tratar de identificar, el porqué, las causas posibles conocidas o los me-canismos que las producen, de los efectos observados, empezando con aquellos mecanismos que son más probables. En su defecto, aplicar

prueba y error y método científico que aporten nuevas excepciones, va-riables desconocidas y datos.

Falacia pragmática

Esta falacia se produce cuando se afirma que algo es verdad porque "funciona", in-cluso aunque la causalidad entre algo y un resultado no esté demostrada. En in-geniería se usa mucho esta falacia por el esfuerzo o energía que permite ahorrar "Si funciona no lo toques". Es un caso especial de Cum hoc, ergo propter hoc

Creer que si se reza mucho lloverá. Y continuar haciéndolo a pesar de que el hecho de que llueva es altamente pro-bable y puede deberse a muchos otros

factores. O después de usar un cinturón magnético curativo notar que los dolo-res de espalda desaparecen incluso cuando esto puede ser debido por otras razones

Tratar de identificar el porqué o los posibles mecanismos que causan los

efectos observados, empezando con los más probables y no con los más atractivos emocionalmente.

Falacia regresiva

Se produce al obviar la natural e inevita-ble fluctuación probabilística debido a va-riables desconocidas de las cosas cuando se trata de hallar la causa efecto. Es un caso especial también de Cum hoc, ergo propter hoc

Si a alguien le duele el cuello y este do-lor fluctúa, la persona tratará de probar nuevos remedios cuando el dolor es

mayor. Es decir, se encuentra en la cúspide del dolor. Cuando aplique el remedio y de forma natural el dolor mengue lo asociará al nuevo remedio erróneamente. Igualmente la gente trata de invertir en la bolsa sólo cuando ésta está muy bien, pero cuando ésta vuelve a la normalidad lo achacan a su mala

suerte. El problema está en no tener su-ficiente información o estadística ex-tensa

Tratar de identificar y entender los patrones de comportamiento o reali-

zar una estadística correcta antes de realizar juicios de los eventos obser-vados.

Falacia del efecto dominó o pendiente deslizante

Un argumento que asume que una casca-da de elementos adversos o propicios su-cederá con el primer movimiento, sin

ofrecer prueba de ello

Debido a que los inspectores han regu-lado y controlado dónde fumar en público, al final se acabará en un con-trol cerrado de todas las cosas de nues-

tra vida privada. Véase lista de prejui-cios cognitivos para más información

Evaluar la lógica o los argumentos que sostienen que la cascada de even-tos sucederá.

Tabla 4: Barreras o trampas debidas a fallos psicológicos o sociológicos (Falacias y lista de prejuicios cognitivos)

Trampa/Obstáculo Definición Ejemplo Consejo Pmto. Crítico

Ad Hominem

Criticar a la persona que reali-za el argumento y no el argu-mento en sí mismo

No deberías creer ni una sola palabra de mi opo-nente porque él está en-fadado porque yo siem-

pre termino primero en la pole

Centrarse en las razones y hechos que soportan un argumen-to y no en la persona que los realiza. Independientemente, verificar los hechos aportados si la fuente es cuestionable. Pero nunca desechar la información, aún menos si no se ha

trabajado antes con las fuentes y se desconozce su fidelidad y la única referencia es a través de otros.

Argumentum ad vere-cundiam o apelar a la autoridad

Procurar que una afirmación controvertida sea aceptada ba-jo la base de que está realiza-da por una persona admirada,

Como el papa piensa que la pena capital está mo-ralmente justificada en-tonces debe estar moral-

Reconocer que cualquier intento de apelar a la autoridad es irrelevante a la hora de dar una base lógica sólida o hechos que apoyen ciertamente un argumento.

Page 103: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 103 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

respetada, conocida o impor-tante.

mente justificada

Falacia

Una falacia o sofisma es, según la definición de Irving Copi, un razonamiento lógicamente incorrecto, aunque psi-

cológicamente pueda ser persuasivo.

Cabe aclarar que un razonamiento falaz no necesariamente posee una conclusión falsa; así como un razonamiento co-rrecto o válido no necesariamente tiene una conclusión verdadera.

Los razonamientos falaces no son "falaces" por arribar a una conclusión falsa, sino por un error en su procedimiento.

Podría decirse que una falacia es un razonamiento en que la conclusión no se deriva estrictamente de las premisas, aunque parece hacerlo.

Ejemplos de razonamientos falaces

Se ilustran errores comunes en un razonamiento. Cabe destacar que la crítica de un razonamiento no tiene relación con

la validez de su conclusión. La conclusión puede ser válida, mientras que el razonamiento en sí mismo puede no serlo.

Juan está enamorado.

A Juan le gusta Carla. Por tanto, Juan está enamorado de Carla.

Pero Carla no de Juan.

La mejor forma de mostrar que el raciocinio anterior no es válido es usar diagramas de Venn. En terminología lógica,

el raciocinio no es válido ya que al menos ante una interpretación de los predicados no preserva su validez. Desafortunadamente, pocos razonamientos falaces son tan claros como el ejemplo anterior. Muchos de ellos involu-

cran causalidad, que no es una parte de la lógica formal. Otras utilizan estratagemas psicológicas como el uso de rela-

ciones de poder entre el orador y el interlocutor, llamamientos al patriotismo, la moralidad o el ego para establecer las premisas intermedias (explícitas o implícitas) necesarias para el razonamiento. De hecho, las falacias se encuentran

muy a menudo en presunciones no formuladas o premisas implícitas que no son siempre obvias a primera vista.

Primer ejemplo

1. Germán es un buen jugador de tenis. 2. Por tanto, Germán es 'bueno', esto es, bueno moralmente.

Aquí el problema se encuentra en que la palabra 'bueno' es una palabra ambigua, lo que quiere decir es que tiene dife-

rentes significados. En la premisa, se afirma que Germán es bueno en una actividad particular, en este caso tenis. En la

conclusión, se afirma que Germán es bueno moralmente. Éstos son claramente significados distintos de la palabra 'bueno'. Aunque la premisa sea cierta, la conclusión puede ser falsa: Germán puede ser el mejor jugador de tenis del

mundo y al mismo tiempo ser malvado.

Segundo ejemplo

Una variante humorística de la falacia de la ambigüedad: 1. Una hamburguesa es mejor que nada.

2. Nada es mejor que la felicidad eterna.

3. Por tanto, una hamburguesa es mejor que la felicidad eterna. Este razonamiento tiene la apariencia de una inferencia que aplica transitividad en la relación «es mejor que», que en

principio es posible, el problema está dado por el significado de nada. En este caso, es un ejemplo de ambigüedad

semántica.

En: "Una hamburguesa es mejor que nada". La palabra nada significa: la ausencia absoluta de cualquier ser o cosa. En cambio, en: "No hay nada mejor que la felicidad eterna". La palabra nada significa: no existe cosa que [sea mejor

que felicidad eterna].

No hay que pensar en "ninguna cosa" como un objeto en si, sino como la abstracción de la "no existencia". Tercer ejemplo

Ejemplos cotidianos:

1. El oro brilla.

2. Esta daga brilla. 3. Por lo tanto, esta daga es de oro.

Este es un ejemplo de falacia de afirmación de consecuente. Esta falacia tiene la forma:

1. P es Q

2. M es Q 3. Por lo tanto, M es P

Page 104: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 104 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Por definición, cuando un razonamiento es correcto y sus premisas son verdaderas, entonces su conclusión es verdade-

ra. En este caso, tenemos que las premisas son verdaderas y la conclusión no necesariamente verdadera, ya que la daga

puede ser de oro (siendo verdadera) o de otro material brillante como por ejemplo el hierro (siendo falsa). Por tanto, el argumento es incorrecto. La manera de saberlo es empleando contraejemplos que lleven al límite estas estructuras fa-

laces.

Prejuicio cognitivo

Un prejuicio cognitivo (del inglés cognitive bias, „predisposiciones cognitivas‟) es una distorsión cognitiva que afecta

al modo en el que los humanos percibimos la realidad. Algunos de estos procesos han sido verificados empíricamente

en el campo de la psicología, otros están siendo considerados como categorías generales de prejuicios. Véase lista de prejuicios cognitivos.

Toma de decisiones y predisposiciones conductuales

En un experimento ideado por Wolfgang Köhler, se pide al sujeto que diga cuál de estas figuras se llama booba y cuál kiki. El 98% de los sujetos le asigna el nombre booba a la figura de la derecha, quizá porque los labios se redondean

para producir el sonido o porque en el alfabeto romano, las letras b, o y a tienen una forma más redondeada que k e i

(puntiagudas).

Capitulo 6

Se necesitan dos años para aprender a hablar y sesenta para aprender a callar. Leo Buscaglia

"Uno de los defectos de la educación superior moderna es que hace demasiado énfasis en el aprendizaje de ciertas es-pecialidades, y demasiado poco en un ensanchamiento de la mente y el corazón por medio de un análisis imparcial del

mundo." Bertrand Russell

Métodos numéricos simples: Iteraciones manuales y automáticas

Ej1. Se arroja una piedra desde un edificio con una velocidad inicial 0. Se desea calcular la altura total h del edificio conociendo el

tiempo de caída libre en segundos. Utilizar la fórmula del MA caída libre h = 1 / 2 * g * t ^ 2. Pseudocódigo Pascal Lenguaje C

Algoritmo ej11

Variables Real: t, g, h Inicio Escribir 'Ingrese el tiempo de caída libre:' Leer t g ← 9.8 h ← 1 / 2 * g * t ^ 2 Escribir 'altura total=', h Fin.

program ej12;

var t, g, h: real; begin write ('Ingrese el tiempo de caída libre'); readln (t); g := 9.8; h := 1 / 2 * g * t *t; writeln ('altura total=', h); end.

#include <stdio.h>

main () { float t, g=9.8, h; printf( "Ingrese el tiempo de caída libre: " ); scanf( "%f", &t ); h = 1 / 2 * g * t *t; printf( "altura total= %f\n", h ); }

Ej2. De acuerdo a l ejercicio anterior, informar si el edificio en un rascacielos o no lo es, se hace la suposición que un piso mide 3

metros y un rascacielos tiene más de 30 pisos.

Pseudocódigo Pascal Lenguaje C

Algoritmo ej21 Variables Real: t, g, h, pisos Inicio Escribir 'Ingrese el tiempo de caída libre:' Leer t

program ej22; var t, g, h, pisos: real; begin write ('Ingrese el tiempo de caída libre'); readln(t);

#include <stdio.h> main () { float t, g=9.8, h; printf( "Ingrese el tiempo de caída libre: " ); scanf( "%f", &t );

Page 105: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 105 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

g ← 9.8 h ← 1 / 2 * g * t ^ 2 pisos ← h/3

si pisos>30 entonces Escribir 'Rascacielos de ', pisos, ' pisos' sino Escribir 'Edificio de ', pisos, ' pisos' finsi Escribir 'altura total= ', h Fin.

g :=9.8; h := 1 / 2 * g * t *t; pisos ← h/3;

if pisos>30 then writeln ('Rascacielos de ', pisos, ' pi-sos') else writeln ('Edificio de ', pisos, ' pisos'); writeln ('altura total=', h); end.

h = 1 / 2 * g * t *t; pisos ← h/3; if (pisos>30)

printf( "Rascacielos de %f pisos\n ", h ); else printf( "Edificio de %f pisos\n ", h ); printf( "altura total= %f\n", h ); }

Ej 3. Dado la altura del edificio H en metros, determinar el tiempo de caída de la piedra, sin despejar de la fórmula, proponiendo

valores a t (iterando con t) hasta encontrar la altura con una buena aproximación (1%). Realice dos algoritmos, el primero que en-

cuentre el tiempo en forma manual, el segundo de manera automática. Nota: se puede proponer el tiempo de caída desde una altura

máxima para todos los rascacielos.

Manual Automático Algoritmo ej31 Variables Real: t, g, H, h_c caracter: Opcion

Inicio Escribir 'Ingrese la altura del edificio:' Leer H g ← 9.8 Repetir Escribir 'Proponer valor de tiempo:' Leer t h_c ← 1 / 2 * g * t ^ 2

ErA ← H – h_c Escribir 'Error absoluto:', ErA Escribir '¿Mas iteraciones? S/N:' Leer Opcion Hasta que Opcion ='N' Escribir 'tiempo de caída= ', t Fin.

Algoritmo ej32 Variables Real: t, g, H, hmedio, ErRP, ErRC, tmax, tmin, tmedio Inicio

Escribir 'Ingrese la altura del edificio y error Rel propuesto:' Leer H, ErRP Escribir 'tiempo máximo de caída:' Leer tmax tmin ← 0 g ← 9.8 Repetir tmedio ← (tmin + tmax) / 2

hmedio ← 1 / 2 * g * tmedio ^ 2 ErRC ← Abs ((H – hmedio)/H) *100 si hmedio > H entonces tmax ← tmedio sino tmin ← tmedio finsi

Hasta que ErRC < ErRP Escribir 'tiempo de caída= ', tmedio Fin.

Ej. 4. Encontrar la raíz de la ecuación cúbica x^3 - 6x^2 + x – 56 = 0. La raíz debe estar en un intervalo [a, b] donde e signo de f (a) es distinto del signo de f (b). Para nuestro ejemplo el intervalo puede ser [0,20] y error deseado menor a

1%. Rta: 7

Manual Automático

Algoritmo ej41 Variables Real: a, b, f caracter: Opcion Inicio {Reescribimos la ecuación f = x^3 - 6x^2 + x = 56 }' Repetir Escribir 'Proponer valor de x:'

Leer x f ← x^3 - 6x^2 + x ErA ← f - 56 Escribir 'Error absoluto:', ErA Escribir '¿Mas iteraciones? S/N:' Leer Opcion Hasta que Opcion ='N' Escribir 'Raíz aproximada = ', x Fin.

Algoritmo ej42 Variables Real: a, b, m, m1, m2, ErRP, ErRC, fm Inicio Escribir 'Ingrese intervalo a y b y error propuesto' Leer a, b, ErRP m ← (a + b) / 2 Repetir

fa ← a^3 – 6 * a^2 + a - 56 fm ← m^3 – 6 * m^2 + m - 56 si fa*fm > 0 entonces a ← m sino b ← m finsi m1 ← m

m ← (a + b) / 2

Page 106: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 106 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

m2 ← m ErRC ← Abs ((m1 –m2)/m1) *100 Hasta que ErRC < ErRP

Escribir 'Raíz aproximada= ', m Fin.

Capitulo 7 Una opinión equivocada puede ser tolerada donde la razón es libre de combatirla. Thomas Jefferson

He aprendido que los errores pueden ser tan buenos profesores como el éxito. Séneca

Complejidad

Complejidad es la cualidad de lo que está compuesto de diversos elementos. En términos generales, la complejidad

tiende a ser utilizada para caracterizar algo con muchas partes que forman un conjunto intrincado.

Etimología: Desde un punto de vista etimológico, la palabra complejidad es de origen latino, proviene de complectere,

cuya raíz plectere significa trenzar, enlazar. El agregado del prefijo “com” añade el sentido de la dualidad de dos ele-

mentos opuestos que se enlazan íntimamente, pero sin anular su dualidad. De allí que “complectere” se utilice tanto para referirse al combate entre dos guerreros, como al entrelazamiento de dos amantes. La complejidad y sus implica-

ciones son las bases del denominado pensamiento complejo de Edgar Morin.

Complejidad computacional

La teoría de la complejidad computacional es la rama de la teoría de la computación que estudia, de manera teórica, los recursos requeridos durante el cómputo de un algoritmo para resolver un problema. Los recursos comúnmente es-

tudiados son el tiempo (mediante una aproximación al número y tipo de pasos de ejecución de un algoritmo para re-

solver un problema) y el espacio (mediante una aproximación a la cantidad de memoria utilizada para resolver un pro-blema). Se pueden estudiar igualmente otros parámetros, tales como el número de procesadores necesarios para resol-

ver el problema en paralelo. La teoría de la complejidad difiere de la teoría de la computabilidad en que ésta se ocupa

de la factibilidad de expresar problemas como algoritmos efectivos sin tomar en cuenta los recursos necesarios para ello. Los problemas que tienen una solución con orden de complejidad lineal son los problemas que se resuelven en un

tiempo que se relaciona linealmente con su tamaño.

Hoy en día las computadoras resuelven problemas mediante algoritmos que tienen como máximo una complejidad o

coste computacional polinómico, es decir, la relación entre el tamaño del problema y su tiempo de ejecución es po-linómica. Éstos son problemas agrupados en la clase P. Los problemas que no pueden ser resueltos por nuestras com-

putadoras (las cuales son Máquinas Determinísticas), que en general poseen costes factorial o combinatorio pero que

podrían ser procesados por una máquina no-determinista, están agrupados en la clase NP. Estos problemas no tienen una solución práctica, es decir, una máquina determinística (como una computadora actual) no puede resolverlos en un

tiempo razonable.

La notación O

Un problema dado puede verse como un conjunto de preguntas relacionadas, donde cada pregunta se representa por

una cadena de caracteres de tamaño finito. Por ejemplo, el problema factorización entera se describe como: Dado un

entero escrito en notación binaria, retornar todos los factores primos de ese número. Una pregunta sobre un entero es-

pecífico se llama una instancia. por ejemplo, "Encontrar los factores primos del número 15" es una instancia del pro-blema factorización entera.

La complejidad temporal de un problema es el número de pasos que toma resolver una instancia de un problema, a partir del tamaño de la entrada utilizando el algoritmo más eficiente a disposición. Intuitivamente, si se toma una ins-

tancia con entrada de longitud n que puede resolverse en n² pasos, se dice que ese problema tiene una complejidad en

tiempo de n². Por supuesto, el número exacto de pasos depende de la máquina en la que se implementa, del lenguaje utilizado y de otros factores. Para no tener que hablar del costo exacto de un cálculo se utiliza la notación O. Cuando

un problema tiene costo en tiempo O(n²) en una configuración de computador y lenguaje dado, este costo será el mis-

mo en todos los computadores, de manera que esta notación generaliza la noción de coste independientemente del

equipo utilizado.

Page 107: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 107 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Ejemplos

Extraer cualquier elemento de un vector. La indexación en un vector o array lleva el mismo tiempo sea cual fuere el índice que se quiera buscar, por tanto es una operación de complejidad constante O(1).

Buscar en un diccionario tiene complejidad logarítmica. Se puede iniciar la búsqueda de una palabra por la mitad

del diccionario. Inmediatamente se sabe si se ha encontrado la palabra o, en el caso contrario, en cuál de las dos mitades hay que repetir el proceso (es un proceso recursivo) hasta llegar al resultado. En cada (sub)búsqueda el

problema (las páginas en las que la palabra puede estar) se ha reducido a la mitad, lo que se corresponde con la

función logarítmica. Este procedimiento de búsqueda (conocido como búsqueda binaria) en una estructura ordena-

da tiene complejidad logarítmica O(ln n). El proceso más común para ordenar un conjunto de elementos tiene complejidad cuadrática. El procedimiento

consiste en crear una colección vacía de elementos. A ella se añade, en orden, el menor elemento del conjunto ori-

ginal que aún no haya sido elegido, lo que implica hacer un recorrido completo del conjunto original (O(n), siendo n el número de elementos del conjunto). Este recorrido sobre el conjunto original se realiza hasta que todos sus

elementos están en la secuencia de resultado. Se puede ver que hay que hacer n selecciones (se ordena todo el con-

junto) cada una con un coste n de ejecución: el procedimiento es de orden cuadrático O(n²). Hay que aclarar que hay diversos algoritmos de ordenación con mejores resultados.

La Complejidad Ciclomática

La Complejidad Ciclomática (Cyclomatic Complexity) es una métrica del software que proporciona una medición

cuantitativa de la complejidad lógica de un programa. Es una de las métricas de software mas ampliamente aceptada, ya que ha sido concebida para ser independiente del lenguaje.

Esta métrica, propuesta por Thomas McCabe en 1976, se basa en el diagrama de flujo determinado por las estructuras

de control de un determinado código. De dicho análisis se puede obtener una medida cuantitativa de la dificultad de de crear pruebas automáticas del código y también es una medición orientativa de la fiabilidad del mismo.

El nombre “Complejidad Ciclomática” puede resultar engañoso para un programador ya que la idea de esta métrica no

es contar los bucles (for, while, do…) en el código de un programa sinó en el resultado de contar el número de ciclos diferentes que se siguen en un fragmento de código de un programa habiendo creado una rama imaginaria desde el no-

do de salida al nodo de entrada del diagrama de flujo correspondiente a este fragmento de código. Un nombre más

adecuado podría ser Complejidad Condicional ya que el cálculo de esta métrica se ajusta más al hecho de buscar

condiciones que contar ejecuciones de predicados dentro de bucles. El resultado obtenido en el cálculo de la complejidad ciclomática define el número de caminos independientes de-

ntro de un fragmento de código y determina la cota superior del número de pruebas que se deben realizar para asegu-

rar que se ejecuta cada sentencia al menos una vez. La medida resultante puede ser utilizada en el desarrollo, mantenimiento y reingeniería para estimar el riesgo, costo

y estabilidad. Algunos estudios experimentales indican la existencia de distintas relaciones entre la métrica de McCa-

be y el número de errores existentes en el código fuente, así como el tiempo requerido para encontrar y corregir esos errores. Una vez calculada la complejidad ciclomática de un fragmento de código, se puede determinar el riesgo que

supone utilizando los rangos definidos en la siguiente tabla:

Complejidad Ciclomática Evaluación del Riesgo

1-10 Programa Simple, sin mucho riesgo

Page 108: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 108 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

11-20 Más complejo, riesgo moderado

21-50 Complejo, Programa de alto riesgo

50 Programa no testeable, Muy alto riesgo

A partir del análisis de muchos proyectos McCabe encontró que un valor 10 es un límite superior práctico para el ta-

maño de un módulo. Cuando la complejidad supera dicho valor se hace muy difícil probarlo, entenderlo y modificarlo.

La limitación deliberada de la complejidad en todas las fases del desarrollo ayuda a evitar los problemas asociados a

proyectos de alta complejidad. El límite propuesto por McCabe sin embargo es fuente de controversias. Algunas or-

ganizaciones han utilizado el valor 15 con bastante éxito.

Cálculo de la Complejidad Ciclomática

Para poder dar una definición acabada de la complejidad ciclomática, es necesario primero introducir una sencilla no-

tación para la representación del flujo de control, denominada Grafos de Flujo de Control de un programa.

M = Complejidad ciclomática. E = Número de aristas del grafo. Una arista conecta dos vértices si una sentencia puede ser ejecutada inmedia-

tamente después de la primera.

N = Número de nodos del grafo correspondientes a sentencias del programa.

P = Número de componentes conexos correspondientes a las diferentes subrutinas, funciones o métodos. Definidos estos conceptos, la Complejidad Ciclomática puede calcularse de la siguiente manera:

M = E − N + P

Una versión simplificada para el cálculo de la Complejidad Ciclomática es la siguiente: M = Número de condiciones + 1

Ámbito de utilización de la Complejidad Ciclomática

La complejidad ciclomática puede ser aplicada en varias áreas incluyendo: • Análisis de riesgo en desarrollo de código: Mientras el código esta en desarrollo, su complejidad puede ser medida

para estimar el riesgo inherente.

• Análisis de riesgo de cambio durante la fase de mantenimiento: La complejidad del código tiende a incrementarse a

medida que es mantenido durante el tiempo. Midiendo la complejidad antes y después de un cambio propuesto, puede ayudar a decidir cómo minimizar el riesgo del cambio.

• Planificación de Pruebas: El análisis matemático ha demostrado que la complejidad ciclomática indica el número

exacto de casos de prueba necesarios para probar cada punto de decisión en un programa. • Reingeniería: Provee conocimiento de la estructura del código operacional de un sistema. El riesgo involucrado en

la reingeniería de una pieza de código está relacionado con su complejidad.

Ejemplo de cálculo de la complejidad ciclomática

Antes de mostrar exactamente la forma en que el cálculo se puede hacer, vamos a observar algunas cosas en relación

con cualquier programa. Di que está desarrollando un programa para dar el máximo común divisor entre dos números.

Una fórmula simple es el algoritmo de Euclides, que puede describirse como sigue:

Dados dos números naturales a y b, compruebe si b es igual a cero. Si es así, a es el mayor divisor común entre los mismos, de lo contrario, repetir el proceso usando b y el resto de la división de a por b.

Este algoritmo puede ser expresado por el siguiente programa en Ruby (note que no es Ruby idiomático):

require "test/unit" def euclid(m, n)

if n > m

r = m m = n

n = r

end

r = m % n

while r != 0 m = n

n = r

Page 109: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 109 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

r = m % n

end

n end

class EuclidTest < Test::Unit::TestCase SETS = [[5, 10, 5], [2, 6, 2], [11, 7, 1],

[80, 64, 16], [2, 2, 2]]

def test_euclid

SETS.each do |set|

assert_equal set[2], euclid(set[0], set[1])

end end

end

Si el programa de arriba se ejecuta, correrá el caso de prueba justo debajo de la función que verificará si la misma es

correcta. Usted puede agregar un mayor número de casos al conjunto SETS, si lo desea.

La función de Euclides se pueden describir por un simple grafo que conecta los caminos entre las diversas declaracio-nes que contiene. Este grafo se muestra a continuación:

Sobre la base de este grafo, podemos definir la complejidad ciclomática de un programa de la siguiente manera:

CC = A - N + 2C En esta fórmula:

CC es la complejidad ciclomática

A es el número de aristas del grafo N es el número de nodos en el grafo

C es el número de componentes conectados

Debido a que esta es una función simple con un solo punto de entrada y salida, el número de componentes es 1 y la fórmula puede reducirse a:

CC = A - N + 2 Si la función posee múltiples puntos de salida, entonces, la complejidad ciclomática sería definida como:

CC = A - N + C + R En esta fórmula, R es el número de declaraciones de salida (en Ruby, el número de returns).

Volviendo al grafo que se muestra en la figura, vemos que tiene 11 nodos y 12 aristas, que nos da una complejidad ci-

clomática de 12-11 + 2, es decir, 3. Otra forma muy sencilla para descubrir la complejidad ciclomática es contar el número de loops cerrados en el grafo (que son formados por condicionales y loops) y añadir el número de puntos de

salida. En el grafo anterior, tenemos 2 bucles cerrados (los if y while) y un punto de salida, resultando el mismo valor

3 para la complejidad de la función. Una cosa interesante es que la complejidad sigue siendo la misma cuando la sintaxis de un lenguaje se pone en cues-

tión sin cambiar la semántica del programa. Tomemos, por ejemplo, la versión idiomática del algoritmo en Ruby:

def euclid(m, n)

m, n = n, m if n > m

m, n = n, m % n while m % n != 0

n end

El grafo generado en este caso es:

Page 110: Apunte Teorico-Practico 1era Parte

Facultad de Ingeniería de la Universidad Nacional de Jujuy Gorriti 237 - 4600 San Salvador de Jujuy – Argentina Tel: 54-88-221577 Fax: 54-88-221579

Introducción a la Informática http://www.fi.unju.edu.ar/materias/materia/IIII/ SFD pág. - 110 -

INTRODUCCIÓN A LA

INFORMÁTICA

FACULTAD DE INGENIERÍA

UNIVERSIDAD NACIONAL DE

JUJUY

RESUMEN TEÓRICO-PRÁCTICO: PRIMERA PARTE

Note que, aunque el número de nodos y aristas ha cambiado, la relación entre ellos no ha cambiado y la complejidad

sigue siendo las misma.

Pruebas

En general, el valor de complejidad ciclomática establece un límite superior en la cantidad de pruebas necesarias para cubrir todos los caminos decisorios del código en cuestión. Este es un límite superior, ya que no todos los caminos son

necesariamente realizables.

De eso se infiere que cuanto menor es la complejidad, menor es la cantidad de pruebas necesarias para el método en cuestión. Este hecho conduce a otra curiosidad: romper un método en varios reduce la complejidad de los métodos, pe-

ro aumenta la complejidad general del código y, de forma general, mantiene la comprobabilidad del programa comple-

to en el mismo nivel.