Apunte Taller Informatica
Apunte Taller Informatica
Apunte Taller Informatica
Apunte de cátedra
UNaM
Facultad de Ingeniería
UNIVERSIDAD NACIONAL DE MISIONES
FACULTAD DE INGENIERÍA
TALLER DE INFORMÁTICA
Apuntes de Cátedra
INDICE
INDICE ............................................................................................................................................ 3
CONTENIDOS PLANIFICADOS ........................................................................................ 9
CAPITULO 1. Introducción a la Informática .............................................................................. 9
CAPITULO 2. Introducción a la Programación .......................................................................... 9
CAPITULO 3. Algoritmos. .......................................................................................................... 9
CAPITULO 4. Lenguajes de Programación. ............................................................................... 9
CAPITULO 5. Sistemas Operativos. ........................................................................................... 9
CAPITULO 6. Software de Aplicación. ...................................................................................... 9
CAPITULO 7. Conceptos de Redes e Internet. ........................................................................... 9
CAPITULO 1. ................................................................................................................. 10
INTRODUCCION A LA INFORMÁTICA ........................................................................... 10
1.1. OBJETIVOS. .......................................................................................................................... 10
1.2. TIPOS DE CONOCIMIENTOS. ............................................................................................ 10
1.3. SISTEMAS NUMÉRICOS ..................................................................................................... 11
1.4. OPERACIONES LÓGICAS BINARIAS ............................................................................... 13
1.5. EL SISTEMA BINARIO Y LA RELACIÓN CON LA ELECTRÓNICA. ........................... 15
1.6. UNIDADES DE INFORMACIÓN ......................................................................................... 16
1.7. CODIFICACIÓN DE CARACTERES ................................................................................... 16
1.8. MAQUINA DE VON NEUMANN VS. ARQUITECTURA HARWARD ........................... 18
1.9 LENGUAJES DE PROGRAMACIÓN ................................................................................... 19
1.10 LENGUAJES INTERPRETADOS VS LENGUAJES COMPILADOS ............................... 20
1.11. TIPOS DE ERRORES .......................................................................................................... 21
CAPITULO 2. ................................................................................................................. 22
INTRODUCCION A LA PROGRAMACION ....................................................................... 22
2.1. ANÁLISIS Y RESOLUCIÓN DE PROBLEMAS. ................................................................ 22
2.1.1. Análisis del Problema ...................................................................................................... 22
2.1.2. Diseño del Algoritmo ....................................................................................................... 22
2.1.3. Implementación del Algoritmo en la Computadora. ........................................................ 23
2.2. ETAPAS EN LA CREACIÓN DE PROGRAMAS. .............................................................. 25
2.2.1. Análisis del Problema. ..................................................................................................... 25
2.2.2. Diseño. ............................................................................................................................. 25
2.2.3. Implementación del Algoritmo en la Computadora ......................................................... 25
2.2.4. Documentación y Mantenimiento. ................................................................................... 26
2.3. PROGRAMAS: CONCEPTO, CARACTERÍSTICAS. ......................................................... 27
2.3.1. Partes de un programa. ..................................................................................................... 27
2.4. TÉCNICAS DE PROGRAMACIÓN. .................................................................................... 28
2.4.1 Programación no Estructurada. ......................................................................................... 28
2.4.2 Programación Procedimental ............................................................................................ 28
2.4.3 Programación Modular ..................................................................................................... 29
2.5. EJERCICIO PARA ILUSTRAR LA METODOLOGÍA ....................................................... 30
PREGUNTAS DE REPASO .................................................................................................... 31
CAPITULO 3. ................................................................................................................. 32
ALGORITMOS ............................................................................................................... 32
3.1. CONCEPTO. CARACTERÍSTICAS. DISEÑO. ................................................................... 32
3.1.1. Concepto .......................................................................................................................... 32
3.1.2. Características .................................................................................................................. 32
3.1.3. Diseño .............................................................................................................................. 32
3.2. APLICACIÓN DE ESTRATEGIAS DE RESOLUCIÓN DE PROBLEMAS. ..................... 35
3.3. ESTRUCTURAS BÁSICAS: LINEALES, SELECTIVAS Y REPETITIVAS ..................... 37
3.3.1. Estructuras básicas lineales .............................................................................................. 37
3.3.2. Estructuras básicas selectivas........................................................................................... 40
3.3.3. Estructuras de Control Repetitivas ................................................................................... 46
3.4. CONTADORES, INTERRUPTORES Y ACUMULADORES. ............................................ 53
3.4.1. Contador ........................................................................................................................... 53
3.4.2. Acumulador ...................................................................................................................... 53
3.5. ARREGLOS DE DATOS ....................................................................................................... 54
3.5.1. Arreglos Unidimensionales o Vectores............................................................................ 54
3.5.2. Operaciones con Vectores ................................................................................................ 55
3.5.3. Arreglos Bidimensionales o Matrices .............................................................................. 56
3.5.4. Operaciones con Matrices ................................................................................................ 57
Preguntas de Repaso ............................................................................................................. 58
3.6. GUÍA DE EJERCICIOS ......................................................................................................... 59
3.6.1. Ejercicios Algoritmo ........................................................................................................ 59
3.6.2. Ejercicios Expresiones ..................................................................................................... 59
3.6.3. Instrucciones Secuenciales ............................................................................................... 59
3.6.4. Instrucciones de Decisión ................................................................................................ 60
INSTRUCCIONES REPETITIVAS .......................................................................................... 62
3.6.5. Estructura FOR (Controladas por un Contador) .............................................................. 62
3.6.6. Estructuras WHILE y DO WHILE (Controladas por una condición) ............................. 63
ESTRUCTURAS DE DATOS................................................................................................... 64
3.6.7. Vectores ........................................................................................................................... 64
3.6.8. Matrices ............................................................................................................................ 65
3.6.9. Ejercicios Integradores ..................................................................................................... 67
CAPITULO 4. ................................................................................................................. 70
LENGUAJES DE PROGRAMACION ................................................................................. 70
4.1. INTRODUCCIÓN .................................................................................................................. 71
4.1.1. ¿Por qué usar C? .............................................................................................................. 71
4.2. LENGUAJE C......................................................................................................................... 73
4.2.1. Operaciones básicas de programación. ............................................................................ 73
4.2.2. Manejo de Errores. ........................................................................................................... 74
4.3. ESTRUCTURA DE UN PROGRAMA .................................................................................. 76
4.3.1. Directivas del preprocesador ............................................................................................ 76
4.3.2. Declaración de variables globales .................................................................................... 77
4.3.3. Prototipos de funciones .................................................................................................... 77
4.3.4. Declaración de clases ....................................................................................................... 77
4.3.5. Función main() ................................................................................................................. 77
4.3.6. Definición de funciones ................................................................................................... 78
4.3.7. Definición de clases ......................................................................................................... 78
4.4. DATOS, VARIABLES Y CONSTANTES ............................................................................ 79
4.4.1 Datos ................................................................................................................................. 79
4.4.2. Variables .......................................................................................................................... 79
4.4.3 Ejercicios sobre Variables ................................................................................................. 82
4.5. CONSTANTES ....................................................................................................................... 83
4.5.1. Normas para la notación .................................................................................................. 83
4.5.2. Recomendaciones en el uso de la notación. ..................................................................... 86
4.5.3 Constantes carácter. Comentario adicional. ...................................................................... 87
4.5.4. Ejercicios .......................................................................................................................... 89
4.6. OPERADORES ...................................................................................................................... 91
4.6.1. Operadores aritméticos. ................................................................................................... 91
4.6.2. Operadores relacionales ................................................................................................... 93
4.6.3. Operadores lógicos. .......................................................................................................... 93
4.6.4. Operadores de asignación ................................................................................................ 95
4.6.5. Operador "sizeof" ............................................................................................................. 95
4.6.6. Operador condicional (?) ................................................................................................. 95
4.6.7. Operador coma (,) ............................................................................................................ 96
4.7. EXPRESIONES ...................................................................................................................... 97
4.7.1. EXPRESIONES ARITMÉTICAS. ...................................................................................... 97
4.7.2. Expresiones lógicas .......................................................................................................... 98
4.7.3. Ejercicios con operadores y expresiones ....................................................................... 100
4.8. INSTRUCCIONES ............................................................................................................... 102
4.8.1. Bloques........................................................................................................................... 102
4.8.2. Expresiones. ................................................................................................................... 103
4.8.3. Bucles. ............................................................................................................................ 103
4.8.4. Etiquetas. ........................................................................................................................ 105
4.8.5. Sentencias de Selección. ................................................................................................ 106
4.8.6. Sentencias de salto ......................................................................................................... 108
4.8.7. Comentarios. .................................................................................................................. 109
4.8.8. Ejercicios con sentencias. .............................................................................................. 109
4.9. FUNCIONES ........................................................................................................................ 111
4.9.1. Declaración de función. El Prototipo. ............................................................................ 111
4.9.2. Definición de función..................................................................................................... 112
4.9.3. Función main() ............................................................................................................... 113
4.9.4. Ámbito de variables ....................................................................................................... 114
4.9.5. Ejercicios ........................................................................................................................ 115
4.10. ARREGLOS........................................................................................................................ 118
4.10.1. Cadena de caracteres. ................................................................................................... 118
4.10.2. Arreglos ........................................................................................................................ 119
4.10.3. Algoritmos de ordenación: método de la burbuja ........................................................ 121
4.10.4. Ejercicios: cadenas de caracteres. ................................................................................ 121
4.10.5. Ejercicios: arreglos ....................................................................................................... 122
4.11. GUÍA DE EJERCICIOS ..................................................................................................... 125
4.11.1. Guía Practica 1 de C++. Instrucciones secuenciales .................................................... 125
4.11.2. Guía Práctica 2 de C++. Estructuras de Decisión ........................................................ 127
4.11.3. Guía Práctica N° 3 de C++. Estructuras Repetitivas.................................................... 133
4.11.4. Guía Práctica Nº 4 de C++. Arreglos ........................................................................... 137
4.11.5. GUÍA PRÁCTICA Nº 5 DE C++. Funciones .............................................................. 151
4.11.6. GUÍA PRÁCTICA Nº 6 DE C++ ................................................................................ 155
Ejercicios Combinados usando Vectores, Matrices y Funciones ............................................ 155
Ejemplos: ................................................................................................................................. 158
4.11.7. Ejercicios Integradores ................................................................................................. 163
CAPITULO 5. ............................................................................................................... 172
SISTEMAS OPERATIVOS ............................................................................................. 172
5.1. DEFINICIONES ................................................................................................................... 172
5.1.1. Software de sistemas ...................................................................................................... 172
5.1.2. Sistema Operativo .......................................................................................................... 172
5.1.3. Traducción de lenguajes................................................................................................. 174
5.1.4. Programas de Utilería..................................................................................................... 174
5.1.5. Sistemas Operativos para Microcomputadoras .............................................................. 174
5.1.6. Historia de los Sistemas Operativos............................................................................... 174
5.1.7. Tipos de Interfaz con el usuario ..................................................................................... 175
5.1.8. Sistemas operativos actuales .......................................................................................... 175
5.2. SISTEMA OPERATIVO LINUX ........................................................................................ 177
5.3. GUIA INTRODUCTORIA DE COMANDOS DE SHELL ................................................. 178
5.3.1. Iniciando una Sesión ...................................................................................................... 178
5.3.2. Super Shell ..................................................................................................................... 178
5.3.3. ¿Qué es el Shell? ............................................................................................................ 179
5.3.4. ¿Qué es el prompt? ......................................................................................................... 180
5.3.5. Como funciona el Shell:................................................................................................. 181
5.3.6. Caractéres Especiales o Metacaractéres del Shell.......................................................... 182
5.3.7. ¿Qué es el Sistema de Ficheros? .................................................................................... 182
5.3.8. Comandos....................................................................................................................... 185
5.4. TRUCOS SHELL ................................................................................................................. 191
5.5. Los conceptos de usuarios y permisos .................................................................................. 193
5.5.1. Fijando permisos ............................................................................................................ 194
5.5.2. Bit de Stick ..................................................................................................................... 195
5.5.3. SUID - [Identificación de conjunto de usuario] ............................................................. 196
5.6. TAREAS Y PROCESOS ...................................................................................................... 197
5.6.1. Primer plano y Segundo plano ....................................................................................... 197
5.6.2. Envío a segundo plano y eliminación procesos ............................................................. 198
5.6.3. Sobre los ciclos infinitos ................................................................................................ 199
5.7. USANDO EL EDITOR VI ................................................................................................... 201
5.7.1. Conceptos ....................................................................................................................... 201
5.8. EJERCICIOS DE SISTEMA OPERATIVO ........................................................................ 206
5.8.1. Preguntas sobre Linux .................................................................................................... 206
5.8.2. Ejercicios de comandos básicos shell linux ................................................................... 207
CAPITULO 6. ............................................................................................................... 209
Software de aplicaciones ............................................................................................ 209
6.1. Procesador de Textos Writer ................................................................................................. 213
6.1.1. Configuraciones de OpenOffices ................................................................................... 213
Tamaño y Formato del Papel...................................................................................................... 213
Encabezados y Pie de Página ...................................................................................................... 213
Insertar Numeración de Página ............................................................................................ 214
Nota al Pie ................................................................................................................................... 214
Configuraciones de Párrafos .......................................................................................... 214
Personalizar ................................................................................................................. 214
Uso de las Teclas Rápidas ........................................................................................................... 214
Barras de Herramientas ............................................................................................................. 215
Opciones ...................................................................................................................... 215
Generalidades .............................................................................................................. 216
Como Usar los Encabezados ........................................................................................... 216
Editar “Estilos y Formatos” ............................................................................................ 217
Consejos ...................................................................................................................... 217
Para Encabezados ....................................................................................................................... 217
Para Cuerpo de Textos ................................................................................................................ 217
Numeración en los Encabezados ..................................................................................... 217
Guardar una Plantilla .................................................................................................... 218
Cargar una Plantilla ...................................................................................................... 218
Usar una Plantilla como Predeterminada ........................................................................ 218
Configurar las Imágenes ................................................................................................ 219
Titulo de Imagen ......................................................................................................................... 220
Insertar Formula .......................................................................................................... 221
Editar formulas ........................................................................................................................... 221
Insertar Hojas de cálculo ............................................................................................... 221
Editar las Hojas ........................................................................................................................... 222
Insertar Dibujos ........................................................................................................... 222
Movimiento y selecciones .............................................................................................. 222
Combinaciones de Teclas ............................................................................................... 223
Crear Índices ................................................................................................................ 223
Editar el contenido del índice ..................................................................................................... 223
Editar el estilo del índice ............................................................................................................. 223
Actualizar .................................................................................................................................... 223
Sobre la numeración de las figuras y las gráficas .............................................................. 224
Uso de Referencias ........................................................................................................ 224
Insertar salto de Página ................................................................................................. 224
Barra de estado ............................................................................................................ 224
Guardar como PDF ........................................................................................................ 224
6.2. Hoja de Cálculo Calc ............................................................................................................ 226
Capitulo 7 ................................................................................................................... 233
conceptos de redes e internet .................................................................................... 233
7.1. DEFINICIONES ................................................................................................................... 233
7.1.1. Telecomunicaciones ....................................................................................................... 233
7.1.2. Protocolos....................................................................................................................... 234
7.1.3. Tipos de Señales............................................................................................................. 234
7.1.4. Canales de comunicación ............................................................................................... 234
7.1.5. Características de los Canales de Comunicación ........................................................... 235
7.1.6. Funciones del software de telecomunicaciones ............................................................. 236
7.2. REDES DE COMUNICACIONES ...................................................................................... 236
7.2.1. Clasificación................................................................................................................... 236
7.2.2. Topologías de las redes .................................................................................................. 236
7.2.3. Ámbito Geográfico ........................................................................................................ 239
7.2.4. Implementación de una red ............................................................................................ 240
7.3. Conectividad ......................................................................................................................... 241
7.3.1. Definición de Conectividad ........................................................................................... 242
7.3.2. Normas para la Conectividad ......................................................................................... 243
Funciones de cada capa ............................................................................................................ 246
Nombres de los datos en cada capa .......................................................................................... 247
Las capas del modelo de referencia TCP / IP .......................................................................... 247
Gráfico de protocolo TCP/IP ................................................................................................... 249
Comparación modelos: OSI - TCP/IP ......................................................................................... 249
Similitudes ............................................................................................................................... 249
Diferencias ............................................................................................................................... 249
BIBLIOGRAFIA ........................................................................................................... 251
ANEXOS ...................................................................................................................... 253
ANEXO 1. .................................................................................................................................... 253
ESTANDARES PARA DIAGRAMAS DE FLUJO – PSEUDOCÓDIGO ................................ 253
ANEXO 2. OPERADORES ........................................................................................................ 254
2.1. OPERADORES MATEMÁTICOS .................................................................................. 254
2.2. OPERADORES DE RELACIÓN ó COMPARACIÓN ................................................... 254
2.3. OPERADORES LÓGICOS – TABLAS DE VERDAD................................................... 254
2.4. OPERADORES – ORDEN DE PRECEDENCIA ............................................................ 255
2.5. ASOCIATIVIDAD DE OPERADORES.......................................................................... 256
ANEXO 3.- TIPOS DE DATOS EN C++ ................................................................................... 257
3.1. Conversión de tipos de datos ............................................................................................ 257
3.2. Conversión explícita de tipo: ............................................................................................ 258
ANEXO 4.- SISTEMAS NUMÉRICOS ..................................................................................... 260
¿Que es un sistema Numérico? ................................................................................................ 260
ANEXO 5.- CÓDIGOS ASCII .................................................................................................... 263
Símbolos y nombre ASCII usados corrientemente .................................................................. 264
ANEXO 6.- PALABRAS RESERVADAS EN C ....................................................................... 268
ANEXO 7.- ESTILOS DE NOTACIÓN ..................................................................................... 270
7.1. Comentarios ...................................................................................................................... 270
7.2. Nombres de variables ........................................................................................................ 270
5.3. Notación tipo Húngara ...................................................................................................... 270
ANEXO 8. SUMARIO DE ÓRDENES BÁSICAS LINUX ....................................................... 272
ANEXO 9. ENTORNO ANJUTA ............................................................................................... 274
9.1. Introducción ...................................................................................................................... 274
9.2. Barra de menú ................................................................................................................... 275
9.3. Barra de herramientas ....................................................................................................... 275
9.4. Ventana principal .............................................................................................................. 276
9.5. Teclas Rápidas .................................................................................................................. 277
9.6. Compilar y construir una aplicación ................................................................................. 277
9.7. Ejecutar un programa ........................................................................................................ 278
9.8. Preferencias ....................................................................................................................... 278
CONTENIDOS PLANIFICADOS
CAPITULO 3. Algoritmos.
- Algoritmos: Concepto, Características. Diseño. Aplicación de Estrategias de resolución de
problemas.
- Diagrama de flujo: Introducción. Símbolos. Prueba de Escritorio. Estructuras básicas: lineales,
selectivas y repetitivas. Estructuras anidadas. Contadores, Interruptores y Acumuladores.
- Introducción a las estructuras de datos. Vectores. Operaciones válidas sobre vectores: recorrido,
asignación, actualización, desplazamiento, ordenamiento. Matrices: Formas de recorrido,
almacenamiento.
CAPITULO 1.
INTRODUCCION A LA INFORMÁTICA
1.1. OBJETIVOS.
Los Objetivos del Curso son aprender a programar en un lenguaje, el lenguaje elegído para esta materia
se llama C++ (C más más), en el curso buscaremos que mientras aprendemos a programar tengamos en
mente los siguientes puntos:
- Aprender a Formular Problemas y proponer soluciones.
- No recordar, no memorizar.
- Trabajar en equipo, en forma colaborativa.
- Tratar de divertirse.
- No hay libros de Texto, solo los apuntes de la materia en el sitio Web.
Entonces una de las metas es enseñar a plantear problemas y proponer soluciones de una manera
estructurada en un lenguaje (Flujo o C++) que permita que cualquier persona pueda interpretarlo.
Todos nosotros en forma cotidiana resolvemos problemas muy complejos 1, lo único que sucede es que
no tenemos la práctica de plantearlos, ni describimos la solución o el camino que usamos para solucionarlo.
Ejemplos:
1. Si y es la raiz cuadrada de x, si x al cuadrado es y"
2. Calculo de raiz cuadrada de x:
a) tomo un numero de valor y.
b) Si y*y está cerca de x entonces y es una buena aproximación de la raiz de x.
c) Si no creo una nueva varible y’ promediando y , y’=(y+x/y)/2, usando la nueva y’ nueva vuelvo
al paso b.
- 10 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Definición de g (guest):
Algoritmo
Es una descripción de como realizar un cómputo, el algoritmo SIEMRPE CONVERGE, TIENE PRINCIPIO Y
FIN, por lo tanto lo que tenemos es un conjunto de instruciones, pasos que pueden ser ejecutados y control
de flujo (flow control) y una condicion de cuando terminar.
El hombre desde sus orígenes utilizó simbolos para representar cantidades, esto era indispensable para
poder comparar, vender, comprar, etc.
Por supuesto no se creó un único sistema a nivel mundial, estos fueron apareciendo en distintos lugares
y no necesariamente eran los mismos.
Un sistema de numeración es un conjunto de símbolos y reglas de generación que permiten construir
todos los números válidos.
- 11 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Una primera clasificación tiene que ver con la posición de estos símbolos, en el sistema que conocemos
o aprendemos en primer instancia; el decimal, la posición del símbolo tiene distinta interpretación, por
ejemplo si escribimos: “12”, sabemos que no es lo mismo que “1” y “2” ya que en el primer caso el “1” del
12 tiene una ponderación o peso distinto, justamente la ubicación nos indica que está en la posición de las
decenas y el “2” está en la posición de las unidades. Pero no todos los sistemas son como los que
conocemos. Por ejemplo el sistema de numeración romano.
En el Sistema Romano la “V” equivale a 5 del Sistema Decimal y la “I” al uno del sistema decimal, pero si
escribimos “IV” en el sistema Romano esto equvale al 4 y no al “15” como podríamos esperar.
El elemento simbolo (0 ó 1) del Sistema Numérico Binario es conocidos como: bit, que es un
acrónimo de Binary digit (o dígito binario).
El uso de Números binarios es un área de la matemática aplicada al campo de la electrónica, es la base
de los Sistemas Digitales y ello implica también, la base de la Estructura de Computadores u Ordenadores.
- 12 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
En general para cualquier número entero de cualquier sistema numérico se puede de plantear la
siguiente expresión:
Esta expresion permite convertir de un sistema numérico a otro, válido para números enteros de
sistemas numéricos posicionales.
Tambíen existen otras maneras de convertir, por ejemplo dividiendo. Veamos el caso particular de
convertir un Número en Sistema Decimal al Sistema Binario.
7710 = ?
Si formamos un número binario con en resultado del paso 7 y restos de las divisiones por 2 anteriores
tendremos:
10011012=7710
Ahora que sabemos de la existencia de diversos sistemas numéricos, veamos algo sobre operaciones
lógicas usando el sistema binario.
Para cada uno de estos sistemas numéricos existen las operaciones matemáticas que se corresponden
con las conocidas en el sistema decimal, solo que la forma en las que se realizan o calculan, difieren de las
operaciones decimales.
Vamos a concentrarlos en las operaciones lógicas que serán de mucha utilidad en nuestro curso.
- 13 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
En 1854, el matemático británico George Boole detalló un sistema de lógica, este sistema desempeñaría
un papel fundamental en el desarrollo del sistema binario actual, particularmente en el desarrollo de
circuitos electrónicos.
Este sistema se denomino Algebra de Boole1.
Resumiendo entonces el Algebra de Boole estableció operaciones lógicas en el Sistema Numérico Binario.
Veamos cuales son.
Por ejemplo:
• Hoy es Sábado “Y” es 14 de Enero: La respuesta SI solo se dará cuando sea Sabado y
sea un día 14 de Enero. Si algunas de estas aternativas no resultan SIMULTANEAMENTE
verdaderas o ciertas, la respuesta sería No.
• La persona es alta y de cabello Negro: La respuesta SI solo se dará cuando sea una
persona Alta y sea de cabello Negro. Si algunas de estas aternativas no resultan
SIMULTANEAMENTE verdaderas o ciertas, la respuesta sería No.
Podemos ver claramente que solo tendremos una salida lógica “1” solo cuando las dos entradas sean “1”
SIMULTANEAMENTE.
Notar que implicitamente estamos asociando el “1” a Verdadero (true en Ingles)
• Hoy es Sábado “O” es 14 de Enero?: La respuesta SI se dará cuando sea Sabado “O” cuando sea 14 de
Enero. Con que algunas de estas aternativas sean ciertas o verdaderas la respuesta sería SI o Verdadero.
1
http://es.wikipedia.org/wiki/%C3%81lgebra_de_Boole
- 14 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
• La persona es alta “O” de cabello Negro: La respuesta SI se dará cuando sea una persona Alta “O” sea
de cabello Negro. Con que algunas de estas aternativas sean ciertas o verdaderas la respuesta sería SI o
Verdadero.
Entrada Salida
1 0
0 1
Esta ultima es muy sencilla y como digimos solo cambia el valor, si era “1” o Verdadero o True, lo
convierte en “0” o Falso o False y si la entrada es “0” (cero) ó False lo convierte en “1” o Verdadero o True.
En este punto, deberíamos tener en claro los distintos sistemas numéricos en particular el Binario y sus
operaciones lógicas, ahora vamos a tratar dejustificar el por que se usa el sistema numérico binario en
Informática, mas precisamente en la computadoras.
1. Los sistema electrónicos pueden simular de una manera efectiva y fácil, diríamos que casi natural,
los “0” ceros y “1” unos, con niveles de tensión, por ejemplo 0 V sería equivalente a un “0” binario o
un Falso y 5V sería equivalente a “1” binario o Verdadero o True.
2. Existen circuitos electónicos que implementan la operaciones “AND”, “OR”, “NOT”, del Algebra de
Boole.
2
. La electrónica digital es una parte de la electrónica que se encarga de sistemas electrónicos en los cuales la
información está codificada en dos únicos estados. A dichos estados se les puede llamar "verdadero" o "falso", o más
comúnmente 1 y 0, refiriéndose a que en un circuito electrónico digital hay dos niveles de tensión. y el Algebra de
Boole, y el por que se debe a las siguientes razones.
3
Un circuito integrado (CI), también conocido como chip o microchip, es una pastilla pequeña de material
semiconductor, de algunos milímetros cuadrados de área, sobre la que se fabrican circuitos electrónicos.
- 15 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Estos Circuitos Integrados (CI), contienen internamente Miles o Millones de “AND” o “OR” Y “NOT”,
agrupando varios de estos elementos CI, se consigue armar un equipo electrónico digital que opere como
una Comutadora u Ordenador.
Finalmente conseguimos establecer una relación entre la Electrónica Digital, el Sistema Binario y el
Algebra de Boole, los cuales son la base de una Computadora.
Hasta ahora vimos que desde la Electrónica Digital, se pueden tener dos niveles de tensión que se los
podía interpretar como estados lógicos o bits.
Como vimos en la sección 1.3, se necesitan agrupar los “bits” para codificar por ejemplo números en el
sistema binario o letras ¿por qué no?
Desde el comienzo se utilizaron grupos de 8 bits en la Electrónica Digital y en particular en los sistemas
de Computos o Micro computos, esta agrupación se usa ampliamente y se conoce con el nombre de “byte”
(se pronuncia “bait”).
Un error común es confundir bytes y bits, por ejemlpo “KB” (KiloBytes) con “Kb” (Kilobits), una "B"
mayúscula significa Bytes, mientras que una "b" minúscula significa bits.
La velocidades de transmisión se suelen extresar en Kb, por ejemplo un modem puede tener una
velocidad de 54kbps (se pronuncia Kilo bits por Segundo o “cabepese”), en cambio los medios de
almacenamientos usan como medida de la capacidad de almacenamiento de pen drives, discos, memorias
por ejemplo lo bytes, Megabyte, Kilobytes.
Los prefijos utilizados para los múltiplos del byte 4 normalmente son los mismos que los prefijos del
Sistema Internacional (K para representar Mil, M para representar Millón, etc), así que también se utilizan los
prefijos binarios.
Esto se debe a que los prefijos del Sistema Internacional se basan en el Sistema decimal (base 10), y los
prefijos binarios se basan en Sistema binario, base 2.
Por ejemplo:
- En el Sistema decimal un Kilómetro equivale a 1000 metros.
- En el Sistema binario un Kilobyte (se pronucia kbait o kilobait) equivale a 1024 bytes.
4
http://es.wikipedia.org/wiki/Kilobyte
- 16 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Esta agrupación de bits conocidas como bytes se utilizó no solamente para tener un sistema numérico, si
no también para codificar o representar simbolos utilizados en la escritura (letras, numeros, etc.).
Existen dos asociaciones o codificaciones de bits para representar las letras, números, símbolos (EDCBIC
y ASCII), la que usaremos es la ASCII. Veamos las codificaciones o representaciones binarias de los simbolos
mas usados.
Vemos en la tabla que para simplificar se escribe el equivalente decimal a continuación de cada nro.
binario.
Observación:
• Es importante en este punto entender que una cosa es la representación numérica de
un valor, por ejemplo el 1 que en binario sería: 0000 0001, muy diferente de la
representación del Símbolo 1 que está en el teclado, el cual en ASCII sería: 0011 0001.
• Podemos observar que los la representación de los números es correlativa. 0->48, 1-
>49, 2->50 … etc.
• Podemos ver que existe una diferencia de 32 entre “a” y “A”, entre “b” y “B”....etc.
- 17 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Como vimos, con la electrónica se pueden resolver operaciones, entre ellas las matemáticas. La
calculadora es precisamente un ejemplo de una máquina electrónica que resuelve operaciones, por ejemplo,
la siguiente es una máquina de sumar binaria que suma el bit de la entrada A con el de la entrada B:
Vemos que usando las compuertas vistas, esto sumaría y produciría el acarreo de una suma.
El problema de este circuito, es que solo se podrán resolver las operaciones que fueron implementadas,
suma en este caso. Esto es un diseño NO flexible y rapidamente los profesionales se dieron cuenta que sería
adecuado poder almacenar los programas u operaciones en otro lugar, de manera que al cambiar esto se
pudiera cambiar completamente las operaciones que se quieran realizar.
Esto se conoció como "arquitectura de programa almacenado" o arquitectura basada en la Máquina de
von Neumann. Así pues, la primera división entre "hardware" y "software".
En la segunda guera mundial, el Sr. Alan Turing en 1941, hizo una Computadora de Programa fijo que
decodificaba un código secreto alemán, pero pese a ser una máquina muy importante desde el punto de
vista histórico, solo hacía eso.
La invención de Stored Program Computer hizo realmente importante para la sociedad la computadora,
la idea de almacenar las instrucciones y datos (Memoria), por otro lado está la ALU que es donde se realizan
las operaciones, conocida como unidad aritmética lógica y la Unidad de Control que es la que interpreta las
instrucciones, mueve los datos de la ALU a la memoria y de la memoria a la ALU , realiza las operaciones en
la ALU.
Como dijimos esta es la primera vez que aparecen los términos Hardware y Software.
• Hardware: Sería la parte física, lo que se puede tocar, la electrónica, los componentes,
etc.
Una analogía podría ser un CD de música, el disco compacto sería el Hardware, y la música el software.
- 18 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
En la memoria se graban datos e instrucciones, este pequeño set de instrucciones permiten hacer de
todo combinandolas, pensemos en una analogía con un Chef, combinando el orden de los ingredientes
puede lograr distintos gustos o comidas incluso.
Alan Turing estableció que problemas se podían resolver en forma computacional y que se necesitaban
solo algunas instrucciones primarias y con ellas se podía hacer lo que uno quería, como ser:
- Escribir.
- Leer.
- Sumar.
- Mover a la derecha.
- Mover a la izquierda.
- etc.....
A partir de esto podemos decir que hay un “PEQUEÑO SET DE INSTRUCCIONES” o LENGUAJE que me
permite resolver problemas, esto es simplemente genial, ya que cambiando el orden o secuencia del set de
instrucciones podemos cambiar TOTALMENTE.
Una analogía sería al abecedario, la combinación de 30 letras permite lograr infinitas combinaciones que
permiten escribir todo, incluso, describir cosas iguales de maneras distintas.
Tenemos que aclarar que este pequeño set de instrucciones que mencionamos en la sección anterior, no
es el que se usa en la programación en terminos generales.
Con el avance surgieron lenguajes de alto nivel, que en realidad una instrucción de este lenguaje de alto
nivel, se corresponde con un conjunto de sentencias, de varias sentencias de bajo nivel, esto facilita la
programación, veamos un ejemplo a modo ilustrativo.
Con esto veríamos por ejemplo que en un lenguaje de alto nivel algo tan sencillo como un incremento en
uno de una variable, se corresponde con 3 instrucciones de bajo nivel!!
Con el correr del tiempo surgieron varios lenguajes de programación, tenemos que aclarar que no sería
correcto decir: HAY UN LENGUAJE DE PROGRAMACIÓN MEJOR QUE OTRO, lo que si sería correcto decir, es
que algunos están orientados para algún fin en particular, los que los hacer mejor en esa área.
Resumiento, un Lenguaje de programacion provee un set de instrucciones que en realidad son una
combianción del set primitivo de instrucciones.
Lo que hace diferente un programa de otro es la manera en que se combinan esas instrucciones, lo
bueno y lo malo de esto es que la computadora con el programa siempre hará exactamente lo que uds. le
digan que haga!!.
En otras palabras .. si el programa no funciona... la culpa es del que hizo el programa.
Observación: Es mejor que un amigo incondiconal o una esposa enamorada! , siempre hace lo que le
decimos :-).
- 19 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Un lenguaje interpretado es un lenguaje de programación que está diseñado para ser ejecutado por
medio de un intérprete. Un intérprete o interpretador es un programa informático capaz de analizar y
ejecutar el programa. Tal es el caso de Java, Perl, Python, Ruby, ASP, Bash por ejemplo. Entonces uno
escribe un programa, otro lo recorre, realizando lo que indican las instrucciones. Estos programas se suelen
llamar Scripts.
Los lenguajes compilados son lenguajes de alto nivel en los que las instrucciones se traducen del
lenguaje que solo entiende el procesador, se crea OTRO PROGRAMA, este se llama código de máquina y
este es el que se ejecuta. Este es el caso de C o C++.
Normalmente los lenguajes compilados corren más rápido que los intepretados, pero los programas
interpretados tienen más facilidad de depuración y su gran dinamismo, lo que aumenta su rendimiento.
- 20 -
TALLER DE INFORMÁTICA CAPITULO 1. Introducción a la Informática
Existe una comparación de los lenguajes basados en la cantidad de palabras o set de instrucciones
básicas, en particular tenemos que decir que el C tiene 32 palabras y el C++ un total de 64 palabras. Estas
palabras son conocidas como Reservadas.
En general, los lenguajes se componen de estructuras que se deben respetar, respetando el significado
de sus elementos y expresiones, el no cumplimiento de estas reglas puede ocacionar errores del tipo:
• Errores sintácticos
• Errores semánticos
– Ejemplo de Error Semántico (del griego semantikos, "lo que tiene significado") Los errores
semánticos son más sutiles. Un error semántico se produce cuando la sintaxis del código es correcta,
pero la semántica o significado no es el que se pretendía. La construcción obedece las reglas del
lenguaje, y por ello el compilador o intérprete no detectan los errores semánticos. Los compiladores e
intérpretes sólo se ocupan de la estructura del código que se escribe, y no de su significado. Un error
semántico puede hacer que el programa termine de forma anormal, con o sin un mensaje de error.
Hablando en términos coloquiales, puede hacer que el equipo se quede "colgado".Sin embargo, no todos
los errores semánticos se manifiestan de una forma tan obvia
Normalmente los errores del tipo Sintáctico suelen detectarse de una manera muy facil, ya que es un
error que no respeta la sintaxis del lenguaje de programación y esto se puede detectar facilmente.
Lo que suele ser mas dificil de establecer es los errores del tipo semántico.
• Errores de Ejecución
Un error de ejecución se produce cuando el ordenador no puede ejecutar alguna instrucción de forma
correcta.
– Ejemplo: 'a' / 2.5, no se puede dividir una letra por 2.5.
• Errores de Lógica
Se denominan lógicos, los errores que no hacen bloquear un programa, pero la lógica que representan
contiene un error, pueden ser derivados de un error de Semántica. Por ejemplo. Si quiero calcular el
promedio de tres valores: 5+9+2/3 no es lo mismo que (5+9+2)/3
Cuando los programas no hacen lo que Uds. quieren, probablemente tengan que mirar de nuevo lo que
hicieron y corregir este procedimiento es conocido como Debugin o Depuracion.
Que alternativas tenemos cuando un programa no hace lo que queremos:
1) Crash.Termina repentinamente tirando un cartel u error o no.
2) Never stop.nunca termina, puede ser dificil de detectar, se dice que tiene un loop infinito.
3) Run Completion & producir mal la respuesta.
- 21 -
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
CAPITULO 2.
INTRODUCCION A LA PROGRAMACION
22
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
Para un diseño eficiente del algoritmo es importante abordar la solución mediante una metodología de
diseño.
Los métodos utilizados para el proceso del diseño se basan en el conocido “divide y vencerás” es decir,
la resolución de un problema complejo se realiza dividendo el problema en subproblemas y a continuación
dividiendo estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solución en la
computadora.
Este método se conoce técnicamente como diseño descendente (top-down) o modular.
Cada programa bien diseñado consta de un programa principal (el módulo de nivel mas alto) que llama a
subprogramas (módulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas.
El diseño del algoritmo es independiente del lenguaje de programación en el que se vaya a codificar
posteriormente.
Definición de Algoritmo
El término deriva de la traducción al latín de la palabra árabe “Alkhowarismi”, nombre de un matemático
y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y
finitos.
No todos ellos pueden ser ejecutados por la computadora. Consideramos aquellos algoritmos que
expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden ser introducidas en la
computadora, a este tipo de algoritmos se denominan Algoritmos Computacionales.
En la resolución de un problema con la computadora la parte pensante está en el algoritmo; así pues la
eficacia de un programador no esta en conocer la herramienta de programación, cosa necesaria, sino en
saber resolver problemas con la computadora para lo cual se requiere conocer un concepto conocido como
metodología de la programación cuyo eje central es el algoritmo.
Los algoritmos son independientes del lenguaje de programación y de la máquina en la que se ejecuta.
Esta etapa es relativamente mecánica y consiste en codificar el algoritmo siguiendo las reglas sintácticas
y semánticas de un determinado lenguaje de programación.
Al resultado de la codificación se denomina código fuente o programa fuente.
Luego de ello, el programa fuente debe ser ejecutado y probado para verificar si los resultados
obtenidos son los esperados.
La verificación del programa se efectúa con una amplia variedad de datos de entrada, llamados datos de
test o datos de prueba, que determinarán si el programa tiene errores ("bugs").
Los datos de prueba comprenden: valores normales de entrada, valores extremos de entrada que
comprueben los límites del programa y valores de entrada que comprueben aspectos especiales del
programa.
Si los resultados obtenidos no son los esperados se procede a depurar el programa. La depuración
consiste en encontrar los errores del programa para efectuar las correcciones pertinentes.
23
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
Programa Fuente
Compilador (traductor)
Programa Objeto
Montador (link)
Programa Ejecutable
24
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
Retomando los conceptos introducidos en el punto 2.1., los principales pasos o metodología que se debe
seguir para resolver problemas aplicando técnicas de programación son:
En resumen, determinar: las operaciones o procesos que se van a realizar (qué hacer) y sus respectivas
entradas (con qué) y salidas (para qué).
Entrada: son los argumentos (variables o constantes) que se requieren para resolver un problema.
Salida: son los resultados (argumentos) que se desean obtener una vez resuelto el problema.
Proceso: es el procedimiento(s) u operación(es) que deben efectuarse sobre las entradas para obtener
las salidas deseadas.
Puede ser de gran utilidad elaborar una tabla de especificación de argumentos requeridos en la solución
del problema que contemple los siguientes aspectos:
2.2.2. Diseño.
Consiste en diseñar cómo hace el programa la tarea solicitada. En forma general consiste en dividir el
programa en subprogramas y cada subprograma en módulos.
Ir de lo más general a lo más específico.
El criterio de descomposición más utilizado es el de tipo funcional, el cual produce una estructura
jerárquica en la que cada módulo ejecuta una o más funciones.
25
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
b) Compilación y Ejecución.
Es el proceso de traducción del programa fuente al lenguaje de máquina. Este proceso se realiza con el
compilador y el Sistema Operativo. El resultado, si no hay errores, es la obtención del programa objeto que
todavía no es ejecutable directamente. Luego, mediante el Sistema Operativo se realiza la carga del
programa objeto con las librerías del programa compilador, el resultado es un programa ejecutable. Cuando
el programa ejecutable se ha creado, se puede ejecutar el programa desde el Sistema Operativo
generalmente con sólo teclear su nombre. Si no hay errores se obtiene como salida los resultados del
programa.
c) Verificación y Depuración.
Es el proceso de probar que el programa trabaje correctamente y cumpla con los requerimientos del
usuario.
Verificar: es el proceso de ejecución del programa con una amplia variedad de datos de entrada (test o
pruebas) que determinarán si el programa tiene errores.
Depurar: es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
Tipos de Errores:
a) Errores de compilación: suelen ser errores de sintaxis.
b) Errores de ejecución: suelen ser instrucciones que la computadora comprende pero que no puede
ejecutar. Ejemplo: divisiones por cero, raíces negativas, etc.
c) Errores de lógica: se producen en la lógica del programa, en el diseño del algoritmo. Se detectan
porque los resultados son incorrectos.
26
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
Una vez que la solución de un problema ha sido expresada mediante un algoritmo el paso siguiente es
convertirlo a programa para lo cual se elige un lenguaje de programación.
Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales:
Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo
externo, almacenándolos en la memoria central para que puedan ser procesados.
Proceso: está formado por las instrucciones que modifican los objetos a partir de su estado
inicial hasta el estado final, dejando éstos disponibles en la memoria central.
Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria
central y los envían a los dispositivos externos.
27
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
Programa
principal
datos
Ésta técnica de programación ofrece desventajas una vez que el programa se hace suficientemente
grande. Por ejemplo, si la misma secuencia de instrucciones se necesita en diferentes situaciones dentro del
programa, la secuencia debe ser repetida.
Esto ha conducido a la idea de extraer estas secuencias, darles un nombre y ofrecer una técnica para
llamarlas y regresar desde estos procedimientos.
Programa
principal
Procedimiento
Al introducir parámetros así como procedimientos de procedimientos (sub procedimientos) los programas
ahora pueden ser escritos en forma más estructurada y libres de errores.
Por ejemplo, si un procedimiento ya es correcto, cada vez que es usado produce resultados correctos.
Por consecuencia, en caso de errores, se puede reducir la búsqueda a aquellos lugares que todavía no han
sido revisados.
28
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
De este modo, un programa puede ser visto como una secuencia de llamadas a procedimientos. El
programa principal es responsable de pasar los datos a las llamadas individuales, los datos son procesados
por los procedimientos y, una vez que el programa ha terminado, los datos resultantes son presentados.
Así, el flujo de datos puede ser ilustrado como una gráfica jerárquica, un árbol, como se muestra en la
siguiente figura para un programa sin sub procedimientos.
Programación Procedimental => El programa principal coordina las llamadas a procedimientos y pasa los
datos apropiados en forma de parámetros.
Programa
principal
datos
Procedimiento 2 Procedimiento 3
Para resumir: tenemos ahora un programa único que se divide en pequeñas piezas llamadas
procedimientos o funciones. Para posibilitar el uso de procedimientos generales o grupos de procedimientos
también en otros programas, aquéllos deben estar disponibles en forma separada. Por esa razón, la
programación modular permite el agrupamiento de procedimientos dentro de módulos.
Programa
principal
datos
módulo 1 módulo 2
Cada módulo puede contener sus propios datos. Esto permite que cada módulo maneje un estado
interno que es modificado por las llamadas a procedimientos de ese módulo. Sin embargo, solamente hay un
estado por módulo y cada módulo existe sólo una vez en todo el programa.
29
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
El programa debe producir la siguiente salida: Resistencia Combinada en Ohmios es: XXX
2. Análisis
a) Especificación funcional: suponiendo que llamo RC a la Resistencia Combinada, del análisis deduzco
que requiero de R1, R2 y R3 (entradas) para poder realizar el cálculo (proceso) de la RC (salida).
3. Diseño
Especificación del Programa:
Nombre del Programa: resistencia
Función: Calcular la Resistencia Combinada de 3 resistencias conectadas en paralelo-
Argumentos: R1, R2, R3, RC
Argumentos de Entrada: R1, R2, R3
Argumentos de Salida: RC
Lenguaje de Programación: C++
Algoritmo: puede utilizarse pseudocódigo o diagrama de flujo.
INICIO
R1, R2, R3
RC
FIN
30
TALLER DE INFORMÁTICA CAPITULO 2. Introducción a la Programación
4. Codificación en C++
#include <iostream>
using namespace std;
int main()
{
float R1,R2,R3,RC;
cout << “Ingrese los valores de las 3 resistencias”;
cin >> R1;
cin >> R2;
cin >> R3;
RC = 1 / (1/R1+1/R2+1/R3);
cout << “La resistencia combinada en ohmnios es” << RC;
return 0;
}
5. Edición
Tipear el programa anterior (programa fuente) en el computador.
8. Documentación
9. Mantenimiento
PREGUNTAS DE REPASO
1. ¿Cuáles son las etapas para la solución de problemas con la computadora?
2. ¿Qué es un algoritmo? ¿Qué características tiene que tener?
3. ¿Cuáles son los pasos para poner un programa en funcionamiento?
4. ¿Qué es un programa? ¿Cuáles son las partes de un programa?
5. Nombre las características de las técnicas de programación.
6. Aplicar la metodología propuesta en el punto para resolver el siguiente problema: “¿Cuántas
horas tardará en llenarse un estanque de 270.480 litros si 4 bombas vierten 23 litros por minuto
cada una?”
31
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
CAPITULO 3.
ALGORITMOS
3.1.1. Concepto
El término deriva de la traducción al latín de la palabra árabe “Alkhowarismi”, nombre de un matemático
y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.
Un algoritmo es un método para resolver un problema mediante una serie de pasos precisos, definidos y
finitos.
No todos ellos pueden ser ejecutados por la computadora. Consideramos aquellos algoritmos que
expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden ser introducidas en la
computadora, a este tipo de algoritmos se denominan Algoritmos Computacionales.
En la resolución de un problema con la computadora la parte pensante está en el algoritmo; así pues la
eficacia de un programador no esta en conocer la herramienta de programación, cosa necesaria, sino en
saber resolver problemas con la computadora para lo cual se requiere conocer un concepto conocido como
metodología de la programación cuyo eje central es el algoritmo.
Los algoritmos son independientes del lenguaje de programación y de la máquina en la que se ejecuta.
3.1.2. Características
3.1.3. Diseño
a) Pseudocódigo
Se trata de un lenguaje informal que describe el proceso.
32
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
El pseudocódigo es una herramienta algorítmica que permite escribir pseudoprogramas (una imitación de
un programa real) utilizando un lenguaje de pseudoprogramación que es una imitación de los lenguajes de
programación de alto nivel. Debe ser: claro, inequívoco e informal.
Pseudocódigo es una combinación de símbolos (+, -, *, /, %, >, >=, <, <=, !=,
==, y, o, no), términos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras,
Mientras...Hacer, Para...Mientras, etc) y otras características comúnmente
utilizadas en uno o más lenguajes de alto nivel.
No existen reglas que determinen que es o no es un pseudocódigo, sino que varía de un programador a
otro.
El objetivo del pseudocódigo es permitir al programador centrarse en los aspectos lógicos de la solución
evitando las reglas de sintaxis de un lenguaje de programación. Posteriormente el pseudocódigo debe ser
traducido a programa usando un lenguaje de programación.
Por Ejemplo:
Diseñe un algoritmo que permita hallar la suma y el promedio de tres nº
En castellano: En inglés:
INICIO BEGIN
LEER numero1, numero2, numero3 READ numero1, numero2, numero3
suma = numero1 + numero2 + numero3 suma = numero1 + numero2 + numero3
promedio = suma / 3 promedio = suma / 3
IMPRIMIR suma, promedio WRITE suma, promedio
FIN END
Los elementos más utilizados en un diagrama de flujo representan: Proceso, Decisión, Conectores, Fin,
Entrada/Salida, Dirección del Flujo.
En resumen:
En un diagrama de flujo siempre encontramos:
Una caja de “Inicio”
Otra caja de “Fin”
Otras cajas en forma de rombo, paralelogramos, rectangulares.
Cada símbolo representa el tipo de operación a ejecutar y el diagrama representa la secuencia en que se
deben ejecutar dichas operaciones. Más adelante veremos en detalle la simbología utilizada en los
diagramas de flujo.
33
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Por Ejemplo:
Inicio
N1 0
N2 0
N3 0
N1 0
Leer N1,
N2, N3
N1 0
Imprimir PROM
Fin
34
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Es imposible enseñar a resolver problemas (es casi como enseñar a ser inteligente). Para resolver
problemas no existen fórmulas mágicas; no hay un conjunto de procedimientos o métodos que aplicándolos
lleven necesariamente a la resolución del problema, aún en el caso de que tenga solución. Pero de ahí no
hay que sacar en consecuencia una apreciación ampliamente difundida en la sociedad: la única manera de
resolver un problema sea por "ideas luminosas", que se tienen o no se tienen.
Es evidente que hay personas que tienen más capacidad para resolver problemas que otras de su misma
edad y formación parecida, que suelen ser las que aplican (generalmente de una manera inconsciente) toda
una serie de métodos y mecanismos que suelen resultar especialmente indicados para abordar los
problemas.
Es ya clásica, y bien conocida, la formulación que hizo Polya (1945) de las cuatro etapas esenciales
para la resolución de un problema, que constituyen el punto de arranque de todos los estudios
posteriores:
Se trata de entender cuál es el problema que tenemos que abordar, dados los diferentes lenguajes que
hablan el usuario que solicita y el informático.
Para ello se debe:
- Leer el enunciado despacio.
- Responder a las preguntas ¿Cuáles son los datos? (lo que conocemos) y ¿Cuáles son las incógnitas? (lo
que buscamos)
- Hay que tratar de encontrar la relación entre los datos y las incógnitas.
- Si se puede, se debe hacer un esquema o dibujo de la situación.
Hay que plantear el plan para resolver el problema de una manera flexible y recursiva, alejada del
mecanicismo.
- ¿Este problema es parecido a otros que ya conocemos?
- ¿Se puede plantear el problema de otra forma?
- Imaginar un problema parecido pero más sencillo.
- Suponer que el problema ya está resuelto; ¿cómo se relaciona la situación de llegada con la de partida?
- ¿Se utilizan todos los datos cuando se hace el plan?
También hay que plantearla de una manera flexible y recursiva, alejada del mecanicismo. Y tener en
cuenta que el pensamiento no es lineal, que hay saltos continuos entre el diseño del plan y su puesta en
práctica.
- Al ejecutar el plan se debe comprobar cada uno de los pasos.
- ¿Se puede ver claramente que cada paso es correcto?
- Antes de hacer algo se debe pensar: ¿qué se consigue con esto?
35
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
- Se debe acompañar cada operación matemática de una explicación contando lo que se hace y para qué
se hace.
- Cuando se tropieza con alguna dificultad que nos deja bloqueados, se debe volver al principio,
reordenar las ideas y probar de nuevo.
Es la etapa más importante en la vida diaria, porque supone la confrontación con el contexto del
resultado obtenido por el modelo del problema que hemos realizado, y su contraste con la realidad que
queríamos resolver.
- Leer de nuevo el enunciado y comprobar que lo que se pedía es lo que se ha averiguado.
- Debemos fijarnos en la solución. ¿Parece lógicamente posible?
- ¿Se puede comprobar la solución?
- ¿Hay algún otro modo de resolver el problema?
- ¿Se puede hallar alguna otra solución?
- Se debe acompañar la solución de una explicación que indique claramente lo que se ha hallado.
- Se debe utilizar el resultado obtenido y el proceso seguido para formular y plantear nuevos problemas.
a) Análisis:
1. Trazar un diagrama.
2. Examinar casos particulares.
3. Probar a simplificar el problema.
b) Exploración:
1. Examinar problemas esencialmente equivalentes.
2. Examinar problemas ligeramente modificados.
3. Examinar problemas ampliamente modificados.
36
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Cada proceso está compuesto de subprocesos y estos últimos a su vez, se componen de otros
subprocesos más elementales. Es así como los programas están formados por un conjunto de funciones,
estas por subfunciones y así sucesivamente hasta llegar a las operaciones elementales del procesador u
operaciones de máquina.
Las instrucciones de entrada son operaciones que dan acceso al programador a las funciones básicas de
los dispositivos de E, permitiéndole capturar datos de los dispositivos de entrada y asignarlos a variables
para operar con ellos.
Los datos se pueden almacenar en memoria de tres formas diferentes:
* asociados con constantes
* asignados a una variable con una sentencia de asignación
* asignados a una variable con una sentencia de lectura.
37
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Con esta instrucción el programa se detiene y el sistema pide un valor haciendo aparecer una ventana
con un “Mensaje”, el usuario deberá introducir el valor que se le pide.
A medida que se realizan cálculos en el programa, se necesitan visualizar los resultados. Esto se conoce
como operación de escritura o salida.
En la instrucción de salida se pueden incluir además mensajes de texto y variables.
Por Ejemplo:
El clásico "Hola Mundo": imprimirá en pantalla la frase 'Hola Mundo'.
INICIO
INICIO
IMPRIMIR(“HOLA MUNDO”)
“HOLA MUNDO” FIN
FIN
Por Ejemplo:
Operaciones de Entrada / Salida: El algoritmo permite sumar dos números ingresados por el usuario
38
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Num2
FIN
La operación de asignación es la forma de darle valores a una variable. Se la conoce también como
sentencia o instrucción de asignación cuando hablamos de un lenguaje de programación.
Nombre_de_variable expresión
Nombre_de_variable expresión
Se demuestra en pseudocódigo con el símbolo (Una flecha apuntando hacia el identificador, donde se
desea guardar el valor).
En la parte izquierda de la asignación se pone el nombre de la variable que se quiere modificar.
39
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
La parte derecha contiene una expresión que le dará el nuevo valor a la variable, y por lo tanto debe
tener el mismo tipo que la variable.
Por Ejemplo:
A 16,8
Esto significa que a la variable A se le ha asignado el valor 16,8. La operación es destructiva, ya que el
valor que tuviera la variable antes de la asignación se pierde y se reemplaza por el nuevo valor.
Inicial 'La’ se asigna La a la variable Inicial
Interruptor true se asigna el valor true (verdadero) a Interruptor
Num ( 100 * 3 ) / 2 se realiza el cálculo que aparece a la a la izquierda del operador de
asignación y luego se asigna el resultado a la variable Num.
Información adicional
Es posible utilizar el mismo nombre de variable en ambos lados de la expresión.
Por Ejemplo:
A A * 0,21
En este ejemplo, el valor de la variable A se multiplica por 0,21 y a continuación el resultado se asigna a
la misma variable A.
Reglas de Asignación
1) Una variable en el lado derecho de una sentencia de asignación debe tener un valor antes de que la
sentencia de asignación se ejecute. Hasta que un programa le da un valor a una variable, esa variable no
tiene valor. Por ejemplo: Si x no tiene un valor antes de ejecutar y <- x+1, se producirá un error lógico.
2) En la izquierda de una sentencia de asignación solo pueden existir variables, no una expresión.
Por ejemplo: NO es valido lo siguiente: Valor_Neto - Tasas 34015
3) La asignación tiene efecto destructivo en el sentido que destruye el valor previo de la variable que
recibe la asignación.
Cuidado:
En las instrucciones de asignación NO se pueden asignar valores a una variable de tipo diferente del
suyo; esto señalará un error.
40
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Acción simple
IF( condición )
acción A
Acción compuesta
IF( condición ){
acción A1
acción A2
…
acción An
}
Por Ejemplo:
Se desea cambiar el signo de un número únicamente en caso que sea negativo.
IF( numero < 0 )
numero = -1 * numero
La estructura de selección doble IF (SI) – ELSE (SINO) evalúa una condición lógica y:
Si la condición es verdadera, ejecuta la acción A.
Si la condición es falsa, ejecuta la acción B.
41
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Tanto la acción A como la acción B pueden ser acciones simples (una sóla acción) o acciones
compuestas (un conjunto de acciones).
La estructura de selección if/else permite que el programador especifique la ejecución de una acción
distinta cuando la condición es falsa.
La estructura de Selección Doble (if / else) es una estructura que permite
bifurcar el flujo de ejecución según el argumento del if. Esta sentencia ejecuta el
código correspondiente al if si se cumple la condición de su argumento, de no
ser así ejecuta el código correspondiente al else. El else es opcional.
Por Ejemplo:
Se desea saber si una persona es mayor o menor de edad.
IF( edad >= 18 ) Esto imprime "Mayor de edad" si la persona tiene 18 años ó
IMPRIMIR "Mayor de edad" más e imprime "Menor de edad" si la persona tiene menos
ELSE de 18 años. En cualquiera de los casos, después de
efectuar la impresión, se ejecutará la primera instrucción
IMPRIMIR "Menor de edad"
que sigue a la estructura IF...ELSE.
Acciones simples
IF( condición )
acción A
ELSE
Acción B
Acciones compuestas
IF( condición ){
acción A1
...
acción An
}
ELSE{
Acción B1
…
acción Bn }
42
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
La tercera y cuarta línea son opcionales, ya que puede haber un momento en el que al mirar una
condición nos interese solo una de las posibles respuestas.
Se dice que varias estructuras de selección doble están en cascada cuando la instrucción que sigue a un
ELSE es otro IF a excepción del último ELSE. No hay límite en cuanto al número de estructuras de
selección doble que pueden ponerse en cascada.
Funcionamiento
Las condiciones se evalúan en orden descendente pasando de una a otra si la anterior resulta falsa. En
el momento que se encuentra una condición verdadera, se efectúa la acción correspondiente a dicha
condición y se corta el resto de la estructura. Si todas las condiciones resultan falsas se efectúa la acción
correspondiente al último SINO
IF( condición C1 )
acción A1
ELSE
IF( condición C2 )
acción A2
ELSE
IF( condición C3 )
acción A3
…
ELSE
Acción An
IF( condición C1 )
acción A1
ELSE IF( condición C2 )
Acción A2
ELSE IF( condición C3 )
Acción A3
…
ELSE
Acción An
43
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Por Ejemplo:
Diseñe un algoritmo que determine si un número es negativo, positivo o cero.
INICIO
Algoritmo (Formato 1)
n
INICIO
REAL n “Ingrese nº: “
LEER n
IF ( n > 0 ) n
IMPRIMIR "Positivo"
ELSE
n>0 “Positivo “
IF ( n < 0 )
IMPRIMIR "Negativo"
ELSE
n<0 “Negativo“
IMPRIMIR "Cero"
END
“Cero“
FIN
Algoritmo (Formato 2)
INICIO
REAL n
LEER n
IF ( n > 0 )
IMPRIMIR "Positivo"
ELSE IF ( n < 0 )
IMPRIMIR "Negativo"
ELSE
IMPRIMIR "Cero"
END
Se dice que una estructura IF (o IF-ELSE) esta anidada cuando esta contenida dentro de otra estructura
IF o dentro de otra estructura IF-ELSE. No existe límite en cuanto al nivel de anidamiento.
Por ejemplo, una estructura IF con tres niveles de anidamiento tendría el siguiente formato:
IF( condición C1 ){
acción A1
IF( condición C2 ){
acción A2
IF( condición C3 )
acción A3
}
}
44
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
IF( condición C1 )
acción A1
IF( condición C1 and condición C2 )
acción A2
IF( condición C1 and condición C2 and condición C3 )
acción A3
Cuidado!!
Es muy importante que se utilice un buen sangrado en cada sentencia selectiva, para que sea más
legible el código, y además que se comente el código, para que no te pierdas si llevas escritas varias líneas,
y también por si alguna otra persona, desea actualizar tu código.
La estructura de selección múltiple CASE permite elegir una ruta de entre varias rutas posibles, usando
para ello una variable denominada selector.
El selector se compara con una lista de constantes enteras o de carácter C1, C2, ..., Cn para cada una de
las cuales hay una acción A1, A2, ..., An y:
Si el selector coincide con una constante de la lista, se ejecuta la acción correspondiente a dicha
constante.
Si el selector no coincide con ninguna constante de la lista, se ejecuta la acción Df
correspondiente al ELSE, si es que existe.
Las acciones A1, A2, A3, ..., An pueden ser acciones simples( una sola acción) o acciones compuestas
(un conjunto de acciones).
CASE ( selector ){
C1 : acción A1
C2 : acción A2
…
Cn : acción An
ELSE: acción Df
}
45
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Esta estructura es muy útil en el momento en el que debemos tomar diferentes decisiones de una misma
condición.
Funcionamiento:
Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesita
normalmente contar los sucesos, acciones o tareas internas del ciclo.
Se debe establecer un mecanismo para terminar las tareas repetitivas. Dicho mecanismo es un control
que se evalúa cada vez que se realiza un ciclo. La condición que sirve de control puede ser verificada antes
o después de ejecutarse el conjunto de instrucciones o sentencias. En caso de que la verificación o
evaluación resulte verdadera se repite el ciclo o caso de ser falsa lo terminará.
Son aquellas estructuras que permiten que una o varias sentencias se ejecuten repetidamente.
Las Estructuras Repetitivas o Iterativas son aquellas en las que las acciones se
ejecutan un número determinado de veces y dependen de un valor predefinido o
el cumplimiento de una determinada acción.
a) Bucle
El cuerpo del bucle lo constituyen la serie de sentencias que pueden ser de
cualquier tipo (secuencial, de decisión o repetitivo) las cuales serán repetidas n
veces, pudiendo ser n conocido o desconocido. Cuando n es desconocido, el
número de veces que debe repetirse el cuerpo del bucle estará condicionado por
una expresión lógica.
46
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Cuidado
A la hora de utilizar un bucle, sea del tipo que sea, debemos ir con cuidado y pensar cuando debe
acabar ya que si no tuviéramos en cuenta esto podríamos entrar en un bucle sin fin, o sea que iríamos
repitiendo las mismas líneas teniendo que abortar la aplicación, para poderla finalizar.
Por esto es de suma importancia que pensemos, antes de hacer nada, en qué momento, cómo, dónde y
por qué debe acabar el bucle.
Mediante esta estructura el cuerpo del bucle se repite mientras se cumpla una determinada condición
(en otras palabras, mientras el resultado de la evaluación de la expresión lógica sea verdadero).
La condición se evalúa siempre al principio de cada iteración. Esto implica que, si el resultado de su
evaluación es falso desde el comienzo de la estructura, el bucle no se ejecuta nunca.
La Estructura Repetitiva While, es aquélla en que el cuerpo del bucle se repite
mientras se cumple una determinada condición.
47
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
La representación sería:
While (condición)
{
Acción S1
Acción S2
…
acción Sn
Por Ejemplo:
Contar los números enteros positivos introducidos por teclado. Se consideran dos variables enteras
NUMERO y CONTADOR (contará el número de enteros positivos). Se supone que se leen números positivos
y se detiene el bucle cuando se lee un número negativo o cero.
INICIO
INICIO
Contador = 0 Cont=0
LEER (numero)
WHILE (numero > 0) “Ingrese nº: “
{
contador = contador + 1 num
LEER (numero)
}
IMPRIMIR ('El número de enteros positivos es: ', contador) num
END
num
>0 Cont=Cont+1
Cont
FIN
48
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Esta estructura se ejecuta mientras se cumpla una condición determinada que se comprueba al final del
bucle. Se ejecuta al menos una vez.
Pseudocódigo en inglés
DO
{
<acciones>
V
…
}
F
WHILE <condición>
La estructura de bucle Do ... While tiene un pequeño matiz que la hace diferente a la estructura While.
Tanto una como la otra se utilizan frecuentemente, pero cada una de ellas va bien según el caso, estas
estructuras pueden hacer su uso muy diferente. La condición se evalúa después de realizar las instrucciones
y no antes como pasaba en el caso del While.
Cuidado!!!
En la estructura Do…While primero ejecutaría las instrucciones y después miraría si se cumple o no la
condición, con lo que tenemos que tener mucho cuidado ya que las instrucciones como mínimo se
ejecutarán una vez (las veces restantes ya dependerán de la condición).
Por Ejemplo:
Preguntar una letra y cantidad de repeticiones. Repetir en pantalla tantas veces como se indique.
INICIO
CHAR letra INICIO
INT x, n
x=1
x=1
IMPRIMIR (‘Ingrese la letra: ‘) “Ingrese letra y cantidad“
LEER (letra)
IMPRIMIR (‘Cuántas veces quieres repetirlo?: ‘) letra, n
LEER (n)
DO
{ x, “-“, letra
IMPRIMIR (x , ’- ‘, letra)
x=x+1
x=x+1
}
WHILE (x < n)
FIN num > 0
FIN
49
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
La Estructura For ejecuta las acciones del cuerpo del bucle un número específico
de veces y de modo automático controla el número de iteraciones o pasos a
través del cuerpo del bucle.
50
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Cuando Vi es menor que Vf el valor de V se incrementa de uno en uno desde el valor de Vi hasta el valor
de Vf. Por cada valor que V toma, el cuerpo del bucle se ejecuta una vez.
Para representar la estructura FOR se puede utilizar el símbolo indicado o plantear el algoritmo con una
estructura tipo WHILE, donde siempre aparece el inicio de la variable contador, la condición de fin y el
incremento del contador.
Gráficamente sería:
Sentencia/s
V=V+1
V ‹ Vf
FIN
Pseudocódigo
Cuando Vi es mayor que Vf el valor de V se decrementa de uno en uno desde el valor de Vi hasta el
valor de Vf. Por cada valor que V toma, el cuerpo del bucle se ejecuta una vez.
Información adicional:
V debe ser de tipo ordinal (entero, carácter, lógico u otro tipo ordinal) o subrango.
V, Vi, Vf deben ser todas del mismo tipo, pero el tipo real no está permitido.
Vi, Vf pueden ser expresiones o constantes.
No se debe modificar el valor de V, Vi, Vf dentro del cuerpo del bucle.
51
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Son denominados todos aquellos bucles que estén contenidas dentro de otro bucle. Cuando se anidan
bucles, se debe tener cuidado que el bucle interior esté contenido completamente dentro del bucle exterior.
Todos los tipos de bucles pueden anidarse, sea entre sí o entre cada uno de éstos (while, repeat o for).
Si los bucles se cruzan no serán válidos. Es decir, es incorrecto si los bucles anidados se construyen de la
siguiente forma:
INCORRECTO
NO puede ser el primer
bucle en cerrarse.
52
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
La computadora sigue una serie de instrucciones, pero esas instrucciones tienen que operar sobre una
serie de datos.
La computadora típica sólo procesa una instrucción a la vez, por lo que necesita 'espacios de memoria'
donde guardar o depositar, a modo de cajones, los diversos datos con los que trabaja. Aquí es donde entran
en juego las variables y constantes.
Hay ciertas variables que realizan operaciones especiales de asignación: el contador y el acumulador
3.4.1. Contador
Un contador es una variable que se incrementa en una unidad o en una cantidad
constante.
Por Ejemplo:
Contador 25 x 50
Contador Contador + 1 xx+5
Al ejecutar las sentencias de asignación, los nuevos valores de Contador y N son
25+1=26 y 50+5 =55.
3.4.2. Acumulador
Por Ejemplo:
Suma Suma + x
Donde x es una variable; si x = 7 y Suma = 40, el nuevo valor de Suma será 47
53
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Un arreglo de datos es una colección de datos organizados de un modo particular. Tienen un único
nombre de variable, que representa todos los elementos, los cuales se diferencian por un índice o subíndice.
Por Ejemplo:
Notas de los estudiantes.
NOTAS nombre del arreglo
NOTAS[0] nombre del primer elemento del arreglo NOTAS
NOTAS[n-1] nombre del elemento n del arreglo NOTAS 0, 1, 2, 3, ... n-1 índices o subíndices del
arreglo (pueden ser enteros, no negativos, variables o expresiones enteras)
Cuidado!!!
En un arreglo de n elementos, éstos ocuparan desde la casilla 0 hasta la n-1.
Por Ejemplo:
Si tuviera un arreglo A de N = 10 elementos,
Notación matemática:
A1, A2, A3, …. , AN
A1, A2, A3, …. , A10
Notación computacional:
A[0], A[1], A[2], … , A[N-1]
A[0], A[1], A[2], … , A[9]
Clasificación de los arreglos
Los arreglos se clasifican en:
UNIDIMENSIONALES (vectores o listas) y
MULTIDIMENSIONALES (Ejemplo, los bidimensionales son las tablas o matrices).
54
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Los vectores listan un número finito N de elementos homogéneos. Se hace referencia a los elementos
por un conjunto de índices constituidos por números consecutivos. Se almacenan en memoria en celdas
consecutivas.
Donde:
N es la longitud del arreglo.
Homogéneos: todos los elementos son del mismo tipo.
Información adicional:
Dado un vector denominado Z de 6 elementos, cada uno de sus elementos se designará por ese mismo
nombre diferenciándose únicamente por su correspondiente subíndice.
Z 5 7 4 9 3 1
Z0 Z1 Z2 ... Z5
Por Ejemplo:
cod = CHAR [10] ;
nom = CHAR [ 60];
Información adicional:
Las declaraciones de índices (tipo_índice) NO pueden contener variables.
3.5.2.1. Lectura
Tienen que utilizarse estructuras de repetición para leer todos los elementos del vector. Es la carga de
los datos en los elementos del vector.
55
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Por Ejemplo:
Notas = INT [30]
FOR (I = 0 ; I < 30 ; I = I + 1)
LEER ( Notas [I] );
3.5.2.2. Escritura
Es la muestra o impresión de los datos de cada elemento del vector.
Por Ejemplo:
Notas = INT [30]
FOR (I = 0 ; I < 30 ; I = I + 1)
IMPRIMIR (NOTAS[I] );
3.5.2.4. Búsqueda
Es la operación que permite encontrar la posición de un elemento con determinado valor o un elemento
con determinado valor de índice.
Por Ejemplo:
INT x
Notas = INT [30]
IMPRIMIR (‘Ingrese el valor a buscar:’)
LEER (x)
FOR (I = 0 ; I < 30 ; I = I + 1)
{
IF (NOTAS[I]==x)
IMPRIMIR (‘Encontró: ‘, NOTAS[I], ‘ en la posición’ , I);
}
3.5.2.5. Orden
Es la operación que organiza los elementos de la lista según se indique. Existen varios métodos para
ordenar los elementos de un arreglo que se verán más adelante.
3.5.2.6. Intercalación
Es la operación que combina los elementos de más de una lista según se indique.
Son arreglos con dos índices, los cuales deben ser ordinales o de tipo subrango.
Columnas
0 1 2 3 4 5
F 0 X[0,0] X[0,1] X[0,2]
i 1
l 2
a
3 X[3,0] X[3,5]
s
56
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Al igual que para los arreglos unidimensionales, el nombre del arreglo define el nombre de sus
elementos sólo que éstos se identifican por sus respectivos subíndices.
Por Ejemplo:
Así si el arreglo mostrado en la figura anterior se denomina X, cada uno de sus elementos se
denominarán, por ejemplo:
Por Ejemplo:
parciales = float [37,4];
Información adicional:
Reserva 148 posiciones de memoria (datos reales): 37 filas y 4 columnas.
Así parciales[i,j] se refiere al elemento del arreglo parciales referenciado mediante la fila i y la
columna j.
3.5.4.1. Lectura
Tienen que utilizarse estructuras de repetición para leer los elementos del arreglo. Si en el vector la
lectura era por orden secuencial, en las matrices se puede realizar la lectura por filas o por columnas.
Por Ejemplo:
A = int[4,3];
FOR (i = 0 ; i < 4 ; i = i + 1)
FOR (j = 0 ; j < 3 ; j = j + 1)
LEER ( A[i,j]);
Los valores deben ser introducidos por filas o por columnas. En este ejemplo, se introducen por filas.
57
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
30
12
30 12 46 46
A= 84 10 3 84
6 8 11 10
3
6
8
11
3.5.4.2. Escritura
FOR (j = 0 ; j < 3 ; j = j + 1)
FOR (i = 0 ; i < 4 ; i = i + 1)
IMPRIMIR (x[i,j]);
Los valores deben ser mostrados por filas o por columnas. En este ejemplo, se introducen por columnas.
Preguntas de Repaso
1. ¿Qué es un diagrama de flujo?
2. ¿Cuáles son los símbolos que utilizan los diagramas de flujo para representar las distintas
operaciones?
3. ¿Cuáles son las estructuras lineales? Explique cada una utilizando un ejemplo.
4. ¿Cuáles son las estructuras selectivas? Explique cada una utilizando un ejemplo.
5. ¿Cuáles son las estructuras repetitivas? Explique cada una utilizando un ejemplo.
6. ¿Qué diferencias hay entre un contador y un acumulador?
7. ¿Qué es un arreglo?
8. ¿Cómo se identifica el primero y el último elemento de un arreglo de N elementos?
58
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
C B A 25 4 * (A* B) / 2
C B ^ A (A / B) - 20 / B
C A - B / 2 A* 5
C A* B * 5 (B - A) ^ 3
59
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
11. En una competencia atlética de velocidad el tiempo se mide en minutos, segundos y centésimas
de segundo y el espacio recorrido se mide en metros. Diseñe un algoritmo para determinar la
velocidad promedio de un atleta en km/h Considere que: 1 hora = 60 minutos, 1 minuto = 60
segundos, 1 segundo = 100 centésimas de segundo, 1 kilómetro = 1000 metros.
12. El sueldo neto de un vendedor se calcula como la suma de un sueldo básico de $ 250 más el
12% del monto total vendido. Diseñe un algoritmo que determine el sueldo neto de un vendedor
conociendo el monto de las tres ventas que hizo en el mes.
13. Diseñe un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024 bytes, 1
megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
14. Hacer un algoritmo que calcule la cantidad de horas, minutos y segundos entre dos eventos, de
los cuales se ingresarán la hora (expresada en horas, minutos y segundos) y la fecha (expresada
en día, mes y año) en que ocurrieron.
15. Una bomba de agua puede extraer 800 litros de agua por hora. Realizar un algoritmo que
calcule el tiempo necesario para extraer todo el líquido de un tanque del que se saben sus
medidas: altura y radio (éstas se ingresarán por teclado).
16. Determinar la velocidad de un automóvil que se desplaza a una velocidad constante si se conoce
la distancia recorrida y el tiempo utilizado. Mostrar la velocidad encontrada. Ambos datos se
ingresan por teclado
17. Un pintor sabe que con una pintura determinada puede pintar 3,6 metros cuadrados con cada
medio litro. Sabiendo la altura y el largo de la pared a pintar, realizar un algoritmo que informe
cuantos litros de pintura necesitará para la pared en cuestión. Los datos de la pared se
ingresarán en metros.
18. Teniendo como dato la hipotenusa y el ángulo que forma la misma con la base de un triángulo
rectángulo calcular y mostrar los lados y ángulos restantes.
19. Un motor de un 50rpm y tiene una Rueda conectada que tiene una relación de 1a 2 (una vuelta
del motor dos vueltas de la rueda). Realizar un algoritmo que calcule la distancia recorrida por la
goma en una hora teniendo en cuenta de que el radio de la rueda es de 32 centímetros
20. Dados los catetos de un triángulo rectángulo, calcular e imprimir su hipotenusa. Fórmula de
21. Una maratón tiene 26 millas y 385 yardas. Realizar un algoritmo que permita convertir la
distancia de la maratón a kilómetros, sabiendo que 1 milla tiene 1760 yardas.
60
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
11. Diseñe un algoritmo que permita ingresar dos valores X e Y, luego determine qué porcentaje es
X de Y.
12. El promedio de prácticas de un curso se calcula en base a cuatro notas de las cuales se elimina
la nota menor y se promedian las tres notas más altas. Diseñe un algoritmo que determine la
nota eliminada y el promedio de un estudiante.
13. Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo. Si es un
triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados
iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales).
Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma
de los otros dos lados".
14. Ingresar un número C y determinar si pertenece al intervalo [A, B] con A y B ingresados por
teclado.
15. Una compañía dedicada al alquiler de automóviles cobra $30 hasta un máximo de 300 km de
distancia recorrida.
16. Para más de 300 km y hasta 1000 km, cobra $30 más un monto adicional de $ 0.15 por cada
kilómetro en exceso sobre 300. Para más de 1000 km cobra $30 más un monto adicional de $
0.10 por cada kilómetro en exceso sobre 1000. Los precios ya incluyen el 18% del impuesto
general a las ventas, IGV.
Diseñe un algoritmo que, ingresando la distancia recorrida, determine el monto a pagar por el
alquiler de un vehículo y el monto incluido del impuesto.
Basándose en el año de fabricación y el peso del automóvil en una fábrica se determina la tarifa
de registro según la siguiente tabla:
El programa debe ingresar el año y el peso del auto e imprimir la categoría y la tarifa.
17. El cuadrante en el cual se ubica una línea dibujada desde el origen está determinado por el
ángulo que la línea forma con el eje positivo de x en la siguiente forma:
El programa debe ingresar el ángulo de la línea como dato de entrada y desplegar el cuadrante
apropiado, según la tabla dada. Si el ángulo es exactamente 0, 90, 180 o 270 grados, la línea
resultante no se ubica en ningún cuadrante sino en cada uno de los ejes respectivos.
61
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
INSTRUCCIONES REPETITIVAS
62
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
1. Realizar un algoritmo que permita calcular la suma de los números ingresados mientras que el
valor acumulado no supere el valor 100. Mostrar el valor acumulado antes de superar 100.
2. Ingresar juegos de cuatro valores cada uno. Calcular y emitir el promedio de cada juego. El
proceso finaliza al encontrarse un juego cuyo primer valor es 0 (cero).
3. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizar emitir
el valor mínimo de la lista.
4. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizar emitir
el valor máximo de la lista.
5. Leer una lista de números que finaliza cuando se ingresar el número 0 (cero), al finalizar emitir
el valor máximo de la lista, y la ubicación del máximo dentro de la lista. (Suponer un único
máximo).
6. Escribir un programa que permite ingresar dos valores A y B que determinan un intervalo, luego
ir acumulando los valores que se ingresan a continuación siempre y cuando estos pertenezcan al
intervalo. El ingreso de números finaliza cuando ingresa el 99.
7. Diseñar el algoritmo para resolver una ecuación de segundo grado Ax 2 + Bx + C = y. El
algoritmo deberá ingresar A, B y C e ir ingresando x. El programa finaliza cuando ingresa x = 99.
8. Se tienen los siguientes datos sobre nacimientos en una ciudad: sexo (“F” ó “M”) y fecha de
nacimiento (DD y MM). Se pide realizar un algoritmo que informe cuántos son varones y cuántas
son mujeres, cuántos nacimientos hubo en el primer semestre y cuántos en el segundo. El final
de lectura de datos viene dado por una lectura del sexo en blanco.
9. Realizar un algoritmo que determine si una serie de números ingresada por teclado es
ascendente. El final de la serie viene dado por un número negativo. (Ej: 1, 5, 5, 10, 11, 12, 12,
20, -1 es una serie ascendente).
10. Diseñar un Diagrama de Flujo de Datos (DFD) que permita el ingreso de datos de tipo carácter
hasta que se ingrese un espacio en blanco; al final informar si algún dato fue numérico (un
dígito de ‘0’ a ‘9’) y si se ingresaron datos numéricos, cuántos fueron.
11. Diseñar un DFD que permita el ingreso de N números; al final informar la sumatoria de los
números. N se ingresa al principio por teclado.
12. Diseñar un DFD que permita el ingreso de números e informe si se ingresaron o no números
negativos. El ingreso de números finaliza cuando ingresa el 99.
13. Diseñar un DFD que permita calcular el promedio de N notas introducidas por teclado, siendo N
un valor introducido por el usuario. Además ha de indicar si ha habido algún 10, el número de
reprobados y de aprobados.
14. Diseñar un DFD que permita el ingreso de números, muestre el valor acumulado, el promedio y
si ingresó el 0 (cero). El final del ingreso se da cuando ingresa el número 100 o la suma de los
ingresados supere el valor 100.
15. Diseñar un DFD que permita mostrar en pantalla una rutina de selección del siguiente menú: 1.-
Suma 2.- Resta 3.- Producto 4.- División S.- Salir. El usuario podrá elegir cualquier alternativa,
63
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
luego ingresar A y B y realizar la operación seleccionada. Solamente con “S” podrá Salir. Tener
en cuenta que si elige 4.- División deberá reingresar el denominador hasta que ingrese un valor
diferente a 0 (cero). Si ingresa un número negativo o mayor que 4 deberá informar “Opción no
válida”.
16. Diseñar un DFD que permita el ingreso de N números y al finalizar muestre el menor, el mayor y
la posición en que se ingresó cada uno. N se ingresa al principio por teclado. AYUDA: hacer
primero el mayor, después agregarle la posición, después complicarlo con todo.
17. Realizar un algoritmo que imprima los N primeros números de la serie de Fibonacci. N se ingresa
por teclado.
18. Calcular la serie de Fibonacci. Ingresar N y generar la serie hasta que el último término sea
menor a N.
19. Dado un conjunto de números positivos, determinar el mayor de ellos:
a. cuando se tiene como dato su cantidad o tamaño del conjunto
b. cuando el conjunto de datos finaliza con un valor negativo.
ESTRUCTURAS DE DATOS.
3.6.7. Vectores
1. Efectuar un algoritmo que permita la carga de un vector de 10 elementos.
2. Efectuar un algoritmo que permita la muestra de los elementos de un vector de 10 elementos.
3. Diseñar un algoritmo que cargue un vector A con 10 elementos numéricos y realice las
siguientes modificaciones:
a. Asignar el valor 11,2 a la tercer posición del vector A
b. Asignar el valor del elemento de la octava posición del vector A en la segunda posición
c. Intercambiar el elemento de la cuarta posición, con el de la novena posición del vector A
4. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numérico, duplicar sus valores y luego imprimirlos en el orden ingresado.
5. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numérico y luego imprimirlos en el orden inverso al ingresado.
6. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numérico y luego imprimir:
a. La suma del contenido de los elementos.
b. La cantidad de elementos que sean mayores que 15.
7. Crear un vector de 70 elementos donde cada elemento del vector sea igual a su posición.
8. Cargar un vector de 50 elementos e informar: cual es el mayor elemento, el menor, y la posición
de ambos. Considere que los valores no se repiten.
9. Escribir un algoritmo que permita cargar un vector que contenga las notas de un curso de 20
alumnos (controlar que las notas válidas son entre 0 y 10) indicando:
a. la nota más alta y la nota más baja
b. el promedio de notas
c. el número de notas superiores al promedio
d. la cantidad de alumnos aprobados (notas >= a 4)
e. la cantidad de alumnos reprobados.
Al finalizar, mostrar todas las notas y los resultados de los cálculos.
10. Cargar un vector con 100 datos numéricos, al finalizar la carga calcular y mostrar:
a. promedio de los números positivos
b. promedio de los números negativos
c. la suma de los elementos que ocupan las posiciones pares del vector
d. la suma de los elementos que ocupan las posiciones impares del vector.
64
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
11. Confeccione un algoritmo que permita leer tres vectores de igual dimensión y luego los sume en
un cuarto vector.
12. Cargar un vector con 100 datos numéricos, luego ingresar un número X y buscar e informar si X
se encuentra en el vector, mostrando como resultado: “Existe el elemento en la posición ..” o
bien, “El elemento x no existe”.
13. Cargar un vector con 100 datos numéricos, luego ingresar un número X y buscar e informar si X
se encuentra en el vector y si se encuentra, cuantas veces aparece.
14. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numérico y luego imprima cada elemento del vector que vaya precedido inmediatamente por un
elemento nulo.
15. Cargar un vector con las alturas de los N alumnos de un curso. Determinar la media y luego
informar cuantos alumnos son más altos que la media y cuántos mas bajos.
16. Hacer un programa que permita realizar la suma y el producto de dos vectores de 10 elementos.
El usuario elige la operación a realizar. Ambos vectores ya están cargados.
17. En un colegio secundario, se maneja la información de las notas de un curso con tres vectores
de longitud N llamados trim1, trim2 y trim3. Los componentes de los vectores son las notas del
primero, segundo y tercer trimestre respectivamente, para cada alumno. Se pide generar un
cuarto vector de nombre prom donde cada componente sea el promedio de los elementos
homólogos de los tres vectores, al finalizar mostrar los tres mejores promedios del curso.
18. Los elementos de un vector numérico de 10 posiciones están relacionados con la siguiente
expresión: A[i+1] = i*A[i]+i*2 y siendo A[1] = 1. Realizar un algoritmo para calcular los
elementos de este vector.
19. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos un vector
numérico. Luego mostrar:
a. La posición (índice) del primer elemento menor que 0.
b. El valor y posición del mayor elemento.
20. Dado dos vectores A y B de N y M componentes, realizar un algoritmo que permita cargar dichos
vectores, luego generar un nuevo vector de nombre C que contenga los componentes comunes
de los dos anteriores y mostrar C.
21. Cargar dos vectores: uno con el número de empleado y otro con las horas trabajadas por cada
empleado. Cada vector tendrá N. Se pide:
a. Promedio de horas trabajadas.
b. Imprimir los números de empleados que trabajaron más horas que el promedio general.
c. Imprimir el número de empleado que más horas trabajó y el número de empleado que
trabajó menos horas.
22. Realizar un algoritmo que almacene en un vector los 20 primeros números primos, al finalizar la
carga mostrar el vector cargado.
23. Realizar un algoritmo que vaya solicitando al usuario la posición dentro del vector que desea
cargar y luego el valor a cargar. Deberá indicar con un mensaje cuando ese elemento ya haya
sido cargado y cuando el vector esté completamente cargado.
24. Ordenar un vector de 5 elementos de menor a mayor.
25. Ordenar un vector de N elementos de menor a mayor.
26. Dado un vector de N elementos buscar e imprimir.
a. La cantidad de veces que se encuentra cada número dentro del Vector.
b. La cantidad de números distintos dentro del Vector.
27. Cargar un vector de orden N. Se ingresan luego 10 números por teclado. Determinar cuántos de
estos números ingresados están presentes en el vector.
28. Cargar dos vectores A y B, luego buscar y mostrar cuantos elementos en común tienen.
3.6.8. Matrices
1. Elaborar un algoritmo que permita cargar números en una matriz de N x M por filas.
2. Elaborar un algoritmo que permita cargar números en una matriz de N x M por columnas.
65
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
3. Elaborar un algoritmo que permita cargar números en una matriz de 6 x 6. Imprimir al final la
suma de las columnas.
4. Elaborar un algoritmo que permita el ingreso de números en una matriz de 10 x 10 e imprima
los elementos de la misma recorriendo por fila y al final de cada fila imprima la suma de esta
última.
5. Elaborar un algoritmo que lea números en una matriz cuadrada de 10 x 10. Calcular e imprimir
la suma de los elementos de su diagonal principal.
6. Hacer un algoritmo que me permita cargar los elementos de la diagonal principal de una matriz
de 10 x 10 a un vector.
7. Elaborar un algoritmo que genere una matriz cuadrada de 10 x 10 en la cual se asigne ceros a
todos sus elementos, excepto a los de la diagonal principal, donde asignará unos.
8. Elaborar un algoritmo que cree una matriz cuadrada de 10 x 10 en la cual cargue ceros a todos
sus elementos, excepto a los de la diagonal secundaria, donde se asignarán números leídos por
teclado.
9. Elaborar un algoritmo que cargue números en dos matrices de 5 x 5. Calcular en una tercera
matriz la suma de los elementos de las dos anteriores. Al final mostrar las tres matrices.
10. Hacer un DF que me permita cargar una matriz de M x N, luego calcule y muestre el mayor y
menor elemento de cada fila.
11. Hacer un DF que me permita cargar una matriz de M x N, luego calcule y muestre el menor
elemento de cada columna y la posición en la que se encuentra.
12. Se deben cargar las notas de cada uno de los 40 alumnos de un curso. Cada alumno tiene 5
notas donde las notas de un alumno corresponden a una fila de una matriz. Elaborar un
algoritmo que calcule e imprima el promedio de cada alumno.
13. En una matriz se tienen las 7 notas correspondientes a cada una de las asignaturas de los 30
alumnos de un curso. Elaborar un algoritmo que calcule e imprima las notas y el promedio de
cada alumno. Cada alumno cursa como mínimo 3 materias y como máximo las 7.
14. Elaborar un algoritmo que cargue números en una matriz de 5 x 10. Calcular la suma de cada
una de sus filas y columnas dejando dichos resultados en dos vectores, uno de 5 elementos para
las filas y otro de 10 elementos para las columnas.
15. Elaborar un algoritmo que permita ingresar números en una matriz en las posiciones
correspondientes al triángulo superior (de la diagonal principal hacia la derecha) teniendo en
cuenta que el resto de la matriz debe permanecer en 0.
16. Elaborar un algoritmo que permita ingresar números en dos matrices una de 5 x 4 y la otra de 4
x 3. Calcular en una tercera matriz el producto de los elementos de las dos anteriores, la matriz
resultado será de 5 x 3. Al final imprimir las tres matrices.
Nota: Para poder multiplicar matrices, el número de filas de una matriz debe coincidir con el
número de columnas de la otra (no necesariamente deben ser cuadradas). El producto está
definido por la fórmula: c[i,j] = ∑a[i,k] * b[k,j]
17. Elaborar un algoritmo que permita determinar si una matriz cuadrada A ya cargada es identidad.
Nota: Una matriz es considerada “identidad” si cada elemento a[i,j] = a[j,i].
18. Cargar una matriz de M x N elementos y generar un vector con los valores de una fila indicada
por teclado. No olvidarse de validar el número de fila ingresado.
19. Elaborar un algoritmo que permita ingresar los datos de una matriz de 10 x 5 y genere la matriz
transpuesta.
20. En una agencia de quiniela se tienen los valores de los números ganadores y los premios de los
mismos. Los datos están cargados en una matriz de 365 filas y dos columnas (una fila para cada
día). En la primer columna el número ganador y en la segunda el monto del premio. Realizar un
algoritmo que determine cuántas fueron las ocurrencias de cada número y que monto de dinero
le correspondió a cada número.
21. Se carga una matriz de 50 x 3 con los siguientes datos sobre nacimientos en una ciudad: sexo
(1: Masculino 2: Femenino), mes y año de nacimiento. Al finalizar la carga se pide que informe:
a. cantidad de varones y cantidad de mujeres
b. cantidad de nacimientos en el primer semestre
c. cantidad de nacimientos en el segundo semestre
d. cantidad de personas que actualmente son mayores de 5 años.
66
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
22. En una matriz de dimensiones 4 x 4 se pide que encuentre la ubicación del mayor y menor
elemento. Mostrar la matriz completa y las ubicaciones encontradas con los valores respectivos.
23. Lea una matriz de N x M (variables ingresadas por teclado) e indique:
a. cantidad de elementos positivos
b. cantidad de elementos negativos
c. cantidad de ceros
d. mayor elemento que contiene la matriz y cuantas veces figura dicho elemento
24. Hacer un diagrama que permita cargar una matriz de 5 x 5 y ordene cada columna de mayor a
menor.
25. Hacer un diagrama que permita cargar una matriz de 5 x 5, luego ingrese un número de fila,
validarlo y, por último ordene la fila indicada de mayor a menor.
26. Cargar dos matrices MAT1 y MAT2 ambas cuadradas de orden N. Intercambiar los elementos de
la diagonal principal.
27. Leer una matriz de dimensiones N x M y realizar y mostrar:
a. un vector llamado POS que contendrá los elementos positivos de la matriz
b. un vector llamado NEG que contendrá los elementos negativos de la matriz
c. el mayor elemento del vector POS
d. el menor elemento del vector NEG
e. el promedio de los elementos de la matriz, del vector POS y del vector NEG
f. la matriz original y los dos vectores.
67
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Tener en cuenta que: Las notas ingresadas no se repiten. Se debe respetar el nombre de las
variables. Si necesita más variables aclarar para qué utiliza cada una. Las notas ingresadas deben
ser validadas. Se debe controlar que las notas ingresadas sean válidas, si no lo son se debe
reingresar la nota; o sea que en total se tendrán 20 notas válidas (entre 0.00 y 10.00 inclusive).
Indicar el sentido de las flechas y líneas de flujo, el V/F de los rombos.
Un ejemplo:
Lunes Martes Miércoles Jueves Viernes Sábado Domingo
125 325 100 85 300 510 150
4. Una empresa de transporte lleva un control mensual de los pasajes vendidos Oberá - Bs As. El
encargado de ventas necesita cargar y almacenar los datos correspondientes a la cantidad de
pasajes vendidos mensualmente, durante el transcurso de un año. (Verificar que los datos que
ingresa el usuario correspondan a una cantidad válida). Una vez almacenados los datos se
quiere realizar un estudio estadístico para el mes de Mayo y determinar e informar cuando se
venden más pasajes los días pares o impares:
Pasajes días pares. (Esto es: 0, 2,4,…, 28,30)
Pasajes días impares. (Esto es: 1, 3,5,…, 29,31)
5. Una empresa de transporte lleva el control de las ventas de pasajes por cada unidad que realiza
la línea Oberá- Buenos Aires. Esta línea permite la venta de tarifas intermedias.
El encargado de ventas necesita cargar y almacenar los datos correspondientes a una unidad de
transporte con un total de 36 butacas.
Estado de butacas: Libre = 0, Ocupado = 1. (Verificar dato ingresado valido).
Tarifa por butacas vendidas: x $. (Verificar dato ingresado valido).
68
TALLER DE INFORMÁTICA CAPITULO 3. Algoritmos
Asiento 1 2 3 4 5 6 7 8 9 10 .. .. 31 32 33 34 35 36
Estado 0 0 0 1 1 0 0 1 0 1 .. .. 0 0 1 1 1 1
Tarifa $ 0 0 0 90 90 0 0 70 0 80 .. .. 0 0 130 130 90 90
Butacas libres: 7
Butacas ocupadas: 36-7=29
Importe total: X $
69
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
CAPITULO 4.
LENGUAJES DE PROGRAMACION
El objetivo de este apunte es proporcionar de una guía para aprender a programar bajo el
Entorno Gráfico del Sistema Operativo Linux en Lenguaje C.
Para ello, luego de varios intentos y pruebas sobre las aplicaciones a utilizar en el ámbito del
Software Libre, se optó por la Distribución de Linux Ubuntu y, como interface de IDE (Integrated
Development Environment), el Anjuta. Este apunte está destinado a los alumnos de los cursos de
Taller de Informática y Computación de la Facultad de Ingeniería de Oberá.
Como aclararación se expone que el apunte fue realizado mediante la compilación / edición de
materiales extraídos fundamentalmente de Internet. En algunos casos con modificaciones parciales
y, en otros, modificaciones totales. Otro aporte utilizado, sobre todo en la organización de los
temas, fue obtenido de Libros; finalmente, se utilizaron los ejemplos de guías y apuntes de las
Cátedras de años anteriores. En conclusión, este apunte es el resultado del trabajo de muchas
personas, organizado de la manera más apropiada para el dictado de las asignaturas mencionadas
y poder conseguir los objetivos propuestos en las mismas.
El libro se divide en partes, la Parte 1 incluye los capítulos que se desarrollan en la Materia
Taller de Informática. La Parte 2 y 3 son los temas que conjuntamente con la Parte 1 deben ser
vistos en la Materia Computación.
En los Apéndices fueron dispuestos materiales que se considera pueden ser importantes como
consulta o complemento.
70
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.1. INTRODUCCIÓN
EL lenguaje C fue creado por Dennis Ritchie en los laboratorios de la Bell Telephone en 1972. El
mismo fue pensado para desarrollar un Sistema Operativo llamado UNIX. Este lenguaje es el
sucesor del lenguaje llamado B (de allí el nombre C).
Debido a la flexibilidad y poder de programación, se extendió rápidamente y empezaron a
surgir distintas versiones. Como consecuencia de esto nace un comité llamado ANSI (American
National Estándar Institute) el cuál define lo que se conoce como Standard C o como Estándar
ANSI C.
¿Que diferencia hay entre C y C++? C++ es súper conjunto de C, es decir que C es un
conjunto de C o C está contenido por C++.
El C++ incorpora nuevas características sin comprometer ninguna de las bondades del C, entre
las cosas que se agregó son el concepto de clases, herencia, funciones virtuales del lenguaje
Simula67 y sobrecarga de operadores del Algol68 (características que veremos en detalle en el
curso).
71
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
72
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.2. LENGUAJE C
Para poder crear un programa en lenguaje C debemos realizar una serie de pasos que nos
permitirán pasar de nuestro programa escrito en código fuente a nuestro archivo ejecutable.
El lenguaje C es compilado, esto significa que un programa compilador lee el código fuente
completo escrito por el programador, lo convierte en código objeto también conocido como código
binario o código máquina. Una vez compilado, el linker enlazará las librerías dentro de su código
objeto y así obtendrá, finalmente el programa ejecutable. Veamos en detalle cada uno de estos
conceptos.
Uso de librerías.
Junto con los compiladores de C y C++, se incluyen ciertos ficheros llamados librerías.
Las librerías contienen código objeto de programas que permiten hacer cosas comunes como,
por ejemplo, leer desde el teclado, escribir en pantalla, manejar números, realizar funciones
matemáticas, etc.
73
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Las librerías están clasificadas por el tipo de trabajos que hacen, hay librerías de entrada y
salida, matemáticas, de manejo de memoria, de manejo de textos, etc.
Hay un conjunto de librerías muy especiales, que se incluyen con todos los compiladores de C y
de C++. Son las librerías ANSI o estándar. Pero también hay librerías no estándar, y dentro de
éstas hay librerías públicas y comerciales. En este curso sólo usaremos librerías ANSI.
Existe un programa que hace todas estas cosas, se trata del "link", o enlazador.
El enlazador toma todos los ficheros objeto que componen nuestro programa, los combina con
los ficheros de librería que sea necesario y crea un fichero ejecutable.
Una vez terminada la fase de enlazado, ya podremos ejecutar nuestro programa.
Por supuesto, somos humanos, y por lo tanto nos equivocamos. Los errores de programación
pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.
Pueden ser:
Errores de sintaxis.
Warnings o avisos.
Errores de enlazado.
Errores de ejecución.
Errores de diseño.
74
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
75
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Todos los programas poseen una función main() que indica el punto donde se inicia la
ejecución. La ejecución finaliza cuando se encuentra el final de main.
Debe declarar todas las variables antes de usarlas.
Sintaxis:
#include <archivo.h>
La directiva include le indica al compilador que lea y compile el contenido del archivo con
extensión .h que contiene las descripciones de las funciones de librería utilizadas a lo largo del
programa.
Por ejemplo:
#include <stdio.h>
Sintaxis:
#define nombre valor
76
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Le indica al compilador que cada vez que aparezca NÚMERO en el programa sea sustituido por
5.3.
Las expresiones que permiten realizar cálculos dentro de los programas están formadas por
variables, constantes y operadores.
Las variables se deben declarar antes de ser utilizadas en el programa, ya que el compilador
debe conocer qué tipo de dato es una variable antes de poder compilar cualquier sentencia que la
use.
El lugar donde se declara una variable afecta mucho la manera en que otras partes del
programa pueden utilizarla.
Las reglas que determinan cómo se puede usar una variable basada en el lugar en que fue
declarada se llaman reglas de alcance del lenguaje.
Si la variable se declara en ésta zona del programa, fuera de todas las funciones, incluyendo la
función main(), se denomina variable global y se puede utilizar en cualquier parte del programa.
Lugar dentro de los programas donde se deben crear las nuevas clases, se les debe asignar un
nombre utilizando las sentencias struc, union o class de C++.
Todos los programas escritos en C poseen una función llamada main(). Es la función que se
ejecuta en primer lugar cuando comienza a funcionar el programa. El programa posee una sola
función main().
En la siguiente línea aparece una llave { que indica el grupo de instrucciones que definen lo
que sucederá cuando se ejecute el programa.
77
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Esta zona contiene el código para cada función declarada. El encabezamiento de la definición
será exactamente igual a la declaración, excepto que no finaliza con punto y coma (;).
En esta parte del programa se deben definir los objetos o instancias de la clase declarada en la
zona 4.3.4.
78
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Como se había mencionado en el capítulo 3, “Cada dato utilizado durante la ejecución del
programa deberá ser descrito para que el compilador lo reconozca, sepa cómo almacenarlo y
recuperarlo; se deberá reservar memoria para que pueda almacenar la cantidad de datos
necesarios.”
La declaración de cada ítem de datos consiste en indicar qué tipo de dato es y darle un nombre
que lo identifique.
En C hay tipos básicos de datos: carácter (character), entero (integer), punto flotante (floating
point) y puntero (point); aunque, en cada versión del lenguaje, pueden aparecer más o menos
tipos de datos.
Por ejemplo, en C sólo existen cinco tipos fundamentales y los tipos enumerados, C++ añade
un séptimo tipo, el bool, y el resto de los tipos son derivados de ellos.
Los números son los datos fundamentales utilizados por los programas de computadoras. El
contenido de la memoria consiste en números binarios almacenados en grupos de 8 bits (1 byte) o
16 bits (2 bytes o 1 word). Aún cuando un programa de computadora trabaje con letras o gráficos,
básicamente está involucrando una serie de números almacenados en memoria.
Los diferentes tipos de datos dependen, en realidad, de la cantidad de bytes que ocupen en
memoria.
Para obtener información más detallada acerca de los tipos de datos, la cantidad de memoria
reservada remitirse al APENDICE Tipos de datos
Cuando se desea definir ítems de datos que almacenen palabras (dos o más caracteres) nos
encontramos ante el tipo de dato “string” o cadena de caracteres.
Por ejemplo:
`hola´
´Juan Pérez´
Este tipo de datos merece un desarrollo especial por ello se verá en el capítulo 9 que estudia el
tema de arreglos.
4.4.2. Variables
79
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.4.2.1. Identificadores
Un identificador es el nombre que permite identificar un espacio de memoria mediante un
nombre válido para el lenguaje.
El lenguaje C es flexible pero posee ciertas reglas que debemos respetar cuando definimos
identificadores para las variables que utilizaremos en el programa.
Sintaxis:
[tipo] [lista_de_identificadores];
Tipo debe ser un tipo de datos válido y lista_de_identificadores puede ser uno o más
identificadores separados por coma (,). La declaración de variables puede considerarse como una
sentencia. Desde este punto de vista, la declaración terminará con un ";".
Por ejemplo:
int numero;
float promedio, final;
char letra;
Por ejemplo:
int a = 1234;
80
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Se declarara las variables "a", "seguir", "encontrado" y “letra”; y además se inicia los valores
de "a" en 1234, “seguir” en "true" y “letra” con ‘k’.
4.4.2.2.3. Declaración de una variable de tipo punto flotante doble precisión (double).
[long] double <identificador o nombre >
Este tipo nos permite definir conjuntos de constantes, normalmente de tipo int, llamados datos
de tipo enumerado.
Las variables declaradas de este tipo sólo podrán tomar valores entre los definidos.
El identificador de tipo es opcional, y nos permitirá declarar más variables del tipo enumerado
en otras partes del programa. La lista de variables también es opcional. Sin embargo, al menos uno
de los dos componentes opcionales debe aparecer en la definición del tipo enumerado.
Varios identificadores pueden tomar el mismo valor, pero cada identificador sólo puede usarse
en un tipo enumerado.
Por ejemplo:
enum tipo_horas {una=1, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez,
once, doce, trece=1, catorce, quince, dieciseis, diecisiete, dieciocho, diecinueve,
veinte, veintiuna, veintidós, veintitrés, veinticuatro =0};
81
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
En este caso, una y trece valen 1, dos y catorce valen 2, etc. Y veinticuatro vale 0. Como se ve
en el ejemplo, una vez se asigna un valor a un elemento de la lista, los siguientes toman valores
correlativos. Si no se asigna ningún valor, el primer elemento tomará el valor 0.
Las variables de este tipo sólo pueden tomar dos valores "true" o "false". Sirven para evaluar
expresiones lógicas.
Este tipo de variables se puede usar para almacenar respuestas, por ejemplo: ¿Posees carnet
de conducir? O para almacenar informaciones que sólo pueden tomar dos valores, por ejemplo:
¿qué mano usas para escribir?
En estos casos debemos acuñar una regla, en este ejemplo, podría ser:
diestro->"true", zurdo->"false".
Por ejemplo:
char a = ‘p’; int num = 0;
1) ¿Cuáles de los siguientes son tipos válidos de variables? Marcar la opción correcta.
a) unsigned char Sí No
b) long char Sí No
c) unsigned float Sí No
d) double char Sí No
e) signed long Sí No
f) unsigned short Sí No
g) signed long int Sí No
h) long double Sí No
i) enum dia {lunes, martes, miercoles, jueves, viernes, sabado, domingo}; Sí No
j) enum color {verde, naranja, rojo}; enum fruta {manzana, fresa, naranja, platano};Sí No
k) long bool Sí No
82
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.5. CONSTANTES
Las constantes son muy similares a las variables, con la diferencia que éstas solo pueden tomar
un valor en el momento de la declaración, luego cualquier intento de modificación será tomado
como un error por parte del compilador.
Las constantes se declaran del mismo modo que las variables, solamente se debe anteponer la
sentencia “const” antes del tipo de dato.
Por ejemplo:
const int mayor = 25;
Veremos las reglas que rigen la escritura de las constantes en C según diversos sistemas de
numeración y que uso tiene cada uno.
¿Por qué es necesaria la notación?
En todos los casos, especificar el tipo de la constante tiene como objetivo evitar que se realicen
conversiones de tipo durante la ejecución del programa, obligando al compilador a hacerlas durante
la fase de compilación.
Por ejemplo:
float x = 0.0;
if(x <= 1.0f) x += 0.01f;
Por ejemplo:
El número 127, se representará en:
notación decimal como 127
octal como 0177
hexadecimal como 0x7f.
83
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
7F=7*16+15=127. Del mismo modo que el número 127 en notación decimal sería,
1*10²+2*10+7=127.
En octal se usa como prefijo el dígito 0. El número 0177 equivale a 0177=1*8²+7*8+7=127.
Hay que tener mucho cuidado con las constantes numéricas, en C y C++ no es el mismo
número el 0123 que el 123, aunque pueda parecer otra cosa. El primero es un número octal y el
segundo decimal.
La ventaja de la numeración hexadecimal es que los valores enteros requieren dos dígitos por
cada byte para su representación. Así un byte puede tomar valores hexadecimales entre 0x00 y
0xff, dos bytes entre 0x0000 y 0xffff, etc. Además, la conversión a binario es casi directa, cada
dígito hexadecimal se puede sustituir por cuatro bits, el '0x0' por '0000', el '0x1' por '0001', hasta el
'0xf', que equivale a '1111'. En el ejemplo el número 127, o 0x7f, sería en binario '01111111'.
Con la numeración octal es análogo, salvo que cada dígito agrupa tres bits.
Así un byte se puede tomar valores octales entre 0000 y 0377, dos bytes entre 0000000 y
0177777, etc. Además, la conversión a binario es casi directa, cada dígito octal se puede sustituir
por tres bits, el '0' por '000', el '1' por '001', hasta el '7', que equivale a '111'. En el ejemplo el
número 127, o 0177, sería en binario '01111111'.
De este modo, cuando trabajemos con operaciones de bits, nos resultará mucho más sencillo
escribir valores constantes usando la notación hexadecimal u octal.
Por ejemplo, resulta más fácil predecir el resultado de la siguiente operación:
En ambos casos el resultado es 0, pero en el primero resulta más evidente, ya que 0xAA es en
binario 10101010 y 0x55 es 01010101, y la operación "AND" entre ambos números es 00000000,
es decir 0.
Ahora se propone al alumno intentarlo con los números 170 y 85.-
Para trabajar con valores constantes "long" debemos usar el sufijo "L". Esto resulta
conveniente, sobre todo, al utilizar las constantes en expresiones condicionales y, por coherencia,
también en expresiones de asignación.
Por ejemplo:
long x = 123L;
if(x == 0L) cout << "Valor nulo" << endl;
Puede suceder que el compilador nos señale un error cuando usemos constantes long sin
añadir el sufijo L.
84
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
if(x == 1343890883) cout << "Número long int" << endl;
Esta sentencia hará que el compilador emita un error ya que no puede usar un tamaño mayor
sin una indicación explícita.
Hay casos en los que los tipos "long" e "int" tienen el mismo tamaño, en ese caso no se
producirá error, pero no podemos predecir que nuestro programa se compilará en un tipo concreto
de compilador o plataforma.
Por ejemplo:
long long x = 16575476522787LL;
if(x == 1LL) cout << "Valor nulo" << endl;
Como cuando se utilizan constantes long, a menudo recibiremos errores del compilador cuando
usemos constantes long long sin añadir el sufijo LL.
Por ejemplo:
if(x == 16575476522787) cout << "Número long long" << endl;
Esta sentencia hará que el compilador emita un error ya que no puede usar un tamaño mayor
sin una indicación explícita.
Por ejemplo:
unsigned int x = 123U;
if(x == 3124232U) cout << "Valor encontrado" << endl;
Por ejemplo:
unsigned long x = 123456UL;
if(x == 3124232UL) cout << "Valor encontrado" << endl;
85
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
unsigned long long x = 123456534543ULL;
if(x == 3124232ULL) cout << "Valor encontrado" << endl;
Por ejemplo:
float x = 0.0;
if(x <= 1.0f) x += 0.01f;
Por ejemplo:
double x = 0.0;
if(x <= 1.0) x += 0.01;
Por ejemplo:
long double x = 0.0L;
if(x <= 1.0L) x += 0.01L;
86
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
double x = 10e4;
double y = 4.12e2;
double pi = 3.141592e0;
Al igual que con los enteros, es indiferente usar los sufijos en mayúsculas o minúsculas, pero es
preferible usar mayúsculas, sobre todo con la "L", ya que la 'l' minúscula puede confundirse con un
uno '1'.
Si has pensado que una constante char se representa con 'k', tal vez, después de un rato te
preguntes ¿cómo se representa la constante que consiste en una comilla sencilla?
Existen ciertos caracteres, entre los que se encuentra la comilla sencilla, que no pueden ser
representados con la norma general. Para eludir este problema existe cierto mecanismo, llamado
secuencias de escape. En el caso comentado, la comilla sencilla se define como '\', y la barra
descendente se define como '\\'.
Además de estos caracteres especiales existen otros.
El código ASCII es el conjunto de caracteres que puede ser representado por el tipo "char",
consta de 128 o 256 caracteres.
El código ASCII de 128 caracteres utiliza 7 bits, actualmente ha quedado prácticamente
obsoleto ya que no admite caracteres como la 'ñ' o la 'á' pero, aún se usa en ciertos equipos
antiguos donde el octavo bit se usa como bit de paridad en las transmisiones serie.
El código ASCII de 256 caracteres utiliza los 8 bits y, si recordamos, el tipo "char" tiene siempre
un byte (8 bits) y esto no es por casualidad.
En este conjunto existen, además de los caracteres alfabéticos, en mayúsculas y minúsculas,
los numéricos, los signos de puntuación y los caracteres internacionales, ciertos caracteres no
imprimibles, como el retorno de línea, el avance de línea, etc.
Veremos estos caracteres y cómo se representan como secuencia de escape, en hexadecimal,
el nombre ANSI y el resultado o significado.
87
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Los tres últimos son realmente comodines para la representación de cualquier carácter.
El \nnn sirve para la representación en notación octal. Para la notación octal se usan tres
dígitos. Hay que tener en cuenta que, análogamente a lo que sucede en la notación hexadecimal,
en octal se agrupan los bits de tres en tres. Por lo tanto, para representar un carácter ASCII de 8
bits, se necesitarán tres dígitos. En octal sólo son válidos los símbolos del '0' al '7'.
Según el ejemplo anterior, para representar el carácter 127 en octal usaremos la cadena '\177',
y en hexadecimal '\x7f'. También pueden asignarse números decimales a variables de tipo char.
Por ejemplo:
char A;
A = 'a';
A = 97;
A = 0x61;
A = '\x61';
A = '\141';
En este ejemplo todas las asignaciones son equivalentes y válidas.
#include <iostream>
using namespace std;
int main()
{char opc0='A'; //Ascii de A expresado como Caracter
char opc1=65 ; //Ascii de A expresado en Decimal
char opc2= 0101; //Ascii de A expresado en Octal
char opc3 = 0x41; //Ascii de A expresado en Hexadecimal
cout << opc0 <<endl;
cout << opc1 <<endl;
88
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.5.4. Ejercicios
1) si debe almacenar el dato, ¿qué tipo de constante debería utilizar en cada caso? Marcar la
opción correcta.
a) '\x37'
1. char
2. long
3. int
4. float
b) 123UL
1. unsigned
2. int
3. long
4. unsigned long
c) 34.0
1. int
2. double
3. float
4. long
d) 6L
1. int
89
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
2. long
3. double
4. char
e) 67
1. char
2. unsigned
3. int
4. float
f) 0x139
1. char
2. unsigned
3. int
4. float
g) 0x134763df23LL
1. long
2. unsigned
3. int
4. long long
5.
90
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.6. OPERADORES
Los operadores son elementos que disparan ciertos cálculos cuando son aplicados a variables o
a otros objetos en una expresión.
Un operador es un símbolo que le dice al compilador que realice manipulaciones matemáticas o
lógicas específicas.
El lenguaje C tiene las siguientes clases de operadores: aritméticos, relacionales, lógicos y
sobre bits.
Hay varios tipos de operadores, clasificados según el tipo de objetos sobre los que actúan.
Sintaxis:
+ <expresión>
- <expresión>
<variable> ++ /* post-incremento */
++ <variable> /* pre-incremento */
<variable>-- /* post-decremento */
-- <variable> /* pre-decremento */
91
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
en las siguientes expresiones "a" vale 100 y "b" vale 10:
c = a + ++b;
Por ejemplo:
c = a + b++;
En este segundo ejemplo primero se avalúa la expresión "a+b", que dará como resultado 110,
y se asignará este valor a c, que valdrá 110.
Finalmente se aplica en post-incremento, y b valdrá 11.
Los operadores unitarios sufijos (post-incremento y post-decremento) se evalúan después de
que se han evaluado el resto de las expresiones.
En el primer ejemplo primero se evalúa ++b, después a+b y finalmente c=<resultado>.
En el segundo ejemplo, primero se evalúa a+b, después c = <resultado> y finalmente b++.
Sintaxis:
<expresión> + <expresión> /*Sintaxis de operador suma */
<expresión> - <expresión> /* Sintaxis de operador resta */
<expresión> * <expresión> /* Sintaxis de operador multiplicación */
<expresión> / <expresión> /* Sintaxis de operador división */
<expresión> % <expresión> /* Sintaxis de operador resto */
92
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
10 / 3 será igual a 3 para la división entera.
El operador módulo '%', devuelve el resto de la división entera del primer operando entre el
segundo. Por esta razón no puede ser aplicado a operando en coma flotante (ya que al ser
números de punto flotante no hay resto!!).
En las expresiones, "E1 <operador_relacional> E2, los operandos (E1, E2) tienen algunas
restricciones, pero de momento nos conformaremos con que sean de tipo aritmético. El resto de las
restricciones las veremos cuando conozcamos los punteros y los objetos.
Es un error frecuente utilizar el “=” en lugar del “==”, observar que el “=” es para ASIGNAR; y
el “==” es para COMPROBAR LA IGUALDAD.
Los operadores lógicos conforman expresiones lógicas y se utilizan para determinar cómo se
presentan las relaciones entre las expresiones involucradas.
93
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
El operador "&&" equivale al "AND" o "Y"; devuelve "true" sólo si las dos expresiones
evaluadas son "true" o distintas de cero, en caso contrario devuelve "false" o cero. Si la primera
expresión evaluada es "false", la segunda no se evalúa.
Generalizando, con expresiones AND con más de dos expresiones, la primera expresión falsa
interrumpe el proceso e impide que se continúe la evaluación del resto de las expresiones. Esto es
lo que se conoce como "cortocircuito", y es muy importante, como veremos posteriormente.
El operador && se usa según la siguiente tabla de verdad, donde se representa “true” con 1 y
“false” con 0.
El operador "||" equivale al "OR" u "O inclusivo"; devuelve "true" si cualquiera de las
expresiones evaluadas es "true" o distinta de cero, en caso contrario devuelve "false" o cero. Si la
primera expresión evaluada es "true", la segunda no se evalúa.
El operador || se usa según la siguiente tabla de verdad, donde se representa l
94
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
El operador asigna el valor de la izquierda (14) a la variable (a) que está a la derecha del
operador asignación (=).
Existen varios operadores de asignación, el más evidente y el más usado es el "=", pero no es
el único.
Los operadores de asignación y sus diferentes usos se describen a continuación:
Sintaxis:
sizeof <expresión>
sizeof (nombre_de_tipo)
En ambos casos, el resultado es una constante entera que da el tamaño en bytes del espacio
de memoria usada por el operando, que es determinado por su tipo.
El espacio reservado por cada tipo depende de la plataforma.
En el primer caso, el tipo del operando es determinado sin evaluar la expresión, y por lo tanto
sin efectos secundarios.
Por ejemplo:
si el operando es de tipo "char", el resultado es 1.
El operador "?:", se trata de un operador ternario (es decir tiene TRES operandos)
95
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Sintaxis:
<expresión lógica> ? <expresión> : <expresión>
En la expresión E1? E2:E3, primero se evalúa la expresión E1, si el valor es verdadero ("true"),
se evaluará la expresión E2 y E3 será ignorada, si es falso ("false"), se evaluará E3 y E2 será
ignorada.
Hay ciertas limitaciones en cuanto al tipo de los argumentos:
E1 debe ser una expresión lógica.
E2 y E3 deben ser de tipo aritmético.
E2 y E3 deben ser de estructuras o uniones compatibles.
E2 y E3 deben ser de tipo "void".
Por ejemplo:
max = (a >=b) ? a : b;
De este ejemplo sólo nos interesa la parte de la derecha. La interpretación es: si "a" es mayor
que "b", se debe evaluar "a", en caso contrario evaluar "b", en resumen, evalúa siempre el
máximo!!
El operador coma se utiliza para encadenar diversas expresiones. Provoca una secuencia de
operaciones a realizar, se puede pensar como “hacer esto y luego esto”.
Tiene una doble función: separa elementos de una lista de argumentos de una función. puede
ser usado como separador en expresiones "de coma".
Ambas funciones pueden ser mezcladas, pero hay que añadir paréntesis para resolver las
ambigüedades y provocar errores, ya que el operador coma tiene precedencia más baja, por
ejemplo, que el operador de asignación.
Sintaxis:
E1, E2, ... , En
En una expresión "de coma", cada operando es evaluado como una expresión, pero los
resultados obtenidos se tienen en cuenta en la próxima evaluación.
Por ejemplo:
x = (y=3,y+1);
96
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.7. EXPRESIONES
La combinación de variables, constantes definidas o números con uno o más operadores dan
como resultado un valor. Esta combinación recibe el nombre de expresión.
Una expresión es, según el diccionario, un "conjunto de términos que representan una
cantidad", entre nosotros es cualquier conjunto de operadores y varios operando, que dan como
resultado una cantidad.
Operando es cada una de las cantidades, constantes, variables o expresiones que intervienen
en una expresión.
Existe una división, en los operadores, atendiendo al número de operando que afectan. Según
esta clasificación pueden ser unitarios, binarios o ternarios, los primeros afectan a un solo
operando, los segundos a dos y los ternarios como era de esperar a tres.
Las variables y constantes se pueden procesar utilizando operaciones y funciones adecuadas a
sus tipos.
Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.
Las expresiones se pueden clasificar, según los tipos de objetos que manipulan, en:
Una expresión aritmética es un conjunto de variables y/o constantes unidas o relacionadas por
paréntesis y operadores aritméticos.
Son análogas a las fórmulas matemáticas. Las variables y constantes son numéricas (enteras o
punto flotante) y las operaciones son aritméticas.
Por ejemplo:
sueldo = sueldo_base + 0.15 * monto_ventas
e = a*b*b / 3 + (a*a + b) / (b + c)
97
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
7 / 2 es igual a 3 y no 3.5 como lo es matemáticamente. Esto debido a que 7 y 2 son
enteros y al dividir dos enteros se pierde la parte fraccionaria, no se redondea.
En cambio:
7.0 / 2 es igual a 3.5 ya que si uno o los dos operando son reales, entonces el
resultado es real. En este caso 7.0 es real.
Las expresiones que tienen dos o más operando requieren reglas matemáticas que permitan
determinar el orden de las operaciones.
Las Reglas de Prioridad o Precedencia son las reglas matemáticas que permiten determinar el
orden de las operaciones.
Son:
Las operaciones que están encerradas entre paréntesis se evalúan primero. Si aparecen
varios paréntesis anidados, se evalúan primero los paréntesis interiores.
En caso de coincidir varios operadores de igual prioridad, el orden se determina de
izquierda a derecha.
Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden
de prioridad:
98
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por Ejemplo:
Si A = 4 y B = 3 A > B da como resultado Verdadero
(A – 2) < (B – 4) da como resultado Falso.
Los operadores de relación se pueden aplicar a los tipos de datos estándar: entero, punto
flotante, carácter ó lógico.
Por ejemplo:
Si tenemos la expresión Falso < Verdadero, dará como resultado Verdadero
Así, lo aconsejable es excluir a los valores punto flotante en este tipo de comparaciones.
Por Ejemplo:
(1 < 5) and (5 < 10) da como resultado Verdadero.
(5 < 10) or (‘A’ < ‘B’) da como resultado Verdadero.
99
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Para más detalle sobre operadores y reglas de precedencia ver APENDICE. Precedencia de
Operadores.
Al igual que en las expresiones aritméticas, los paréntesis se podrán utilizar y tendrán prioridad
sobre cualquier operación.
Por Ejemplo:
not 4 > 6 da como resultado ERROR, ya que el operador NOT no se aplica sobre
el 4.
not(4 > 6) da como resultado Verdadero
a) x += 10;
12
10
11
b) s *= b;
9
13
30
c) r /= 0;
infinito
1
error
d) y += x + 10;
8
12
18
e) z -= a*b;
-36
-18
36
100
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
a) x = 10 + x - y;
x += 10-y
x -= y+10
x += 10+y
b) r = 100*r;
r *= 100*r
r *= 100
r += 100
c) y = y/(10+x);
y /= 10*x
y /= 10 + y/x
y /= 10+x
d) z = 3 * x + 6;
z += 6
z *= 3
no es posible
c) (x <= z) || (z <= y)
true
false
d) !(x+y < z)
true
false
101
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.8. INSTRUCCIONES
El elemento que nos está faltando para poder comenzar a escribir nuestros propios programas
son las sentencias o instrucciones.
Un programa contiene las acciones o instrucciones que resolverán el problema. Las
instrucciones describen la secuencia de pasos con el que se quiere solucionar el problema
planteado.
Existen instrucciones de diversos tipos que nos permitirán enfrentarnos a todas las situaciones
posibles en programación.
Bloques
Expresiones
Llamadas a función
Asignación
Nula
Bucles
while
do while
for
Etiquetas
Etiquetas de identificación
case
default
Selección
if...else
switch
4.8.1. Bloques.
Una sentencia compuesta o un bloque es un conjunto de sentencias, que puede estar vacía,
encerrada entre llaves " {}”.
Sintácticamente, un bloque se considera como una única sentencia.
También se usa en variables compuestas, como veremos en el capítulo de variables II, y en la
definición de cuerpo de funciones.
Los bloques pueden estar anidados hasta cualquier profundidad.
102
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.8.2. Expresiones.
Una expresión seguida de un punto y coma (;), forma una sentencia de expresión.
La forma en que el compilador ejecuta una sentencia de este tipo es evaluando la expresión.
Cualquier efecto derivado de esta evaluación se completará antes de ejecutar la siguiente
sentencia.
Sintaxis:
<expresión>;
4.8.2.2. Asignación.
Una instrucción de asignación consiste en dar a una variable el valor de una expresión, el valor
de otra variable o el valor de una constante.
La sentencia de asignación se utiliza para almacenar valores a variables o constantes.
Es una operación que sitúa un valor determinado en una posición de memoria.
Sintaxis:
<variable> <operador de asignación> <expresión>;
4.8.2.3. Nula.
La sentencia nula consiste en un único ";". Sirve para usarla en los casos en los que el
compilador espera que aparezca una sentencia, pero en realidad no pretendemos hacer nada.
Veremos ejemplos de esto cuando lleguemos a los bucles.
4.8.3. Bucles.
Un bucle es la estructura de control que permite la repetición de una serie determinada de
sentencias. Es importante tener en cuenta cuántas veces se repite el bucle y cuál es el cuerpo del
bucle.
El cuerpo del bucle lo constituyen la serie de sentencias que pueden ser de cualquier tipo
(secuencial, de decisión o repetitivo) las cuales serán repetidas n veces, pudiendo ser n conocido o
desconocido. Cuando n es desconocido, el número de veces que debe repetirse el cuerpo del bucle
estará condicionado por una expresión lógica.
Un bucle no es más que una serie de instrucciones que se repiten.
103
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
A la hora de utilizar un bucle, sea del tipo que sea, debemos ir con cuidado y pensar cuando
debe acabar ya que si no tuviéramos en cuenta esto podríamos entrar en un bucle sin fin, iríamos
repitiendo las mismas líneas teniendo que abortar la aplicación, para poder finalizar la ejecución del
programa.
Por esto, es de suma importancia que pensemos, antes de hacer nada, en qué momento,
cómo, dónde y por qué debe acabar el bucle.
Sintaxis:
while (<condición>) <sentencia/s>;
Por ejemplo:
while (x < 100) x = x + 1;
Se incrementará el valor de x mientras x sea menor que 100.
Este ejemplo puede escribirse, usando el C con propiedad y elegancia, de un modo más
compacto:
Aquí vemos el uso de una sentencia nula, observa que el bucle simplemente se repite, y la
sentencia ejecutada es ";", es decir, nada.
Sintaxis:
do <sentencia/s> while(<condición>);
104
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
do
x = x + 1;
while (x < 100);
Sintaxis:
for ( [<inicialización>]; [<condición>] ; [<incremento>] )
<sentencia/s>
Por ejemplo:
for (int i = 0; i < 100; i = i + 1);
O bucles infinitos:
for(;;);
4.8.4. Etiquetas.
Los programas C y C++ se ejecutan secuencialmente, aunque esta secuencia puede ser
interrumpida de varias maneras.
Las etiquetas son la forma en que se indica al compilador en qué puntos será reanudada la
ejecución de un programa cuando haya una ruptura del orden secuencial.
105
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Sintaxis:
switch(<variable>)
{
case <expresión_constante>: [<sentencias>][break;]
...
[default: [<sentencias>]]
}
Las sentencias de selección permiten controlar el flujo del programa, seleccionando distintas
sentencias en función de diferentes valores.
Sintaxis:
if (<condición>) <sentencia1>;
if (<condición>) <sentencia1>; else <sentencia2>;
Por ejemplo:
if ( int val = func(arg))...
En este caso, la variable "val" sólo estará accesible dentro del ámbito de la sentencia "if" y, si
existe, del "else".
Cuando se usa la sentencia switch el control se transfiere al punto etiquetado con el "case"
cuya expresión constante coincida con el valor de la variable del "switch".
A partir de ese punto todas las sentencias serán ejecutadas hasta el final del "switch", es decir
hasta llegar al "}". Esto es así porque las etiquetas sólo marcan los puntos de entrada después de
una ruptura de la secuencia de ejecución, pero no marcan las salidas.
Esta característica nos permite ejecutar las mismas sentencias para varias etiquetas distintas, y
se puede eludir usando la sentencia de ruptura "break" al final de las sentencias incluidas en cada
"case".
Si no se satisface ningún "case", el control parará a la siguiente sentencia después de la
etiqueta "default". Esta etiqueta es opcional y si no aparece se abandonará el "switch".
No te preocupes, con un ejemplo se aclarará.
106
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Sintaxis:
switch (<variable>)
{
case <expresión_constante>: [<sentencias>] [break;]
...
[default : [<sentencia>]]
}
Por ejemplo:
switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
EsVocal = true;
break;
default:
EsVocal = false;
}
En este ejemplo letra es una variable de tipo "char" y EsVocal de tipo "bool".
Si el valor de entrada en el "switch" corresponde a una vocal, EsVocal saldrá con un valor
verdadero, en caso contrario, saldrá con un valor falso.
El ejemplo ilustra el uso del "break", si letra es 'a', se cumple el primer "case", y la ejecución
continúa en la siguiente sentencia, ignorando el resto de los "case" hasta el "break".
Otro ejemplo:
107
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Directamente se reanuda la ejecución en "case 1:", con lo cual Menor2 tomará el valor "true",
lo mismo pasará con Menor3.
Después aparece el "break" y se abandona el "switch".
Sintaxis:
break
Ejemplo:
switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
EsVocal = true;
break;
default:
EsVocal = false;
}
Sintaxis:
return [<expresión>]
Ejemplo:
int Paridad(int x)
{
if (x % 2) return 1;
return 0;
}
Este ejemplo ilustra la implementación de una función que calcula la paridad de un parámetro.
Si el resto de dividir el parámetro entre 2 es distinto de cero, implica que el parámetro es impar, y
la función retorna con valor 1. El resto de la función no se ejecuta. Si por el contrario el resto de
108
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
dividir el parámetro entre 2 es cero, el parámetro será un número par y la función retornará con
valor cero.
4.8.7. Comentarios.
Por ejemplo:
main(/*Sin argumentos*/void) está permitido
ma/*función*/in(void) es ilegal
Por ejemplo:
void main (void) // Esto es un comentario
{
}
Las llaves {} no forman parte del comentario.
b) int x=10;
do x++; while(x < 10);
10
10,11
11
109
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
x++;
salir = x%7;
}
13,14
13,14,15
13
d) int x = 6;
do {
switch(x%3) {
case 0: x=10; break;
case 1: x=17; break;
case 2: x=5; break;
}
} while(x != 5);
6,10,17
6,10,17,5
6,10,17,10,5
110
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.9. FUNCIONES
Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general
toman unos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de
retorno; aunque tanto unos como el otro pueden no existir.
Al igual que con las variables, las funciones pueden declararse y definirse.
Una declaración es simplemente una presentación.
Una definición contiene las instrucciones con las que realizará su trabajo la función.
Sintaxis:
<tipo> func (<lista de declaración de parámetros>);
Por ejemplo:
int Intervalo(int a, int b); /*Prototipo de la función Intervalo*/
El prototipo sirve para indicar al compilador los tipos de datos de retorno y los tipos de datos de
los parámetros que recibe la función, de modo que compruebe si son del tipo correcto cada vez que
se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea
necesario.
Los nombres de los parámetros son opcionales, y se incluyen como documentación y ayuda en
la interpretación y comprensión del programa.
El prototipo del ejemplo indica que en algún lugar del programa se definirá una función
"Intervalo" que admite dos parámetros de tipo "int" y que devolverá un valor de tipo "int". No es
necesario escribir nombres para los parámetros, ya que el prototipo no los usa. En otro lugar del
programa habrá una definición completa de la función.
Normalmente se aconseja:
Copiar el prototipo de la función y pegar como una definición eliminando el “;” del final
de línea de esta manera no se comenten errores.
PERO si hacemos esto utilizando la última forma de indicar el prototipo de la función
(es decir sin dar nombres a las variables) no sirve, ya que en la definición de la función
necesitamos dar un nombre a la variable para poder usarla.
Las funciones se declaran como prototipos dentro del programa, o se incluyen estos
prototipos desde un fichero externo, (usando la directiva "#include")
111
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Tipo de almacenamiento
Tipo de valor de retorno
Modificadores opcionales
Nombre de la función
Lista de parámetros (entre paréntesis)
Cuerpo de la función
112
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo de función:
/* Esta función devuelve el mayor de dos números */
# include <iostream>
using namespace std;
int Mayor (int a, int b); /* Prototipo de función Mayor */
int main()
{ int x,y; /*variables locales x e y*/
cout << endl << "Ingrese un entero: ";
113
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
cin >> x;
cout << endl << "Ingrese otro entero: ";
cin >> y;
cout<< endl <<"El mayor valor es :" << Mayor(x,y)<< endl; /*Llamada*/
return 0;
}
int Mayor (int a, int b) /* Definición de función Mayor */
{ if (a >=b) return a;
else return b; }
Por ejemplo:
int EnteroGlobal; // Declaración de una variable global
int Funcion1(int a); // Declaración de un prototipo
int main()
{
int EnteroLocal; // Declaración de una variable local de main:
EnteroLocal = Funcion1(10); // Acceso a una variable local:
EnteroGlobal = Funcion1(EnteroLocal); // Acceso a una valiable global:
return 0;}
int Funcion1(int a)
{ char CaracterLocal;
// Variable local de funcion1
// Desde aquí podemos acceder a EnteroGlobal, y también //a CaracterLocal
pero no a EnteroLocal
if (EnteroGlobal != 0)
return a //EnteroGlobal;
else
return 0;}
114
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.9.5. Ejercicios
1-) En el ejemplo, ¿qué ámbito tiene cada una de las variables? Marcar la opción
correcta
float s,i;
int main()
{
int x;
x=10;
for(int i=0; i<x; i++)
Mostrar(i);
i = 0.0;
while(x>0) {
i *= 10.3;
x--;
}
return 0;
115
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
local en bucle
d) La variable de tipo int x tiene ámbito
global
local en main
local en bucle
4-) Identifique las siguientes partes de las funciones. Marcar la/s opción/es
correcta/s.
Encabezado o Definición de la Función.
Cuerpo de la Función ó Enunciados de la Función.
Prototipo de la Función.
Argumentos de la Función.
Tipos de Argumentos de la Función.
Tipo de Argumento retornado por la Función.
5-) Escribir el código fuente de un programa que contenga una función que reciba un entero y
devuelva P si es POSITIVO y N si es NEGATIVO.
6-) Escribir el código fuente de un programa que desde main se llame a una función que recibe
dos argumentos enteros y devuelve un valor booleano, siendo TRUE si el mayor argumento es
divisible por el menor o FALSE si el mayor argumento no es divisible por el mayor.
7-) Escribir el código fuente de un programa que desde main se llame a una función que recibe
como argumento dos números reales, y retorna el menor que es mostrado en main.
8-) Escribir el código fuente de un programa que desde main se llame a una función pasando
como argumento un valor entero, esta función calcula los coeficientes de la serie de “Fibonacci”
hasta el entero pasado; y retorna la suma de los términos que se muestra desde main.
Ej: N=6 , la serie será = 0 – 1 – 1 – 2 – 3 – 5. La suma mostrada en main será S=12.
116
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
9-) Escribir el código fuente de un programa que permita definir tres funciones, una que
detecta si un carácter es una Vocal , otra que detecta si es Consonante y otra si es un Dígito, todas
devuelven el valor TRUE o FALSE y desde main se debe indicar si el tipo de char ingresado es :
vocal, consonante ó dígito.
Se puede suponer en principio para simplificar que los caracteres ingresados son TODO
minúsculas. Sugerencia: Mirar la tabla de caracteres ASCII.
10-) Escribir el código fuente de un programa que desde main se llame a una función la cual
recibe un par de números y retorna el resto de la división del mayor dividido el menor.
Sugerencia: usar el operador () ? : .
11-) Escribir el código fuente de un programa que desde main se llame a una función que
recibe como argumento un número entero, calcula y muestra desde la misma función los divisores
de ese número retornando un valor TRUE, si el número no es primo y FALSE si es primo.
12-) Se dice que un número entero es perfecto, si la suma de sus divisores incluyendo el 1 es
igual a sí mismo.
Ej: 6 = 3 + 2+ 1 , ver que 3,2,1 son divisores de 6.
Escribir una función que reciba un entero, y retorne TRUE para el caso de que el número sea
un “entero perfecto”.
13-) Escribir el código fuente de un programa que desde main se llame a una función menú
que no recibe ningún argumento y que retorne la opción de menú elegida, ésta se mostrará desde
main. Los ítems del menú deberían ser por ej. 1,2,3,4 y 5 para salir, o A,B,.. y F para Finalizar.
Controlar que sólo salga con la opción indicada.
14-) Escribir el código fuente de un programa que desde main se llame a una función menú
(similar al ejercicio 13), las opciones del menú serán:
1: Cargar un vector y luego presentar nuevamente el menú, (todas las funciones refieren al
vector)
2: Ordenar.
3:Buscar el mayor.
4:Calcular el promedio.
5:Salir.
Cada uno de estos puntos se debe realizar con una función. No usar variables globales. Usar
pasaje de valores a funciones por referencia para el caso de ordenar!!.
15-) Escribir el código fuente de un programa que desde main llame a una función la cual itera
(sin hacer nada) mientras se introduzca la letra “s” y se detiene cuando se introduce la letra “n”.
Ver que s y n son MINUSCULAS!!.
16-) Escribir el código fuente de un programa que desde main copie usado la función “strcpy”
de un string.
17-) Escriba una función que reciba la cantidad de elementos a acumular y retorne el valor
acumulado.
Ej: recibe 4, y luego se ingresan, dentro de la función cuatro números, 1, 3, 3, 2 deberá
retornar a main el total acumulado=9.
18-) Escriba una función que reciba la cantidad de elementos a promediar y retorne el
promedio. Ej: recibe 3, luego se ingresan, dentro de la función tres valores, 10, 5, 15 y deberá
retornar a main el promedio=10.
117
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
4.10. ARREGLOS
Un arreglo es un conjunto de elementos del mismo tipo agrupados en una sola variable. Es una
estructura de datos en la que se almacena una colección de datos del mismo tipo
En este caso los corchetes no indican un valor opcional, sino que son realmente corchetes, por eso están
en negrita.
Durante el tratamiento de variables tipo cadena tener en cuenta que:
Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una
posición para almacenar el carácter nulo.
Por ejemplo:
Si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como:
char Saludo[5]; // Cuatro caracteres para "HOLA" y uno para '\000'.
Es posible hacer referencia a cada uno de los caracteres individuales que componen la cadena,
simplemente indicando la posición.
Por ejemplo:
Saludo[2]; //Hace referencia al 3º carácter de la cadena, la 'L'.
Los índices tomarán valores empezando en el cero.
Por ejemplo:
Saludo[0]; //Hace referencia al 1º carácter de la cadena, la 'H'.
La asignación directa sólo está permitida cuando se hace junto con la declaración.
118
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
char Saludo[5];
Saludo = "HOLA"
Esta modalidad producirá un error en el compilador, ya que una cadena definida de este modo se
considera una constante, como veremos en el capítulo de "arrays" o arreglos.
O bien:
char Saludo[5] = "HOLA";
4.10.2. Arreglos
Empezaremos con los tipos de datos estructurados, los arrays.
Los arrays o arreglos permiten agrupar datos usando un mismo identificador.
Todos los elementos de un array son del mismo tipo, y para acceder a cada elemento se usan
subíndices.
Sintaxis:
<tipo> <identificador>[<núm_elemen>][[<núm_elemen>]...];
Los valores para el número de elementos deben ser constantes, y se pueden usar tantas dimensiones
como queramos, limitado sólo por la memoria disponible.
Cuando sólo se usa una dimensión se suele hablar de listas o vectores, cuando se usan dos, de tablas o
matrices.
Ahora podemos ver que las cadenas de caracteres son un tipo especial de arrays. Se trata en realidad de
arrays de una dimensión de objetos de tipo char.
Los subíndices son enteros, y pueden tomar valores desde 0 hasta <número de elementos>-1.
Esto es muy importante, y hay que tener mucho cuidado.
Por ejemplo:
int Vector[10];
Creará un array con 10 elementos enteros; podremos acceder a los elementos Vector[0] a Vector[9].
119
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Por ejemplo:
int Tabla[10][10];
char DimensionN[4][15][6][8][11];
...
DimensionN[3][11][0][4][6] = DimensionN[0][12][5][3][1];
Tabla[0][0] += Tabla[9][9];
Por ejemplo:
float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};
float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};
int N[] = {1, 2, 3, 6};
int M[][3] = { 213, 32, 32, 32, 43, 32, 3, 43, 21};
char Mensaje[] = "Error de lectura";
char Saludo[] = {'H', 'o', 'l', 'a', 0};
En estos casos no es obligatorio especificar el tamaño para la primera dimensión, como ocurre en los
ejemplos de las líneas 2, 3, 4, 5 y 6.
En estos casos la dimensión que queda indefinida se calcula a partir del número de elementos en la lista
de valores iniciales.
En el caso 2, el número de elementos es 10, ya que hay diez valores en la lista.
En el caso 3, será 4.
En el caso 4, será 3, ya que hay 9 valores, y la segunda dimensión es 3: 9/3=3.
Y en el caso 5, el número de elementos es 17, 16 caracteres más el cero de fin de cadena.
Por ejemplo:
#include <iostream>
using namespace std;
int main()
{
int array[231];
cout << "Número de elementos: " << sizeof(array)/sizeof(int) << endl;
120
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Empezamos comparando 15 y 3. Como están mal ordenados los intercambiamos, la lista quedará:
3 | 15 | 8 | 6 |18 | 1
Empezamos la segunda pasada, pero ahora no es necesario recorrer toda la lista. Si observas verás que
el último elemento está bien ordenado, siempre será el mayor, por lo tanto no será necesario incluirlo en la
segunda pasada.
Ahora es el 15 el que ocupa su posición final, la penúltima, por lo tanto no será necesario que entre en
las comparaciones para la siguiente pasada.
Las sucesivas pasadas dejarán la lista así:
3ª) 3 | 6 | 1| 8 | 15 | 18
4ª) 3 |1 | 6 | 8 | 15 | 18
5ª) 1 | 3 | 6| 8 | 15 | 18
121
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
{
int l = 0;
while(cad[l]) l++;
return l;
}
Sí No
b) int LongitudCadena (char cad[])
{
int l;
for(l = 0; cad[l] != 0; l++);
return l;
}
Sí No
1-) Hacer un programa que lea diez valores enteros en un array desde el teclado y calcule y muestre: la
suma, el valor promedio, el mayor y el menor.
2-) Hacer un programa que lea diez valores enteros en un array y los muestre en pantalla. Después
ordenar de menor a mayor y vuelva a mostrar. Finalmente ordenar de mayor a menor y los muestre por
tercera vez. Para ordenar la lista usar una función que implemente el método de la burbuja y que tenga
como parámetro de entrada el tipo de ordenación, de mayor a menor o de menor a mayor. Para el array
usar una variable global.
3-) Hacer un programa que contenga una función con el prototipo bool Incrementa (char numero[10]);.
La función debe incrementar el número pasado como parámetro en una cadena de caracteres de 9
dígitos. Si la cadena no contiene un número, debe devolver “false”, en caso contrario debe devolver “true”, y
la cadena debe contener el número incrementado. Si el número es "999999999", debe devolver "0".
Cadenas con números de menos de 9 dígitos pueden contener ceros iniciales o no.
Ej: la función debe ser capaz de incrementar tanto la cadena "3423", como "00002323".
La función "main" llamará a la función Incrementar con diferentes cadenas.
4-) Hacer un programa que contenga una función con el prototipo bool Palindromo(char palabra[40]);.
La función debe devolver true si la palabra es un palíndromo, y false si no lo es.
Una palabra es un palíndromo si cuando se lee desde el final al principio es igual que leyendo desde el
principio, por ejemplo: "Otto", o con varias palabras "Anita lava la tina", "Dábale arroz a la zorra el abad",
“La ruta nos aportó otro paso natural”.
En estos casos debemos ignorar los acentos y los espacios, pero no es necesario que tu función haga
eso, bastará con probar cadenas como "anitalavalatina", o "dabalearrozalazorraelabad".
La función no debe hacer distinciones entre mayúsculas y minúsculas.
5-) Escribir el código fuente de un programa que permita la carga de un string definido de no mas de 20
caracteres e indique cuántos caracteres se tipearon.
122
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Alternativa 1) suponer que no hay espacios en blanco, por ej. si se tipea asfhe<Enter>, debería indicar 5
caracteres.
Alternativa 2) debería contar la cantidad caracteres ingresados incluidos los espacio en blanco, por ej.
Juan Jorge<Enter>, debería indicar 10 caracteres.
Resolución Alternativa 2:
#include <iostream>
using namespace std;
int main()
{
int i=1;
char mensaje [21];
cout << " Ingrese un texto de no mas de 20 caracteres" << endl;
cin.getline (mensaje,21);
while (mensaje[i]!=0)i++;
cout <<endl <<"El arreglo tiene: " << i << " caracteres";
return 0;
}
6-) Escribir un código de programa que llame desde main a una función pasando por referencia el
nombre de un array y desde esa función se mostrará por pantalla el array escrito de atrás para adelante.
Ej: se ingresa desde main Juan Pablo y desde la función se deberá mostrar: olbaP nauJ.
#include <iostream>
using namespace std;
int main()
{
int i=1;
char mensaje [21];
cout << " Ingrese un texto de no mas de 20 caracteres" << endl;
cin.getline (mensaje,21);
while (mensaje[i]!=0)i++;
cout <<endl <<"El arreglo tiene: " << i << " caracteres"<< endl;
while((i+1)!=0){cout << mensaje[i] ;--i;}
cout << endl;
return 0;
}
123
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1 2 3
2 7 5
3 5 4
18-) Escribir el código que permita cargar un arreglo de 3 x 3, y que luego cargue un vector columna
con el promedio de cada fila.
19-) Escribir el código que permita cargar dos arreglos de 3 x 3 de nombre MatA y MatB y, que luego,
presente un menú, como el siguiente:
1) Suma las Matrices MatA+MatB.
2) Resta las Matrices MatA-Matb.
3) Cargar MatA.
4) Cargar MatB.
5) Salir.
124
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo N° 1:
Diseñe un programa que permita el ingreso de los lados de un rectángulo y calcule y muestre el área del
mismo.
INICIO Inicio el programa.
a = 0 ; b =0
Declaro e inicializo las variables a, b y Area.
Area = 0
Finalizo el programa.
FIN
1- #include <iostream> // esta línea carga una librería, que es necesaria porque las
// declaraciones que permiten el acceso a "cout" y "cin" (línea 7 y 8) están en una librería externa.
2- using namespace std;
3- int main() /* esta es la función principal, todos los comandos que estén
dentro de las llaves se van a ejecutar (de la línea 4 a la 14) */
4- {
5- int a=0; // Se "crean" (declaran) las variables "enteras" llamadas
6- int b=0; /* a, b y Area, que se van a utilizar en el programa y se las */
7- int Area=0; // inicializa con el valor cero
8- cout << "ingrese el valor del ancho de un rectángulo: ";
/* La función cout de la línea 8 muestra en pantalla el texto que esta dentro de las comillas */
9- cin >> a; /* espera que el usuario cargue por teclado un número y lo */
/* guarda en la variable a */
10- cout << endl << "ingrese el valor del largo de un rectángulo: ";
/* Un método muy útil para cout es "endl", que hará que la siguiente salida se imprima en una nueva línea.
*/
11- cin >> b; // carga por teclado un valor y lo guarda en la variable b
12- Area = a*b; // esto es un proceso, multiplica a*b y lo guarda en Area
13- cout << endl << "el area del rectangulo es: " << Area << " m²"; /* muestra en pantalla
el contenido de la variable Area */
14- return (0); } // valor de retorno de la función main al sistema.
125
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 1:
Modificar el programa del ejemplo 1 para que se puede ingresar un número por teclado, que utilizará
una variable llamada numero, y muestre el cuadrado del mismo. Sugerencia: no borre los enunciados del
programa que no necesita, use doble barra para deshabilitarlos.
Ejercicio Nº 2:
Modificar nuevamente el programa del ejemplo 1 para que permita ingresar tres números por teclado y
muestre la suma de los mismos. Sugerencia: usar cuatro variables enteras.
Ejercicio Nº 3:
Convertir una medida en cm., que se ingresa por teclado, a su equivalente en pies, y mostrar el
resultado de la conversión.
Nota: el programa planteado mas abajo contiene errores y faltan sentencias, deberá encontrarlos y
corregirlos. Sugerencia: copie el programa sin modificarlo, compile para ver que tipo de errores genera el
compilador y corrijalos de uno en uno.
1-
2- int main();
3-
4- float Centimetro, float Pulg;
5- cout >> “ingrese una medida en cm:
6- cin >> centimetro ;
7- pulg = centimetro x 0.3937;
8- cout >> " La medida en pulgadas vale: " << pulg;
9-
Ejercicio Nº 4:
Se ingresa por teclado el radio de una circunferencia y se debe calcular y mostrar en pantalla el
perímetro y la superficie de la misma. Sugerencia: usar variables de tipo flotante.
Ejercicio Nº 5:
Para un algoritmo, dados los catetos de un triángulo rectángulo, calcular e imprimir su hipotenusa.
Fórmula de cálculo: h² = a² + b² , donde a y b son los catetos, h es la hipotenusa.
Para calcular la raíz cuadrada agregue la librería “cmath” y utilice la función “sqrt(vari)” que permite
calcular la raíz cuadrada de una variable (en este caso llamada “vari”).
Ejercicio Nº 6:
Un pintor sabe que con una pintura determinada puede pintar 3,6 metros cuadrados con cada medio
litro. Sabiendo la altura y el largo de la pared a pintar , realizar un algoritmo que informe cuantos litros de
pintura necesitará para la pared en cuestión. Los datos de la pared se ingresarán en metros.
Ejercicio Nº 7:
Una bomba de agua puede extraer 800 litros de por hora, realizar un algoritmo que calcule el tiempo
necesario para extraer todo el líquido de un tanque del que se saben sus medidas altura y radio. Estas se
ingresarán por teclado.
Ejercicio Nº 8:
Convertir una temperatura dada en la escala Celsius e imprímase en su equivalente Fahrenheit. (°F =
(9/5) °C + 32).
Ejercicio Nº 9:
Diseñe un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes.
Considere que: 1 kilobyte = 1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
Ejercicio Nº 10:
Determinar la velocidad de un automóvil que se desplaza a una velocidad constante si se conoce la
distancia recorrida y el tiempo utilizado, ambos datos se ingresan por teclado y el algoritmo deberá mostrar
la velocidad.
126
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1- #include <iostream>
2- using namespace std;
3- int main() /* función principal, se ejecuta todo lo que esta dentro de las llaves */
4- {
5- int valor; /*Se declara una variable de tipo entero llamada "valor" que se va a utilizar
para guardar el numero ingresado por teclado */
6- cout << "Ingrese un numero: ";
7- cin >> valor;
9- if(valor<0)
10- cout << endl << "El numero es negativo";
11- if(valor==0)
12- {
13- cout << endl << "El numero es cero";
14- cout << endl << "El numero vale cero";
15- }
16- cin.get(); // Otro método para "cin" es get(), que sirve para leer un carácter, pero que nos
17- cin.get(); // puede servir para detener la ejecución de un programa.
18- return (0);
19- }
INICIO
El número es
SI
Valor > 0 positivo
Ingrese un número
NO
SI El número es
valor Valor < 0 negativo
NO
El número es
Valor = 0
SI cero
NO
El número
vale cero
FIN
127
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 2:
Identificar los cambios respecto del ejemplo 1 y analizar de que manera afecta al programa.
1- #include <iostream>
2- using namespace std;
3- int main()
4- {
5- int valor;
9- else
10- {
11- if (valor<0)
12- cout << endl << "El numero es negativo";
13- else
14- cout << endl << "El numero es cero";
15- }
16- return (0);
17- }
INICIO
SI El número es
Ingrese un Valor > positivo
número 0
NO
valor
SI El número es
Valor < negativo
0
NO
El número es
cero
FIN
128
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 3:
Identificar los cambios respecto del ejemplo 1 y del ejemplo 2. Analizar de que manera afecta al
programa y cual de los tres es el más óptimo para resolver este problema en particular.
1- #include <iostream>
2- using namespace std;
3- int main()
4- {
5- int valor;
9- else if (valor<0)
10- cout << endl << "El numero es negativo";
11- else
12- cout << endl << "El numero es cero";
INICIO
SI El número es
Ingrese un Valor >
positivo
número 0
NO
valor
SI El número es
Valor < negativo
0
NO
El número es
cero
FIN
Recuerde que aunque en los diagrama de flujo aquí presentados no aparece la declaración de las
variables (por una razón de espacio), todas las variables que utilizara el programa deben declararse y
eventualmente inicializarse.
129
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 4:
Crear un programa para que, mediante un menú (implementando una estructura del tipo switch),
permita al usuario realizar la suma, la resta o el producto de dos números ingresados previamente por
teclado. Al final mostrar la operación realizada (“suma”, “resta” ó “producto”), y el resultado de la operación.
1- #include<iostream>
2- using namespace std;
3- int main()
4- {
5- int a=0,b=0,resul=0;
6- char selec; /*se debe declarar una variable de tipo carácter al comienzo del programa para
utilizarla con la función switch*/
7- cout <<"Ingrese el primer nro: ";
8- cin >> a;
9- cout << "Ingrese el segundo nro: ";
10- cin >> b;
17- switch(selec)
18- {
19- case 'a': //se indica entre comillas los valores de salida ya que la variable selec es de tipo
20- resul = a+b; // caracter.
21- cout << "El resultado de la suma es: "<< resul;
22- break;
130
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ingrese el
primer numero
selec
a
?
'a' 'b' 'c' 'd'
Ingrese el segundo
numero
FIN
selec
Ejercicio Nº 1:
Ingresar un número C y determinar si pertenece al intervalo cerrado [A,B] con A y B ingresados por
teclado.
Ejercicio Nº 2:
Escribir un programa fuente en C, utilizando la sentencia IF, que permita ingresar por teclado los
límites de un intervalo cerrado A y B. Deberá asegurarse de que A sea menor que B, en caso contrario,
intercambiar los valores. Luego, deberá ingresar un número C.
Finalmente, mostrar por pantalla uno de los siguientes mensajes, reemplazando, por el valor, donde
aparece el nombre de la variable:
- “C es menor que A.”
- “C pertenece al intervalo A, B”
- “C es mayor que B.”
131
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 3:
Se leen dos valores enteros A, B. Si A es mayor que B se realiza la suma de ambos, caso contrario, se
hace el producto y se muestra el resultado en pantalla ademas de la operación realizada (“suma” ó
“producto”).
Ejercicio Nº 4:
Diseñe un programa que:
- Permita la carga por teclado de los lados de un rectángulo y el radio de un círculo.
- Determine el área de cada figura.
- Muestre en pantalla el área mayor y a que figura pertenece.
Ejercicio Nº 5:
Modifique el programa del ejercicio anterior para que:
- Utilice la directiva define para utilizar el valor de en el calculo del área de la circunferencia.
(#define PI 3.141592).
- Considere el caso de que las dos áreas sean iguales, y en tal caso, que muestre un mensaje en la
pantalla indicándolo y el valor del área. (ingrese Radio = 1, Lado1 = 1, Lado2 = 3.141592, para comprobar
el caso de que las dos áreas calculadas sean iguales).
Ejercicio Nº 6:
Escribir un programa a modo de calculadora que permita mostrar al usuario un menú con las siguientes
opciones:
1- Operación suma.
2- Operación resta.
3- Operación producto.
4- Operación división.
5- Raíz cuadrada.
6- Operación Potencia.
7- Logaritmo natural.
8- Salir del programa.
Luego mediante la función SWITCH, deberá realizar la opción seleccionada, teniendo en cuenta las
siguientes consideraciones:
Para guardar el resultado de la división de dos enteros se necesita una variable de tipo flotante.
Para obtener los resultados de las siguientes operaciones puede recurrir a las funciones a las que se
hace referencia:
Raiz cuadrada sqrt(x)
Operacion Potencia pow(x,y)
Logaritmo Natural log(x)
Ejercicio Nº 7:
Escribir un algoritmo que dado un importe de dinero, calcule e informe cuánto corresponde pagar de
impuesto, en cuántas cuotas y el valor de las mismas. Tener en cuenta los siguientes datos:
El IMPUESTO es el 10% del importe dado.
Si el importe es mayor que $500 y menor o igual que $1000, se paga en dos cuotas.
Si el importe es mayor a $1000 en tres cuotas.
132
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 8:
Diseñe un algoritmo que permita ingresar dos valores X e Y y determinar que porcentaje es X de Y.
Ejercicio Nº 9:
Escribir un algoritmo que permita ingresar tres números distintos entre si e imprima el mayor de ellos.
INICIO
Ejemplo Nº 1:
3- int main()
4- { a
5- int a,b,cont,PRO=0;
6- cout << "Ingrese un numero: ";
7- cin >> a; Ingrese el
8- cout << endl << "Ingrese el segundo numero: "; segundo
9- cin >> b; numero
13- }
cont = 1
cont = cont+1
SI
PRO=PRO+b cont<=a
NO
El producto
de a por b
vale PRO
FIN
133
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 1:
Escriba un algoritmo que permita el ingreso de dos números enteros, llamados “base” y “exponente”,
y calcule la potencia por multiplicaciones sucesivas.
Hacer las consideraciones necesarias para que funcione. Tener en cuenta casos particulares. (Ejemplo:
25= 2x2x2x2x2).
Ejemplo Nº 2:
Escribir un algoritmo que permita ingresar un número entero del 1 al 10 e imprima la tabla de
multiplicar del número ingresado.
INICIO
1- #include <iostream>
2- using namespace std; i; z; tabla;
3- int main()
4- {
Ingrese la tabla
5- int tabla,i,z;
6- cout << "Ingrese la tabla que desea calcular: "; que desea
7- cin >> tabla; calcular
8- for(i=0;i<=10;i++)
9- {
10- z=tabla*i; tabla
11- cout << endl << z;
12- }
i=0
13- }
i = i+1
SI
z=tabla*i i<=10
NO
FIN
Ejercicio Nº 2:
Modificar el programa del ejemplo anterior para que imprima las tablas de multiplicar desde la
seleccionada (mediante el ingreso de un número entero), hasta la del 10 inclusive.
Se debe verificar que el numero ingresado este comprendido en el intervalo del 1 al 10.
Nota: para este ejercicio necesitara dos ciclos FOR, uno anidado dentro del otro.
134
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 3:
Realizar un algoritmo que permita acumular números que se ingresan por teclado hasta que la suma de
los mismos sea inmediatamente superior a 1000, y muestre el resultado en pantalla. Se deberá poder
ingresar números decimales (“float”).
INICIO
1- #include <iostream>
2- using namespace std;
suma=0; num;
3- int main()
4- {
Ingrese los
5- float num, suma=0; números a
6- cout << "Ingrese los números a sumar: ";
sumar
7- while (suma <= 1000)
8- {
9- cin >> num;
10- suma=suma+num;
11- } suma=suma+num
12- cout << endl << "La suma es: " << suma;
13- } SI
num suma<=1000
NO
La suma
es “suma”
FIN
Ejercicio Nº 3:
Modificar el programa anterior para que muestre el último resultado de la suma antes de sobrepasar el
valor de 1000. (Ejemplo: 400 + 500 + 200 → debería mostrar: 900).
Ejercicio N° 4:
Escribir un programa para que permita sumar los números positivos que se ingresan por teclado hasta
que se ingresa el -1, que es la condición de finalización del programa, y muestre el resultado de la suma.
Ejemplo N° 4:
Escribir un programa para que permita sumar los números enteros que se ingresan por teclado hasta
que se ingresa el 0, que es la condición de finalización del programa, y muestre el resultado de la suma.
135
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
3- int main()
suma=0;
4- {
num;
5- float num, suma=0;
6- cout << "Ingrese los números a sumar: "; Ingrese los
7- do
números a
8- { sumar
9- cin >> num;
10- suma=suma+num;
11- } while (num != 0);
12- cout << endl << "La suma es: " << suma; num
13- } suma=suma+nu
m
SI
num != 0
NO
La suma
es “suma”
FIN
Véase en este caso la utilidad del ciclo do...while. Como la variable de entrada es la que se chequea
en cada ciclo para la condición de salida, y en el primer ciclo no se puede hacerlo sin antes realizar el
ingreso de un valor, el ciclo do...while reordena la secuencia de pasos dentro del bucle del while, con lo que
podemos primero ingresar un valor y después chequear la condición de salida.
Ejercicio Nº 5:
Leer 10 valores enteros. Calcular e informar:
La suma de los valores positivos.
El producto de los valores negativos. (Ignorar los valores nulos)
Ejercicio Nº 6:
Realizar un algoritmo que permita el ingreso de números positivos hasta que se ingresa el cero, y
muestre el mayor de los números ingresados.
Ejercicio Nº 7:
Realizar un algoritmo que muestre en pantalla los términos de la serie de fibonachi. Se deberá ingresar
un número entero que será la cantidad de términos de la serie a mostrar.
136
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
El número ingresado deberá ser mayor o igual a 1 y menor o igual a 50, si no cumple esa condición se
deberá pedir el ingreso de un nuevo valor.
Ejercicio Nº 8:
Diseñe un algoritmo para calcular el resultado de la suma de los 100 primeros términos de la siguiente
serie: S = 1 – 1/3 + 1/9 – 1/27 + 1/81
Ejercicio Nº 9:
Escribir un programa que permita ingresar dos valores A y B que determinan un intervalo, luego ir
acumulando los valores que se ingresan a continuación siempre y cuando estos pertenezcan al intervalo. El
programa finaliza cuando se ingresan tres valores fuera del intervalo.
Ejercicio Nº 10:
Escribir un programa que permita el ingreso de números que estén comprendidos en el intervalo 0 y 99
inclusive ([0,99]), los números mayores a 99 deben ser ignorados. Se asegura al menos el ingreso de un (1)
número dentro del intervalo. La carga finaliza al ingresar un numero negativo. Sobre los números ingresados
el programa deberá mostrar el mayor valor ingresado, el menor valor ingresado, el promedio y la cantidad
de números ingresados (se consideran solo aquellos que se encuentran dentro del intervalo).
Ejemplo Nº 1:
Escribir un algoritmo que permita la carga de un vector “Vec1” de 10 elementos.
Nota: Considerar que los elementos del vector son números enteros.
3- int main()
4- { Vec1[10]
5- int Vec1[10]; // Declaración del arreglo Vec1 de una
// dimensión y diez elementos enteros.
6- int i;
i=0
8- for(i=0;i<10;i++)
9- {
10- cout << "ingrese el elemento " << i << ":";
11- cin >> Vec1[i];
12- }
i = i+1
13- return (0);
14- }
Vec1[i
]
Ingrese el SI
elemento i: i < 10
NO
FIN
137
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 1:
Modificar el programa anterior para que muestre los elementos del vector una vez finalizada la carga.
Ejercicio Nº 2:
Escribir un algoritmo que permita la carga de un vector “Vector2” de 10 elementos y busque cuantas
veces aparece un numero N en el mismo. El numero N a buscar se ingresara por teclado una vez finalizada
la carga del vector.
Nota: no modificar el vector.
Ejercicio Nº 3:
Modificar el programa del ejercicio 1 para que permita buscar el elemento mayor, el menor y calcule el
promedio de los elementos.
Observación: Nótese la diferencia entre el método de búsqueda del elemento mayor de un vector que se
encuentra cargado y la búsqueda del elemento mayor a medida que se van ingresando una serie de
escalares por teclado.
Ejemplo Nº 2:
Realizar un algoritmo que permita la carga de un vector “Vect3” de N elementos y ordene el mismo de
mayor a menor.
Razonar acerca de la eficiencia de los cuatro métodos planteados y en que condiciones.
Nota: el numero N, que es la cantidad de elementos del vector, se define como una constante al inicio
del programa.
1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5- {
6- int i, bandera, temp;
8- int Vect3[N];
9- for(i=0;i<N;i++)
10- {
11- cout << "ingrese el elemento " << i << ":";
12- cin >> Vect3[i];
13- }
14- do
15- {
16- bandera = 0;
17- for(i=0;i<N-1;i++)
18- {
19- if(Vect3[i] < Vect3[i+1])
20- {
21- temp = Vect3[i];
22- Vect3[i] = Vect3[i+1];
23- Vect3[i+1]=temp;
24- bandera = 1;
25- }
26- }
27- }while(bandera!=0);
28- return(0);
29- }
138
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Vec3[N]
i=0
i = i+1
Vect3[i]
Ingrese el elemento SI
i: i<10
NO
bandera=0
i=0
i = i+1 SI
i < N-1
NO
NO Vect3[i]
<
Vect3[i+1]
SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp
bandera=1
SI
bandera≠0
NO
FIN
139
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5- {
6- int i, temp;
8- int Vect3[N];
9- for(i=0;i<N;i++)
10- {
11- cout << "ingrese el elemento " << i << ":";
12- cin >> Vect3[i];
13- }
14- for(i=0;i<N-1;i++)
15- {
16- if(Vect3[i] < Vect3[i+1])
17- {
18- temp = Vect3[i];
19- Vect3[i] = Vect3[i+1];
20- Vect3[i+1]=temp;
21- i = -1; // se debe reinicializar en -1 el contador debido al
22- } // incremento automático del bucle for.
23- }
24- return(0);
25- }
140
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
INICIO
Vec3[N]
i=0
i = i+1
Vect3[i]
Ingrese el SI
elemento i: i < 10
NO
i=0
i = i+1 SI
i < N-1
NO
NO Vect3[i]
<
Vect3[i+1]
SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp
i = -1
FIN
141
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5- {
6- int i, j, temp;
8- int Vect3[N];
9- for(i=0;i<N;i++)
10- {
11- cout << "ingrese el elemento " << i << ":";
12- cin >> Vect3[i];
13- }
16- for(j=0;j<N;j++)
{
17- for(i=0;i<N-1;i++)
18- {
19- if(Vect3[i] < Vect3[i+1])
20- {
21- temp = Vect3[i];
22- Vect3[i] = Vect3[i+1];
23- Vect3[i+1]=temp;
25- }
26- }
27- }
28- return(0);
29- }
142
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Vec3[N]
i=0
i = i+1
Vect3[i]
Ingrese el SI
elemento i: i<10
NO
j=0
i=0
i = i+1 SI
i<N-1
NO
NO
Vect3[i]
<
Vect3[i+1]
SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp
SI
j = j+1 j<N
NO
FIN
143
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5- {
6- int i, j, temp;
8- int Vect3[N];
9- for(i=0;i<N;i++)
10- {
11- cout << "ingrese el elemento " << i << ":";
12- cin >> Vect3[i];
13- }
14- for(j=0;j<N-1;j++)
15- {
17- for(i=j+1;i<N;i++)
18- {
19- if(Vect3[j] < Vect3[i])
20- {
21- temp = Vect3[i];
22- Vect3[i] = Vect3[j];
23- Vect3[j]=temp;
25- }
26- }
27- }
28- return(0);
29- }
144
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Vec3[N]
i=0
i = i+1
Vect3[i]
Ingrese el SI
elemento i: i<10
NO
j=0
i = j+1
i = i+1 SI
i<N
NO
NO Vect3[j]
<
Vect3[i]
SI
temp=Vect3[i]
Vect3[i]=Vect3[j]
Vect3[j]=temp
SI
j = j+1 j < N-1
NO
FIN
145
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 3:
Realizar un algoritmo que permita la carga (por filas) de una matriz, llamada “matris”, de “filas x
columnas” elementos y ordene los elementos de cada fila de menor a mayor.
Observación: el ordenamiento de una sola fila de una matriz es muy similar al ordenamiento de un
vector. Utilice como base del código alguno de los desarrollados en el ejemplo Nº 2.
INICIO
matris [filas][columnas]
F =0
NO
F < filas
SI
1
C =0
SI
C < columnas
Ingrese el
NO
elemento (F,C):
matris [F][C]
F = F+1
C = C+1
146
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Bandera = 0
F =0
NO
F < filas
SI
C =0
SI
C < columnas-
1
NO
NO matris[F][C] <
matris[F][C+1]
F = F+1
SI
temp = matris[F][C]
matris[F][C] =
matris[F][C+1]
matris[F][C+1] =temp
bandera = 1
C = C+1
SI
Bandera
!= 0
FIN NO
147
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
1- #include <iostream>
2- using namespace std;
3- #define filas 4
4- #define columnas 4
5- int main()
6- {
7- int F, C, temp;
8- char bandera;
9- int matris [filas] [columnas]; // declaración del arreglo en base a las etiquetas “filas” y
// “columnas”.
10- for(F=0;F<filas;F++)
11- {
12- for(C=0;C<columnas;C++)
13- {
14- cout << "ingrese el elemento " << "(" << F << "," << C << ")";
15- cin >> matris [F][C];
16- }
17- }
18- do
19- {
20- bandera = 0;
21- for(F=0;F<filas;F++)
22- {
23- for(C=0;C<columnas-1;C++)
24- {
25- if (matris[F][C] < matris[F][C+1])
26- {
27- temp = matris[F][C];
28- matris[F][C] = matris[F][C+1];
29- matris[F][C+1] =temp;
30- bandera = 1;
31- }
32- }
33- }
35- return(0);
36- }
Ejercicio Nº 4:
Modificar el programa del ejemplo 3 para que permita visualizar la matriz una vez que ha sido
ordenada.
Ejercicio Nº 5:
Modificar el programa del ejemplo 3 para utilizar alguno de los otros métodos posibles de
ordenamiento.
148
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 4:
Realizar un algoritmo que realice la carga (por columnas) de una matriz, llamada “MAT”, de “M x N”
elementos y que permita el ingreso de dos números que definen un intervalo cerrado, una vez ingresados, el
programa debe informar al usuario cuantos valores dentro de la matriz están dentro de ese intervalo.
1- #include <iostream>
2- using namespace std;
3- #define N 5
4- #define M 5
5- int main()
6- {
7- int f, c, temp, cantidad=0;
9- for(C=0;C<N;C++)
10- {
11- for(F=0;F<M;F++)
12- {
13- cout << "ingrese el elemento " << "(" << F << "," << C << ")";
14- cin >> matris [F][C];
15- }
16- }
19- if (a < b)
20- { temp = a;
21- a = b;
22- b = temp;
23- }
24- for(F=0;F<M;F++)
25- {
26- for(C=0;C<N;C++)
27- {
28- if ( matris[F][C] > a && matris[F][C] < b )
29- cantidad = cantidad + 1;
30- }
31- }
32- return(0);
33- }
149
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
a b
SI
a<b
temp = a NO
a=b
b = temp
F =0
NO
F <M
SI
C =0 FIN
SI
C<N
matris[F][C] > a NO
NO
&&
matris[F][C] < b
F = F+1
SI
cantidad = cantidad
+1
C = C+1
150
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 6:
Escribir un programa que posibilite al usuario la carga de una matriz de “M x N” elementos, luego se
ingresa un numero e informa cuantos valores mayores al numero ingresado existen en cada fila del arreglo.
Ejercicio Nº 7:
Hacer un programa que permita cargar una matriz de “M x N”, calcule y muestre el mayor y menor
elemento de cada columna.
Ejercicio Nº 8:
Cargar una matriz de “M x N” y generar:
1) Un vector con el contenido de la suma de cada fila.
2) Copiar todos los valores de una fila de la matriz, indicada por teclado, a un vector.
3) Un vector con la cantidad de elementos negativos de cada columna.
Ejercicio Nº 9:
Escribir un programa que encuentre la ubicación del mayor y el menor elemento de una matriz de “M x
N”. Mostrar la matriz completa y las ubicaciones encontradas con los valores respectivos.
Ejercicio Nº 10:
Realizar un diagrama de flujo que permita la carga de dos matrices y luego mediante la selección de
una opción permita el cálculo de la suma o el producto de las mismas y luego muestre la matriz resultado.
Ejemplo Nº 1:
Escribir el código fuente de un programa que tenga una función llamada “primera” que reciba un
número entero y devuelva a “main” el carácter “P” si el numero es positivo y “N” si es negativo.
1- #include<iostream>
2- using namespace std;
3- char primera (int num); /*prototipo de la función primera, la palabra “char” delante de la
función indica que esta devuelve un carácter al punto desde donde se hizo la llamada (en este caso el
carácter se devuelve a main) */
4- int main()
5- {
6- int numero;
7- char tipo;
8- cout << "ingrese un numero entero: ";
9- cin >> numero;
10- tipo = primera(numero); /* en esta instrucción se realizan dos acciones:
1- Se “llama” a la función primera y se le pasa el argumento numero.
2- Se recibe el valor de retorno y se lo asigna a la variable tipo. */
11- if (tipo=='P')
12- cout << “el numero ingresado es positivo”;
13- else if (tipo=='N')
14- cout << “el numero ingresado es negativo”;
15- else cout << “error”;
16- return(0);
17- }
151
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
/*nótese que el argumento pasado “numero”, es una variable local de la función main, y se recibe en la
función factorial como una variable local llamada “N”, esto se denomina pasaje por posición o referencia*/
25- return(tipo); // la instrucción return es la que permite definir el valor de retorno de la función, y
26- } // además podemos tener varios “return” definiendo mas de una salida de la función.
Ejercicio Nº 1:
Escribir el código fuente de un programa que desde main se llame a una función que recibe como
argumento dos números reales, y retorna el menor que es mostrado desde main.
Ejemplo Nº 2:
Escribir un programa que tenga una función denominada “factorial”, que recibe un numero N ingresado
por teclado y calcula el factorial de N, mostrando el resultado en pantalla. La función “main” debe verificar
que el numero N ingresado sea mayor o igual a cero.
1- #include<iostream>
2- using namespace std;
3- void factorial (int N); /*prototipo de la función factorial, la palabra void delante de la función indica
que esta no devuelve ningún valor*/
4- int main()
5- {
6- int numero;
8- do{
9- cout << "ingrese un numero para obtener su factorial: "<< endl;
10- cin >> numero;
11- } while(numero<0);
12- factorial(numero); /*llamado a la función factorial pasando el argumento numero*/
13- return(0);
14- }
15- void factorial (int N) /*definición de la función factorial*/
16- {
17- long int resul=1;
18- int i;
18- if(N==0)
19- cout <<"el factorial de 0 es: 1";
20- else if(N==1)
21- cout <<"el factorial de 1 es: 1";
152
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
22- else{
23- for(i=1;i<=N;i++)
24- resul=resul*i;
25- cout <<"el factorial de " << N << " es: "<< resul;
26- }
27- } /*ver que la función factorial no devuelve ningún valor, (no se utiliza el “return”)*/
Observación: nótese que se usan enteros largos, debido a los resultados que arroja un cálculo del
factorial.
Ejercicio Nº 2:
Crear un código fuente que permita al usuario ingresar un numero del 1 al 10 inclusive, y una vez
ingresado el numero se llame a una función denominada “tabla” que recibe el numero desde main y calcula-
muestra la tabla de multiplicar del numero ingresado.
Observaciones: cuando el usuario ingresa el numero se debe verificar que se encuentre dentro del
intervalo [1,10]; sino se debe pedir que se ingrese un nuevo valor.
Ejemplo Nº 3:
Escribir un programa que mediante una función “menu” permita seleccionar si desea calcular una serie
o salir del programa, cualquier otra tecla debe ser ignorada, y una vez mostrado el calculo de la serie se
vuelve a presentar el menú al usuario.
La función “serie” toma como argumento dos enteros a y b, y un flotante base, de modo que permita
calcular el resultado de:
k= b
∑ base− k
k=a
El cálculo es devuelto a main para su impresión en pantalla. (Para a=0, b=5 y base=1,23 la serie arroja
un resultado= )
1- #include<iostream>
2- #include<cmath>
3- using namespace std;
6- int main()
7- {
8- float resultado, base1;
9- int inferior, b;
10- char opcion;
153
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
23- }
24- cout << “el programa ha finalizado”;
25- return(0);
26- }
Ejercicio Nº 3:
Modificar el programa del ejemplo 3 para que la potencia se calcule utilizando multiplicaciones
sucesivas y NO utilizando la función pow().
Para ello dentro de la función serie() se deberá llamar a una función adicional llamada potencia() que
se tiene que definir adecuadamente, calcule la potencia por multiplicaciones sucesivas y retorne el resultado
a serie() para computar la sumatoria.
Ejercicio Nº 4:
Realizar un programa que permita el ingreso de un número entero positivo N y pase como argumento
ese número a una función denominada “serie”. La función serie calcula el resultado de: N+(N-
1)+………+2+1. El resultado de la serie debe ser devuelto a “main” para su impresión en pantalla.
Ejercicio Nº 5:
Escribir un programa que posibilite el ingreso de dos números enteros, X e Y, y calcule mediante una
función “potencia”, X elevado al numero Y. La función potencia realiza el calculo por multiplicaciones
sucesivas y retorna el valor del resultado.
Ejercicio Nº 6:
Realizar un programa que mediante un menú permita llamar a dos funciones distintas, una llamada
“potencia” y otra denominada “multiplicación”.
La función potencia no recibe ningún argumento y devuelve el valor de la potencia de dos números (el
ingreso de los dos números se hace dentro de la función potencia.)
La función multiplicación recibe dos argumentos y no devuelve nada, mostrando el resultado antes de
salir de la función.
El menú es otra función que no recibe nada y entrega el valor del menú.
154
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 7:
Escribir el código fuente de un programa que desde main se llame a una función pasando un
argumento, esta función calcula la serie de Fibonacci y retorna la suma de los términos que son mostrado
desde main.
Ejercicio Nº 8:
Escribir el código fuente de un programa que desde main se llame a una función menú que no reciba
ningún argumento y que retorne la opción de menú elegida , esa se mostrará desde main. Los items del
menú deberían ser por EJ. 1,2,3,4 para salir, o A,B, y F para Finalizar.-Controlar que solo se salga con la
opción indicada.-
Ejercicio Nº 9:
Realizar un programa que mediante una función menú permita llamar a 6 funciones distintas, una
llamada suma, resta, multiplicación, división, potencia y raíz cuadrada.
Al principio se ingresan por teclado 2 números, en las variables A y B, luego se presenta un menú y se
realizan la operación elegida.
La función suma recibe como argumentos los 2 números y devuelve el valor de la suma de los
A+B.
La función resta recibe como argumentos los 2 números y devuelve el valor de la suma de los A-
B.
La función producto recibe como argumentos los 2 números y devuelve el valor de la suma de
los A x B.
La función división recibe como argumentos los 2 números y devuelve el valor del cociente de A
y B. Se debe chequear dentro de la función cuando B=0, en caso de serlo, se deberá mostrar un
mensaje de error y abortar la operación.
La función potencia recibe como argumentos los 2 números y devuelve el valor de la potencia .
La función raíz cuadrada recibe como argumentos un números y devuelve el valor de . Se debe
chequear que B sea positivo para poder realizar la raíz.
Observación: tener en cuenta el tipo de variable que retornan las funciones, y en que casos no pueden
tomar valores nulos o negativos, por ejemplo: raíz de un numero negativo, o una división por cero. Para la
raíz se puede utilizar la función sqrt(), que se encuentra en la librería “cmath”.
Antes de comenzar:
Los ejercicios se deben realizar en forma secuencial, de esta manera se adquiere la destreza
necesaria para realizar ejercicios que integran el manejo simultaneo de arreglos y funciones.
Ejercicio Nº 1:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numérico y
luego imprimirlos en el orden inverso al ingresado.
155
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 2:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numérico,
duplicar sus valores y luego imprimirlos en el orden ingresado.
Ejercicio Nº 3:
Cargar un vector con las alturas de los N alumnos de un curso. Determinar la media y luego informar
cuantos alumnos son mas altos que la media y cuantos mas bajos.
Ejercicio Nº 4:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numérico y
luego imprimir:
La suma del contenido de los elementos.
La cantidad de elementos que sean mayores que 15.
Ejercicio Nº 5:
Realizar un algoritmo que vaya solicitando al usuario la posición dentro del vector que desea cargar y
luego el valor a cargar. Deberá indicar con un mensaje cuando ese elemento ya haya sido cargado y cuando
el vector esté completamente cargado.
Ejercicio Nº 6:
Diseñar un algoritmo que cargue un vector A con 10 elementos numéricos reales y con funciones
implementar las siguientes modificaciones:
Asignar el valor 11,2 a la tercer posición del vector A.
Asignar el valor del elemento de la octava posición del vector A en la segunda posición.
Intercambiar el elemento de la cuarta posición, con el de la novena posición del vector A.
Ejercicio Nº 7:
Hacer un programa que permita realizar la suma y el producto (elemento a elemento) de dos vectores
de 10 elementos. El usuario elige la operación a realizar y cada operación se realiza mediante una Función.
Ejercicio Nº 8:
Dado un vector de N elementos mediante una función cargar y con otras dos realizar cada operación las
siguientes búsquedas:
La cantidad de veces que se encuentra cada número dentro del Vector.
La cantidad de números distintos.
Ejercicio Nº 9:
Dado dos vectores A y B de N y M componentes, llamar a una función que permita ingresar datos a
través del teclado en dichos vectores, luego llamar una tercer función para que genere un nuevo vector que
contenga los componentes comunes de los dos anteriores e imprimirlo.
Ejercicio Nº 10:
En un colegio secundario, se maneja la información de las notas de un curso, con tres vectores de
longitud n, llamados trim1, trim2 y trim3. Los componentes de los vectores, son las notas del primero,
segundo y tercer trimestre respectivamente, para cada alumno. Generar un cuarto vector de nombre prom,
donde cada componente sea el promedio de los elementos homólogos de los tres vectores. Con una Función
llamada Mejor imprimir los tres mejores promedios del curso.
156
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 11:
Elaborar un programa en C que cargue números enteros en dos matrices de 5 x 5. Llamar a una función
que calcule en una tercera matriz la suma de los elementos de las dos anteriores. Al final imprimir las tres
matrices.
Ejercicio Nº 12:
Escribir un programa que permita la carga de una matriz de orden NxM ( usar define), luego presenta un
menú que llama a tres funciones:
Ordenar de menor a mayor la matriz por filas.
Ordenar de Mayor a menor la matriz por columnas.
Mostrar la matriz.
Ejercicio Nº 13:
Elaborar un algoritmo que lea números enteros en una matriz cuadrada de 10 x 10 elementos.
Implementar las siguientes funciones:
Una que calcule la suma de los elementos de la diagonal Principal.
Una que cargue los elementos mayores de cada columna en un Vector.
Una que cargue los elementos menores de cada fila en un vector.
Una que almacene los promedios de cada fila en un vector.
Cada una de estas funciones debe ser llamadas mediante un menú en el cual se selecciona la operación
a realizar.
Ejercicio Nº 14:
En una matriz se tienen las 7 notas correspondientes a cada una de las asignaturas de los 30 alumnos
de un curso. Elaborar un algoritmo que calcule e imprima las notas y el promedio de cada alumno. Cada
alumno cursa como mínimo 3 materias y como máximo las 7.
Ejercicio Nº 15:
En una agencia de quiniela se tienen los valores de los números ganadores y los premios de los mismos.
Escribir el Programa que determine cuales fueron las ocurrencias de cada número y que monto de dinero le
correspondió. Los datos están cargados en una matriz de 365 filas y dos columnas, una fila para cada día y
en cada columna el número ganador y en la siguiente el monto del premio.
Ejercicio Nº 16:
Hacer un programa que permita mostrar por pantalla el siguiente menú:
1. Factorial de un Nº F.
2. División de dos números A y B.
3. Salir.
El usuario debe poder ingresar la opción que quiere realizar.
- SOLO podrá Salir del programa si ingresa 3.
- Si elije 1 deberá pedir al usuario que ingrese un número luego deberá calcular el factorial y
mostrar el resultado. Debe tener en cuenta que: el nro. debe ser positivo (el programa deberá
pedir que ingrese el número hasta que ingrese un nro. Positivo).
- Si elije 2 deberá pedir al usuario que ingrese dos números A y B y calculará A dividido B. Debe
tener en cuenta que: el nro. B debe ser diferente de cero (el programa deberá pedir que ingrese
el número hasta que ingrese un nro. distinto de cero).
- Si ingresa cualquier otro nro. Deberá informar “ERROR” y mostrar nuevamente el menú. Cada
uno de los puntos 1,2 se deberán realizar llamando a una función y pasándole los argumentos
necesarios, por ejemplo para factorial un entero y para División dos flotantes ambas funciones
deberán retornar el valor que resulte de la operación.
157
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio Nº 17:
Definiendo una matriz Global llamada Mat de 3 x 3 , realizar el código en c++ que permita llamar a la
función menú la cual mostrará:
1. Carga de Matriz. (función carga, void , void).
2. Muestra fila ( función muestra, recibe int, retorna float)
3. Ordena fila ( función ordena , recibe int , retorna void)
4. Mayor que (función mayor que recibe un float y retorna un entero indicando cuantos valores de
la matriz son mayores que el flotante pasado.
F. Finaliza el programa.
En caso que se presione una tecla que no sea 1,2,3,4,F ó f se beberá mostrar un cartel "Tecla no válida"
y nuevamente volver al menú.
Ejemplos:
Ejemplo Nº 1:
/*Este Ejercicio permite comprender la equivalencia entre los valores decimales de los dígitos en Código
ASCII y el valor entero de un dígito*/
/*Utiliza la propiedad de que los dígitos en ASCII están en forma correlativa '0'=48; '1'=49 ;..
'8'=56;'9'=57*/
# include <iostream>
using namespace std;
int numero(char); //Prototipo
int main()
{ char ingreso;
cin >> ingreso; //ingreso el carácter
switch(numero(ingreso)) //llamo a la función
{
case 0: cout<< " Ud ingreso el dígito CERO"; break;
case 1: cout<< " Ud ingreso el dígito UNO"; break;
case 2: cout<< " Ud ingreso el dígito DOS"; break;
case 3: cout<< " Ud ingreso el dígito TRES"; break;
case 4 : cout<< " Ud ingreso el dígito CUATRO"; break;
case 5: cout<< " Ud ingreso el dígito CINCO"; break;
case 6: cout<< " Ud ingreso el dígito SEIS"; break;
case 7: cout<< " Ud ingreso el dígito SIETE"; break;
case 8: cout<< " Ud ingreso el dígito OCHO"; break;
case 9: cout<< " Ud ingreso el dígito NUEVE"; break;
default : cout<<"Ud. no ingreso un dígito";
}
}
int numero(char N) //Definición, recibo un char
{
int i;
for (i=0;i<=9;i++)
{
if(N==(i+48))return i; //retorno un entero
}}
158
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejemplo Nº 2:
Arreglo Multidimensional
/*Este ejercicio de c++, carga y muestra una matriz de 3 dimensiones por ejemplo ancho alto,
profundidad. Esto se podría extender a mas dimensiones */
#include<iostream>
#define X 3
#define Y 2
#define Z 2
using namespace std;
int main()
{
int i,j,k;
float matriz[X][Y][Z]; //Matriz de 3 Dimensiones
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
for(k=0;k<Z;k++)
{
cout<< " Ingrese el elemento"<<endl;
cout<<i<<"-"<<j<<"-"<<k<<" :";
cin>>matriz[i][j][k];
}
}
}
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
for(k=0;k<Z;k++)
{
cout<<"el elemento :";
cout<<i<<"-"<<j<<"-"<<k<<" vale :"<< matriz[i][j][k]<<endl;
}
}
}
}
Ejemplo Nº 3:
Escribir el código en C++ de una función main que llame a factorial pasando un entero como argumento
o parámetro y desde factorial se use la recursividad para calcular el factorial.
#include<iostream>
using namespace std;
int factorial(int); //PROTOTIPO
int main()
{
int num;
159
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
160
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
161
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
break;
default :
// uso el default para las opciones incorrectas
cout<<endl<<"Error, Opcion Incorrecta";
}
}while(s);// sale si s=falso
return 0;
}
void Muestra(int a) // No retorna y si recibe. Quiere saber que matriz tiene que mostrar
{
cout<<endl<<"La Matriz: "<<a+1<<" es: "<<endl;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cout<<"\t"/* hace un tab */<<Matriz[a][i][j];
}
cout<<endl; // salto de linea para cada fila
}
}
162
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio 1:
Se ingresarán 20 valores por teclado, se deberán guardar de esos 20 solo aquellos valores que no se
encuentren entre 10 y 20 incluidos. Luego el programa deberá presentar un menú llamando a la función
"menu" que mostrará:
a- Calcular y mostrar el Mayor.
b- Calcular y mostrar el Menor.
c- Mostrar el valor de una posición.
d- Mostrar los valores cargados.
F- Finalizar.
Cada uno de los puntos a, b, c, d, se deberán realizar llamando a un función (mayor, menor, posición
y mostrar). Solo se deberá finalizar el programa si se presiona la Letra o F ó f. En caso que se presione una
tecla que no sea a, b, c, d, F ó f se beberá mostrar un cartel "Tecla no válida" y nuevamente volver al menú.
Ejercicio 2:
Modificar el programa anterior de manera que la función invocada en el punto ”c” reciba como
argumento un entero indicando el numero de posición o indice y dentro de esta función se muestra el valor
de la posición y se retorna true, en caso de que el indice o posición no corresponde (el valor es mayor que la
dimensión o negativo) con los del vector deberá retornar false y mostrar el cartel desde main. Es decir que
la función posición retorne una variable booleana”bool”.
Ejercicio 3:
Escribir un código que permita el ingreso de 2 valores flotantes, luego desde main se llame a una
función llamada enteros pasando como argumento estos flotantes y en ella se deberá mostrar todos los
enteros comprendidos entre los dos flotantes pasados como parámetros. La función enteros no retorna
nada.
Ejercicio 4:
Escribir el código en C++ de un programa que desde main llame a una función promedio, la cual recibe
cinco escalares y retorna el promedio que es mostrado desde main.
163
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio 5:
Realizar una función que reciba como parámetro dos números enteros X e Y, la función retornara si el
numero X es múltiplo de Y. Para ello utilizar la función modulo (operador % ). También debe incluir una
segunda función en la cual se ingrese un numero entero N, y calcule todos los múltiplos de N en el intervalo
[1 100]. La selección se debe realizar por medio de un menú.
Ejercicio 6:
Escribir un código en C++ de desde main se pase a una función llamada tecla la cual recibe el valor de
una tecla presionada, esta función tecla deberá mostrar ”letra”, ”numero” o ”símbolo” según corresponda a
la tecla presionada, y retornar true si es letra o numero y false si es símbolo.
Ejercicio 7:
Definir un ”string” como variable global y desde main llamar a la función contar, la cual recibe como
argumento un carácter que contará cuantas veces se repite en el string global, desde esta función se
muestra la cantidad y se retorna a main la dimensión del string, la cual es mostrada en main.
Ejercicio 8:
Para que un tren complete el recorrido entre dos localidades, la locomotora debe ejercer una fuerza
variable con la posición, que responde a la siguiente función:
F = - 0,0035 x2 + 18 x + 10000
Realizar un programa en C++ para determinar el trabajo realizado por la locomotora, para ir desde la
localidad 1 hasta la localidad 2 a 5000m de distancia, utilizando una aproximación de orden 0. Analizar la
influencia de la longitud del intervalo. Probar con intervalos de 500m y de 100m.
164
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Implementar una función que evalúe el valor de la fuerza para una posición dada y otra función que
vaya sumando las sucesivas áreas.
Comparar los resultados.
Ejercicio Resuelto
//Programa que calcula el trabajo realizado por una fuerza, de función conocida,
//aproximando el área bajo la curva mediante interpolación de orden 0.
#include <iostream>
using namespace std;
float aproximacion_orden_0 (float inicio, float fin, float incremento); //función que calcula el área
bajo la curva
float fuerza_en_posicion (float posicion); // función que evalúa la función en la posición dada.
int main()
{
float trabajo;
trabajo= aproximacion_orden_0(0,5000,10);
cout<<"El trabajo realizado por la Fuerza desde los 0m hasta los 5000m es de "<<trabajo<<"
Joules";
return(0);
}
return (area_orden_0);
}
Ejercicio 9:
Realizar un programa que permita mostrar por pantalla el siguiente menú HASTA que el usuario ingrese
“S” para salir del programa. Si el usuario ingresa una opción diferente a las que aparecen en el menú deberá
mostrar “ERROR. Opción Incorrecta”. El menú es el siguiente:
MENU DE OPCIONES
A – Cargar una tabla de multiplicar
B – Buscar un número en el vector
C- Sumar números
S – SALIR
165
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
El usuario deberá ingresar por teclado la opción (OPC) a ejecutar y luego llamar a la función
correspondiente. Hay como variable global V1 un vector de 10 elementos.
a) Si el usuario elige la opción A – Mostrar una tabla de multiplicar deberá pedir que se ingrese un
número (N1) del que quiere calcular la tabla. N1 debe estar entre 1 y 10. Luego llamará a la función TABLA
que deberá cargar la tabla del número N1 en el vector V1
O sea que, la función TABLA recibe como argumento N1 y no devuelve nada a main().
b) Si el usuario elige la opción B - Buscar un número en el vector deberá pedir que se ingrese un numero
N2 y se llamará a la función BUSCA deberá buscar el número en el vector V1. Si existe deberá retornar 1 a
main() o 0 si no existe. Cuando devuelve a main deberá mostrar allí el resultado.
c) Si el usuario elige la opción D – Sumar números deberá llamar a la función SUMA que calculará la
suma de los números del vector, por último devolverá a main el acumulado (S2) y desde allí se mostrará por
pantalla.
O sea que, la función SUMA no recibe argumentos y devuelve S2 a main().
Ejercicio 10:
Realizar un programa que permita mostrar por pantalla el siguiente menú HASTA que el usuario ingrese
“S” para salir del programa. Si el usuario ingresa una opción diferente a las que aparecen en el menú deberá
mostrar “ERROR. Opción Incorrecta”. El menú es el siguiente:
MENU DE OPCIONES
A – Mostrar una tabla de multiplicar
B – Generar una serie de números
C – Calcular el Factorial de un número
D – Sumar números
E - Calcular la potencia
S – SALIR
El usuario deberá ingresar por teclado la opción (OPC) a ejecutar y luego llamar a la función
correspondiente.
a) Si el usuario elige la opción A – Mostrar una tabla de multiplicar deberá pedir que se ingrese un
número (N1) del que quiere calcular la tabla. N1 debe estar entre 1 y 10. Luego llamará a la función TABLA
que deberá mostrar la tabla del número N1.
O sea que, la función TABLA recibe como argumento N1 y no devuelve nada a main().
b) Si el usuario elige la opción B – Generar una serie de números deberá llamar a la función SERIE, ésta
pedirá que se ingrese un número N2. N2 deberá estar entre 1 y 30. N2 indicará la cantidad de términos a
calcular y sumar de la siguiente serie:
S = 1 - 1/3 + 1/9 - 1/27 + 1/81 - ….
La función SERIE no recibe nada de main pero deberá devolver a main el valor de S y main mostrará el
resultado por pantalla.
O sea que, la función SERIE no recibe argumentos y devuelve S a main().
166
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
d) Si el usuario elige la opción D – Sumar números deberá ingresar un número positivo (N4) y llamará a
la función SUMA que calculará la suma de los números ingresados mientras que el acumulado no supere N4;
por último devolverá a main el acumulado (S2) y desde allí se mostrará por pantalla.
O sea que, la función SUMA recibe como argumento a N4 y devuelve S2 a main().
e) Si el usuario elige la opción E – Calcular la potencia deberá ingresar dos valores X e Y, con estos
datos llamará a la función POTENCIA que calculará XY utilizando la función pow() y devolverá el resultado
(P) a main donde se mostrará por pantalla.
O sea que, la función POTENCIA recibe como argumentos a X y a Y, y devuelve P a main().
Ejercicio 11:
Realizar un programa que permita llamar a una función MENU que deberá mostrar por pantalla el
siguiente menú. El menú es el siguiente:
MENU DE OPCIONES
1 – Cargar un vector
2 – Cargar una matriz
3 – Buscar un número en la matriz
4 – Ordenar la matriz
5 – Buscar el mayor en el vector.
6 – SALIR
El usuario deberá ingresar por teclado la opción (OPC) a ejecutar y devolverá el valor de OPC a main.
O sea que, la función MENU no recibe argumento pero devuelve a main OPC.
El programa se ejecutará HASTA que el usuario ingrese 6 para salir del programa. Si el usuario ingresa
una opción diferente a las que aparecen en el menú deberá mostrar “ERROR. Opción Incorrecta”
Luego main llamar a la función correspondiente.
a) Si el usuario elige la opción 1 – Cargar un vector deberá llamar a la función CARGAV que deberá
permitir cargar el vector V.
O sea que, la función CARGAV no recibe argumentos y no devuelve nada a main().
b) Si el usuario elige la opción 2 – Cargar una matriz deberá preguntar al usuario cómo quiere cargar la
matriz (CA). El usuario podrá ingresar “F” si quiere cargar la matriz por filas o “C” si quiere cargar la matriz
por columnas. Luego deberá llamar a la función CARGAM que deberá permitir cargar la matriz M por filas o
columnas según haya pedido el usuario.
O sea que, la función CARGAM recibe como argumento CA y no devuelve nada a main().
c) Si el usuario elige la opción 3 – Buscar un número en la matriz deberá permitir al usuario ingresar un
número N1 y luego llamará a la función BUSCA que deberá buscar si el número N1 se encuentra en la matriz
M. Si lo encuentra deberá informarlo, además de mostrar en qué fila y columna se encuentra. Si no lo
encuentra deberá mostrar un mensaje “NO Encontrado”.
O sea que, la función BUSCA recibe como argumento N1 y no devuelve nada a main().
DEBE CONTROLAR QUE para poder realizar la opción 3, la matriz deberá estar cargada.
d) Si el usuario elige la opción 4 –Ordenar la matriz deberá llamar a la función ORDEN que ordenará la
matriz por columnas, luego retornará a main y desde allí se llamará a la función MUESTRAM que mostrará la
matriz ordenada.
O sea que, la función ORDEN no recibe argumentos y no devuelve nada a main().
DEBE CONTROLAR QUE para poder realizar la opción 4, la matriz deberá estar cargada.
167
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
e) Si el usuario elige la opción 5 – Buscar el mayor en el vector deberá llamar a la función MAYOR que
deberá buscar el mayor número ingresado (MAX) en el vector, pero no deberá modificarlo. Retornará a main
el valor de MAX.
O sea que, la función MAYOR no recibe argumentos y devuelve MAX a main().
DEBE CONTROLAR QUE para poder realizar la opción 5, el vector deberá estar cargado.
NOTA:
la matriz y el vector deben declararse como variables globales. La matriz deberá ser de 4 x 5 y el vector
de 8 elementos.
Ejercicio 12:
Función main
Main mostrará un menu como el siguiente:
1- Contar la cantidad de veces que un caracter aparece en un string.
2- Calcular la Serie.
S – Salir.
El usuario podrá ingresar solamente las opciones indicadas (1,2,S). En caso de presionar cualquier otra
tecla deberá mostrar el error por pantalla: "Opción NO VALIDA", y volverá a mostrar el menú.
Según la tecla presionada, se deberá llamar a la función correspondiente o finalizar el programa.
Si el usuario elige 1, en Main se deberán pedir el carácter que pasará como parámetro a Mensaje.
Si el usuario elige 2, en Main se deberán pedir los parámetros necesarios para llamar a la función serie
(X y n), y deberá verificar que los argumentos pasados sean válidos ( n > 0 ).
Main llamará a mensaje pasando el argumento necesario (carácter) y mostrará "ENCONTRO" si la
función devolvió VERDADERO o "NO ENCONTRO" si la función devolvió FALSO.
Función mensaje
Se define en esta función un string llamado mensa que contiene el siguiente texto: "Si pensas que tu
profesor es jodido, espera a que tengas un jefe!!".
Esta función recibe un carácter como argumento. El código deberá contar la cantidad de ocurrencias de
este carácter en el string (mensa). Si el caracter no existe en el string deberá retornar FALSE, en caso
contrario muestra la cantidad de veces que se encuentra y retorna a main con TRUE. Este valor booleano
retornado se usará para mostrar desde main ENCONTRÓ o NO ENCONTRO.
Función Serie
Esta función recibe como argumento dos valores, un entero positivo n mayor que cero y un número X,
luego calcula y muestra:
S = -X+ (X2 )/2 - (X3 )/3+(X4 )/4- ......... (- X)n/n
Para el cálculo de las potencias de X dentro de esta función, se deberá llamar a otra función llamada
Potencia. Esta función Potencia solo deberá calcular la potencia de X para cada valor de n, o sea que
Potencia recibirá dos argumentos (n y X) y devolverá el resultado a la función Serie.
Por ejemplo:
si Potencia recibe (1, -7) , calcula -71
si Potencia recibe (2, -7) , calcula -72
si Potencia recibe (3, -7) , calcula -73
si Potencia recibe (4, -7) , calcula -74
....
Y así sucesivamente hasta n
168
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
Ejercicio 13:
Realizar un programa que permita llamar a una función MENU que deberá mostrar por pantalla el
siguiente menú.
MENU DE OPCIONES
1 – Cargar una matriz
2 – Buscar un número en la matriz
3 –Intercambiar dos columnas de la matriz.
4–SALIR
El usuario deberá ingresar por teclado la opción (OPC) a ejecutar y devolverá el valor de OPC a main. O
sea que, la función MENU no recibe argumento pero devuelve a main OPC.
El programa se ejecutará HASTA que el usuario ingrese 4 para salir del programa. Si el usuario ingresa
una opción diferente a las que aparecen en el menú deberá mostrar “ERROR. Opción Incorrecta”
Luego main llamar a la función correspondiente.
Si el usuario elige la opción 1 – Cargar una matriz deberá preguntar al usuario cómo quiere cargar la
matriz (CA). El usuario podrá ingresar “F” si quiere cargar la matriz por filas o “C” si quiere cargar la matriz
por columnas. Luego deberá llamar a la función CARGAM que deberá permitir cargar la matriz M por filas o
columnas según haya pedido el usuario. O sea que, la función CARGAM recibe como argumento CA y no
devuelve nada a main().
2 – Buscar un número en la matriz deberá permitir al usuario ingresar
un número N1 y luego llamará a la función BUSCA que deberá buscar si el número N1 se encuentra en la
matriz M. Si lo encuentra deberá retornar ‘E’ a main. Si no lo encuentra deberá retornar ‘N’ y desde main se
deberá imprimir “Encontrado” o “No encontrado” según corresponda. O sea que, la función BUSCA recibe
como argumento N1 y devuelve un carácter a main(). DEBE CONTROLAR QUE para poder realizar la opción
2, la matriz deberá estar cargada.
3 – Intercambiar dos columnas de la matriz deberá permitir al usuario
ingresar los números C1 y C2 los cuales se deberán validar y luego llamará a la función CAMBIO que deberá
intercambiar las columnas especificadas y luego imprimir la matriz. O sea que, la función CAMBIO recibe
como argumento C1 y C2 y no devuelve nada a main(). DEBE CONTROLAR QUE para poder realizar la
opción 3, la matriz deberá estar cargada.
1. #include <iostream>
2. #define M 3
3. #define N 4
4. using namespace std;
5. int mat [M] [N];
6. int menu();
7. void cargam(char ca);
8. char busca(int n1);
9. void cambio(int c1, int c2);
10. int main()
11. {
12. int opc, n1, c1, c2, band=0;
13. char ca, res;
14. do{
15. opc=menu();
16. switch (opc){
17. case 1: do{
18. cout <<endl<<“Elija como desea cargar la matriz: F o C”;
19. cin >> ca;
20. }while(ca!= ‘F’ && ca!=‘C’);
169
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
21. cargam(ca);
22. band=1;
23. break;
24. case 2: if (band == 1){
25. cout<< endl<<“ingrese el numero a buscar en la matriz “;
26. cin>> n1;
27. res=busca(n1);
28. if(res==‘E’) cout<<endl<<“Encontrado”;
29. else cout<<endl<<“No encontrado”;}
30. else cout<<endl<<“La matriz no esta cargada”;
31. break;
32. case 3: if (band == 1){
33. do{
34. cout<<endl<<“Ingrese un nro entre 0 y 3 para c1 “;
35. cin >> c1;
36. cout<<endl<<“Ingrese un nro entre 0 y 3 para c2 “;
37. cin >> c2;
38. }while((c1 <0 || c1>3) || (c2<0 || c2>3));
39. cambio(c1, c2);
40. }
41. else cout<<endl<<“la matriz no esta cargada”;
42. break;
43. case 4: cout<< “Saliendo…presione una tecla para continuar”;
44. break;
45. default: cout<<endl<<“ERROR. Opción incorrecta”
46. }
47. }while (opc != 4);
48. return 0;
49. }
170
TALLER DE INFORMÁTICA CAPITULO 4. Lenguajes de Programación
69. {
70. for(i=0; i<M; i++) {
71. cout<<endl<<“Ingrese el elemento “ <<i <<j <<“: “;
72. cin>>mat[i][j]; }
73. }
74. }
75. }
171
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
CAPITULO 5.
SISTEMAS OPERATIVOS
En el Capítulo 1, cuando se presenta la definición y clasificación de Software se sostenía que: Software
es el conjunto de instrucciones detalladas que controlan la operación de un sistema de cómputos y existen
tres tipos principales de software:
Software de Sistema: es un conjunto de programas generalizados que administran los
recursos de la computadora, como la CPU, los dispositivos de comunicaciones y los periféricos.
Software de Aplicaciones: programas escritos para una aplicación específica de negocios con
el objeto de realizar funciones específicas por los usuarios finales.
Software de Usuario Final: Es un tipo especial de aplicación que consiste en herramientas de
software que permiten el desarrollo de aplicaciones por los usuarios finales con muy poca o nula
intervención de programadores profesionales.
Dentro del Software de Sistema estarían los Sistemas Operativos SO, estos programas realizan tareas
básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder
de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras,
escáner, etc.
5.1. DEFINICIONES
5.1.1. Software de sistemas
Coordina las diferentes partes del sistema de cómputos y sirve como mediación entre el software de
aplicación y el hardware.
Consta de:
* Sistema operativo
Programa sucesos de cómputo
Asigna recursos de cómputo
Hace seguimientos de eventos
* Traductores de Lenguaje
Intérpretes
Compiladores
* Programas de Utilería
Operaciones rutinarias (sort, print, etc)
Administración de datos (crea, fusiona archivos)
172
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
d) Tiempo compartido
Permite compartir simultáneamente los recursos de la computadora entre muchos usuarios al
asignar un periodo de tiempo muy pequeño (2 miliseg.) a cada usuario. En este lapso el usuario
puede utilizar libremente para realizar cualquier operación.
En la Multiprogramación era hacer que la CPU emplee una cantidad fija de tiempo para cada
programa, acá es para cada usuario.
e) Multiproceso
El SO es capaz de unir dos o más CPU para que trabajen en paralelo en un solo sistema de
cómputos, el cual puede asignar múltiples CPU para múltiples instrucciones de un mismo
programa o de diferentes programas en forma simultánea.
173
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Algunos lenguajes de programación (BASIC) no usan un compilador sino un intérprete que traduce cada
instrucción en código fuente, en código de máquina y la ejecuta. Es más lento porque traduce de a una
instrucción por vez.
En el software de sistema se incluyen programas de utilería para rutinas, tareas repetitivas como copiar,
limpiar la memoria, formatear un disco, eliminar archivos, crear un texto.
Son programas escritos previamente que se almacenan para que puedan ser compartidos por todos los
usuarios de un sistema de cómputos.
En el software de sistema se incluyen programas de utilería para rutinas, tareas repetitivas como copiar,
limpiar la memoria, formatear un disco, eliminar archivos, crear un texto.
Son programas escritos previamente que se almacenan para que puedan ser compartidos por todos los
usuarios de un sistema de cómputos.
Los Sistemas Operativos han sufrido una serie de cambios revolucionarios llamados generaciones.
174
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
La característica de los SO fue el desarrollo de los sistemas compartidos con multiprogramación, y los
principios del multiprocesamiento.
Se desarrollaron sistemas compartidos, en la que los usuarios podían acoplarse directamente con el
computador a través de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron
utilizados en el control de procesos industriales.
175
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
OS/2 WARP Diseñado por IBM es el competidor más cercano de MS-DOS sobre todo por sus grandes
capacidades de interconexión de equipos y facilidad de uso bajo ambiente gráfico.
Netware diseñado por Novell, líder mundial en SO para redes de computadoras por el poder y
versatilidad de sus funciones, así como su extremada capacidad de interconectar computadoras y recursos
de tan variadas capacidades y marcas.
Unix: Sistema operativo de alto rendimiento utilizado actualmente en grandes proyectos y para
necesidades de intercomunicación a nivel internacional y de gran volumen de operaciones diarias.
Microsoft Windows 95, 98, etc. Es un entorno multitarea dotado de una interfaz gráfica de usuario,
no necesita del MS-DOS para ser ejecutado, ya que es un sistema operativo.
Está basado en menús desplegables, ventanas en pantalla y el mouse.
Los nombres de los archivos pueden tener hasta 256 caracteres para tener una descripción completa del
contenido del archivo.
Posee Plug and Play, una tecnología con la cual un usuario puede fácilmente instalar o conectar
dispositivos permitiendo al sistema automáticamente alojar los recursos del hardware sin la intervención de
usuario.
Microsoft Windows NT: Microsoft no solo se ha dedicado a escribir software para PCs de escritorio
sino también para poderosas estaciones de trabajo y servidores de red y bases de datos. Es un SO para
redes que brinda poder, velocidad. Es un SO de 32 bits, y que puede trabajar en procesadores 386, 486 y
Pentium. Además de ser multitarea, multilectura y multiprocesador ofrece una interfaz gráfica. Y trae todo
el software necesario para trabajar en redes, permitiendo ser un cliente de la red o un servidor.
176
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
DISTRIBUCION UBUNTU
Ubuntu es un sistema operativo basado en Linux creado por una comunidad de programadores libres.
GNOME
GNOME intenta construir un completo y a la vez sencillo escritorio basado enteramente en software
gratuito. GNOME es parte del proyecto GNU y es gratuito. El escritorio consiste en pequeñas utilidades y
grandes aplicaciones que comparten una vista y una sensación consistentes.
177
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Este pequeño apunte pretende dar un detalle de los comandos necesarios para el curso a los alumnos de
Taller de Informática y Computación de la Facultad de Ingeniería de Oberá y es APENAS un lista de
referencia MINIMA.
Así, cada vez que iniciamos una sesión Linux nos responde con
Login:
a lo que nosotros debemos responder con nuestro nombre de usuario.
Acto seguido, Linux nos solicita una clave para poder comprobar que somos quien decimos que somos:
Password:
En este caso tecleamos la clave de acceso. Por motivos de seguridad esta clave no aparecerá en la
pantalla. Si la pareja nombre de usuario/clave es correcta el sistema inicia un intérprete de órdenes con el
que podemos trabajar. Habitualmente será el símbolo $, aunque puede ser también el símbolo % (si
usamos una shell C). Cuando es el administrador (root) quien está trabajando en el sistema, el indicador que
aparece es #.
A modo de comentario existe un archivo en /etc llamado password que contiene los datos de los
usuarios definidos en el sistema, cada línea de este archivo tendría algo como:
Este apéndice no pretende ser nada inédito, simplemente intentaré transmitir la potencia del Shell de
Linux con los comandos que se sugieren saber usar en los cursos de esta unidad académica, hoy en día con
los entornos gráficos y mouse se deja de lado esta poderosa herramienta que sin lugar a dudas en mucho
mas efectiva, eficiente y rápida que el mouse en los entornos gráficos.
178
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Me gustaría transmitir una historia contada por un Gurú brasilero del Shell Julio Neves; dice que se hizo
un desafío en el ambiente de programadores para que hicieran el programa mas corto que permita
determinar la cantidad de archivos de cada tipo en un directorio (cuántos ejecutable, cuántos de texto , etc)
el resultado fue el siguiente: la mayoría de los lenguajes lo hicieron con un código de unas treinta líneas mas
o menos, con excepción de dos, Java que lo hacía con 130 y Phyton que lo hacía con 15. Esto deja sin lugar
a dudas la idea que el lenguaje Phytón sería el mas eficiente, pero el lenguaje del Shell permite hacer esto
en una sola línea, sí, aunque no lo puedan creer es así.
Bueno empecemos.
En este gráfico se ve que la capa de hardware es la mas profunda estando formada por los componentes
físicos de tu computador.
Envolviendo a ésta, viene la capa del kernel que es el corazón de Linux, su núcleo, y es quien hace que
el hardware funcione, efectuando su manejo y control.
Los programas y comandos que envuelven el kernel, lo utilizan para realizar las tareas específicas para
las cuales fueron desarrolladas.
Encerrando todo eso viene el Shell que tiene este nombre porque en ingles, Shell significa concha,
envoltura, o sea que, queda entre los usuarios y el sistema operativo, de forma que todo lo que interacciona
con el sistema operativo, tiene que pasar por su filtro.
179
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Hay diversas shells, cada una con sus características. Podemos citar:
* Bourne shell (sh)
* Korn shell (ksh)
* Shell C (csh)
* Bourne again shell (bash)
Ejemplo:
Esto realmente no es mas que una salida de comandos a una variable de nuestro shell, la variable es
$PS1, existen mas variables pero nos vamos a centrar en la que nos interesa (PS1) que es donde se define
el aspecto de nuestro prompt.
Para más información les suguiero leer el siguiente link:
http://xinfo.sourceforge.net/documentacion.php?ver=prompt
180
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Cuando se escribe una línea en el prompt de Linux, esta es dividida en palabras separadas por espacios
en blanco:
Una vez que se ejecuta un comando, se crea un proceso (esto recordemos es un archivo que se está
ejecutando). Un sistema Linux dispone de tres vías, canales o flujos para comunicarse con el exterior de
forma estándar.
Una de ellas, la entrada estándar, se utiliza para introducir datos en la shell; de forma predeterminada
está asociada al teclado.
La salida estándar, se utiliza para mostrar información y de forma predeterminada está asociada al
monitor (consola).
Por último existe un canal dedicado a mostrar la salida de errores, que de forma predeterminada está
asociado a la salida estándar.
Si el programa identificado existe (ls), el Shell verifica los permisos de los archivos involucrados
(inclusive el propio programa), dando un señal de error en caso de que tu no estés autorizado a ejecutar
esta tarea.
Todos estos programas se encuentran en estos directorios de ejecutables (en el PATH del usuario
normalmente están).
Estos directorios suelen ser:
Aclaremos que:
Los comandos ejecutables en Linux no tienen una extensión del tipo .exe como para Windows en Linux
los comandos o archivos para ser ejecutables solo deben tener un atributo de ejecutable, veremos esto mas
adelante.
Resolución de Redireccionamentos
Después de identificar los componentes de la línea que tecleaste, el Shell parte para la resolución de re
direccionamentos. El Shell tiene incorporado a su elenco de ventajas lo que llamamos el re direccionamento,
181
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
que puede ser de entrada (stdin), de salida (stdout) o de errores (stderr), de acuerdo a como te explicaré a
continuación.
Substitución de Variables
En este punto, el Shell verifica si las eventuales variables (parámetros comenzados por $), encontradas
en el campo del comando, están definidas y las substituye por sus valores actuales.
Substitución de Metacaracteres
Si algún metacaracter (*, ? o []) es hallado en la línea de comando, es aquí que será substituido por sus
posibles valores. Suponiendo que el único archivo que comienza por la letra n en su actual directorio sea un
directorio llamado nombremuygrande, si haces: $ cd n*
Como hasta aquí quien está trabajando es el Shell y el comando (programa) cd todavía no fue
ejecutado, el Shell transforma el n* en nombremuygrande y el comando cd será ejecutado con éxito, de la
siguiente manera: cd nombremuygrande
Si en alguna ocasión nos interesa usar este carácter como literal, es decir, que la shell no lo interprete
como carácter especial es necesario que esté precedido (protegido) por el carácter de escape 1#1 (barra
invertida).
Si bien no tiene que ver directamente con el Shell la organización de la información es importante tener
idea de cómo esta organizada.
El sistema de ficheros es la organización lógica del disco que nos permite almacenar la información en
forma de ficheros de un modo totalmente transparente. Esta palabra tan utilizada significa que no tenemos
que preocuparnos de pistas, sectores, cilindros y otras menudencias.
Cada partición del disco, o cada disquete deben tener un sistema de ficheros si queremos almacenar
información en forma de fichero.
Cada sistema operativo posee su propia organización lógica del disco para poder almacenar la
información, y la usará normalmente, pero además puede tener la posibilidad de usar particiones propias de
de otros sistemas.
182
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
vfat: es una ampliación del sistema de ficheros msdos, con soporte para nombres largos de
ficheros. Existen los tipos FAT16 y FAT32, y en ambos casos sólo tienen características
monousuario: no admiten propietarios de ficheros y los permisos son muy limitados.
NTFS: sistema de ficheros de Windows NT. Este sistema de ficheros sí está preparado para
utilizarse en entornos multiusuario.
iso9660: es el sistema de ficheros de los CDs. Este estándar admite ciertas extensiones
como «Joliet» o «Rock Ridge» que le añaden ciertas características.
¿Qué es un Archivo?
El sistema de archivos de Linux organiza los archivos en directorios, de forma similar al DOS. Todo el
sistema de archivos de Linux es un gran conjunto interconectado de directorios que están organizados en
una estructura jerárquica de árbol.
En Linux no tenemos una "unidad" para cada unidad física de disco o partición como en Windows, sino
que todos los discos duros o de red se montan bajo un sistema de directorios en árbol, y algunos de esos
directorios enlazan con estas unidades físicas de disco.
¿Qué es un Directorio?
Conjunto de ficheros agrupados bajo un mismo nombre, lo que facilita su utilización y administración.
Principales Directorios:
/: Es la raíz del sistema de directorios.
/etc: Contiene los archivos de configuración de la mayoría de los programas
/home: Contiene los archivos personales de los usuarios
/bin: Contiene comandos básicos y muchos programas:
/dev: Contiene archivos simbólicos que representan partes del hardware, tales como discos duros,
memoria,etc.
/mnt: Contiene subdirectorios donde se montan (se enlaza con) otras particiones de disco duro,
CDROMs, etc.
/tmp: Ficheros temporales o de recursos de programas
/usr: Programas y librerías instalados con la distribución
/usr/local: Programas y librerías instalados por el administrador
/sbin: Comandos administrativos
/lib: Librerías varias y módulos del kernel
/var: Datos varios como archivos de log (registro de actividad) de programas, bases de datos,
contenidos del servidor web, copias de seguridad.
Camino o Path
El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para
acceder a un determinado fichero separados por /.
Ejemplo:
183
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Los elementos del sistema de archivos son el superbloque, i-nodos y bloques de datos.
el superbloque contiene la descripción general del sistema de ficheros: tamaño, bloques libres,
tamaño de la lista de i-nodos, i-nodos libres, verificaciones, etc.
Un i-nodo contiene toda la información sobre cada conjunto de datos en disco, que
denominamos fichero: donde se almacenan los datos, es decir lista de bloques de datos en
disco.
Los bloques de datos son una serie de punteros o direcciones de bloques que indican dónde
están los datos en disco, o bien dónde están los bloques que tienen más direcciones de bloques
de datos (bloques indirectos).
Veamos un ejemplo, de los que resulta al mostrar los nros de inodos con ls -lFi:
Muestra:
Quién es el propietario de los datos, un número que lo identifica (UID o User Identifier), y a qué
grupo pertenece el fichero (GID Group Identifier).
Tipo de fichero: regular, es decir un fichero que contiene información habitual, datos o
programas; dispositivo, un elemento destinado a intercambiar datos con un periférico, enlace,
un fichero que apunta a otro fichero; pipe, un fichero que se utiliza para intercambiar
información entre procesos a nivel de núcleo. Directorio, si el elemento no contiene datos sino
referencias a otros ficheros y directorios.
Permisos del fichero (quien puede leer(r), escribir(w) o ejecutar(x)). Estos permisos se asignan
de forma diferenciada a tres elementos: el propietario, el grupo (indicados con anterioridad) y al
resto de los usuarios del sistema.
Tamaño del fichero.
Número de enlaces del fichero. Es decir cuántos nombres distintos tiene este fichero. Hay que
observar que el nombre de un fichero no forma parte del i-nodo. El nombre de fichero se asocia
a un i-nodo dentro de un fichero especial denominado directorio. Esto le proporciona al sistema
de ficheros la posibilidad de que un mismo i-nodo pueda tener varios nombres si aparece en
varios directorios o con distintos nombres.
184
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
5.3.8. Comandos
Primero presentaremos los comando ordenados en forma alfabética y con una descripción de para que
sirven y ejemplos. Los comandos no son otra cosa que archivos ejecutables del Shell.
cal - displays a calendar. Muestra el calendario del mes indicando el día en el que estamos.
cat - concatenate files and print on the standard output. Este comando tiene varios usos por ejemplo
permite mostrar un archivo:
cat Ejercicio.cc
También se puede usar para escribir un archivo.
chown - change file owner and group. El comando chown (CHange OWNer - cambiar propietario)
permite cambiar el propietario de los elementos del sistema de archivos. Pero es lógico que si somos un
usuario normal no podremos cambiar de propietario los elementos que pertenecen a root o a otros usuarios.
En cambio, como root podremos cambiar el propietario de cualquier cosa
cmp - compare two files byte by byte. Permite la comparación de dos archivos, línea por línea. Es
utilizado para compara archivos de datos.
Sintaxis:
cmp nom_archivo1 nom_archivo2
cp - copy files and directories. La expresión cp <archivo1...> <destino> copia los archivos de un
directorio determinado ( archivo1, ... ) en otro directorio ( destino ), manteniendo el mismo nombre para el
archivo original. Por ejemplo:
cp /usr/share/pixmaps/gperiodic.png /home/linex/
Copia el archivo gperiodic.png que está en el directorio /usr/share/pixmaps en el directorio del usuario
linex, manteniendo el nombre gperiodic.png, puesto que no se especifica otro diferente.
date - print or set the system date and time. Muestra o setea la fecha y hora del sistema.
Para establecer la fecha y hora del sistema se usa 'date' seguido del siguiente patrón de entrada de
datos:
[MMDDhhmm[[CC]YY][.ss]]
MM = mes, DD = día, hh = hora, mm = minuto, CC = siglo (Century), YY = año, ss = segundos
185
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Ejemplo:
date 0302125508 ; se configuraría la fecha a: 03 de Febrero del 2008 , hora 12:55
Por supuesto esto se puede hacer si el usuario del sistema tiene los privilegios para relizar esta
operación.
diff - compare files line by line. Sirve para presentar las diferencias entre dos archivos.
Su sintaxis sería:
diff nom_archivo1 nom_archivo2 /
Ejemplo diff uno.txt dos.txt
Esto mostraría las diferencias entre los dos achivos. Existen una serie de opciones. Ver la ayuda propia
del diff.
diff /etc/passwd /respaldo/passwd
Con esto veríamos las diferencias del archivo actual de usuarios /etc/passwd y de uno que teníamos de
back up o respaldo que esta en /respaldo y se llama passwd
dig - DNS lookup utility. Sirve para ver si un servidor de DNS resuelve un nombre. En el Browser o
navegador de internet cada vez que escribimos un nombre .. por ejemplo www.google.com.ar este es
traducido una dirección conocida como IP , esta es la que finalmente se usa para llegar a la pagina.
Ejemplo:
dig @85,255,113,106 www.fio.unam.edu.ar
Esto daría como resultado:
;; QUESTION SECTION:
;www.fiobera.unam.edu.ar. IN A
;; ANSWER SECTION:
www.fiobera.unam.edu.ar. 3600 IN CNAME alfa.fiobera.unam.edu.ar.
alfa.fiobera.unam.edu.ar. 3600 IN A 170.210.195.3
;; Query time: 730 msec
;; SERVER: 85.255.113.106#53(85.255.113.106)
;; WHEN: Mon Mar 24 14:05:59 2008
;; MSG SIZE rcvd: 76
dmesg - print or control the kernel ring buffer. Muestra los mensajes desplegados por el "kernel" al
iniciarse la máquina. Aca podemos ver por ejemplo que hardware detectó, que módulos cargó etc.
Ejemplos:
dmesg | grep eth0: La salida muestra si en el arracque detecto alguna placa de red llamada eth0.
dmesg | more: Como la salida del archivo es larga se la puede presentar en forma paguinada, esto
se logra con more.
186
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
du - estimate file space usage. Sirve para saber el espacio en Disco usado por ejemplo por algún
directorio.
Ejemplo:
du -ks tempo : para saber el espacio ocupado por un directorio de nombre tempo
du -bh /|more: Información sobre el espacio ocupado por cada subdirectorio, comenzando en el
directorio raiz /.
du -h ejercicio.doc muestra el tamaño del archivo ejercicio.doc
find - search for files in a directory hierarchy. Busca archivos. Por ejemplo para buscar en todo el disco (
/ ) un archivo de nombre (-name) final.txt sería: find / -name final.txt
free - Display amount of free and used memory in the system. Muestra la cantidad de memoria libre y
usada en el sistema
grep - print lines matching a pattern. Muestra lineas que coinciden con algún patrón. Es muy util.
Ejemplos:
grep seccion [0-9] fichero.txt Muestra las líneas de un fichero de texto que muestre las líneas que
contengan la palabra sección seguido de algún dígito
grep^[^p] fichero.txt Muestra todas las líneas de un fichero que no comiencen por la letra p
grep ^comienzo fichero.txt Muestra todas las líneas de un fichero que comiencen por la palabra
comienzo.
gzip, gunzip - compress or expand file. El gzip sirve para comprimir y los archivos compimidos quedan
con la extensión .gz y el gunzip para descomprimir archivos o directorios comprimidos por gzip.
Ejemplo:
gzip TPPereyra.doc , esto genera el archivo TPPereyra.doc.gz
Para descomprimir sería:
gunzip TPPereyra.doc.gz y me generaría un archivo de Nombre TPPereyra.doc
halt=reboot= poweroff - reboot or stop the system. Sirve para detener y apagar el sistema.
hostname - show or set the system’s host name. Muestra el nombre de la maquina o host o modifica el
nombre actual de la maquina, entre otras cosas:
Ejemplo:
hostname; muestra el nombre del equipo.
hostname micasa ; cambia el nombre de la maquina hasta que se resetee, para hacerlo
permanente se deberían modificar otros archivos,
kill - send a signal to a process. Permite matar o destruir un proceso, recordemos que un proceso es un
archivos que se esta ejecutando.
Variantes de kill
kill -HUP <pid>: Señala al proceso con numero <pid>, que vuelva a leer sus archivos de
configuración
kill -INT <pid>: Señala al proceso con numero <pid>, que sera interrumpido
kill -TERM <pid>: Señala al proceso con numero <pid>, que debe de terminar, a diferencia de -
KILL , esta opción da la oportunidad al proceso de terminar.
kill -STOP <pid>: Señala al proceso con numero <pid>, que pare momentaneamente
kill -CONT <pid>: Señala al proceso con numero <pid>, que continué, este comando se utiliza
para reanudar un proceso que le fue aplicado -STOP
kill -KILL <pid>: Señala al proceso con numero <pid>,que termine de inmediato, el proceso es
terminado abruptamente.
187
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
killall programa. Permite matar o destruir un proceso que esta corriendo pero por el nombre.
Si por ejemplo en una terminal se esta corriendo pico desde otra terminal puedo escribir: killall pico
Y con esto mataría todos los procesos de nombre pico que están corriendo.
last - show listing of last logged in users. Muestra todos los usuarios logeado y que hayan estado
logueados desde que el /var/log/wtmp fuera creado.
ln - make links between files. Existen dos tipos de enlaces, los enlaces simbólicos y los enlaces duros
(fuertes).
Cuando creamos un enlace simbólico significa que creamos un puntero a dicho fichero o directorio. Si
borrases dicho fichero o directorio el enlace quedaría apuntando a la nada.
Por otra parte si creas un enlace duro, lo que hace es crear una copia del fichero o directorio, la ventaja
de este tipo de enlace es que si modificas alguno de los dos siempre se modificaran los dos y si borras uno
el otro no se perdería.
Normalmente no se hacen enlaces duros ya que implica tener duplicada la información ocupando espacio
de manera innecesaria, por esta razón solo el root tiene permisos para hacer este tipo de enlaces.
Otra desventaja de los enlaces duros es que sólo se pueden hacer entre ficheros o directorios de una
misma unidad.
El comando para crear enlaces es el siguiente:
ln -parámetro rutadirectorio nombre_enlace
ln [opciones] origen [destino]
ln [opciones] origen... directorio
Parámetros: Sus opciones mas importantes son las siguientes:
-d Permite al super-usuario hacer enlaces rígidos a directorios.
-s Crear enlace simbólico.
-f Borrar los archivos de destino que ya existen.
Si no ponemos ningún parámetro se crearía un enlace duro (fuerte).
Si bien no están precisamente relacionados con ls tienen algún parentesco solo por empezar con ls y
listar algo. Estos comandos suelen ser útiles en algunos casos:
- lshw: lista el Hardware de la maquina
- lsof: lista los archivos abiertos.
- lsusb: lista los dispositivos USB Detectados
- lshal: lista todo los dispositivos de la lista de Abstracción de HARDWARE (HAL)
- lspci:Lista los dispositivos PCI detectados
- lsmod: Lista el estado de los modulos de Linux, los modulos son Ficheros o Archivos que se
pueden enlazar y des enlazar en tiempo de ejecución . A grosso modo el código de este archivo
es como un pedazo más del núcleo, y puede ser manejar un dispositivo (conocido como driver
en Windows) o puede hacer otras tareas.
Para trabajar con módulos se dispone de las siguientes utilidades del sistema:
- insmod: Instala en el núcleo un módulo.
188
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
mkdir - make directories. Comando que sirve para crear Directorios, por ejemplo:
mkdir ./pipo ; crea un directorio de nombre pipo en donde estoy ubicado.
mkdir pipo ; crea un directorio de nombre pipo en donde estoy ubicado.
more - file perusal filter for crt viewing. Este comando sirve para paginar la salida de otro comando por
ejemplo: ls -alF | more ; esto permite mostra la salida del ls de a paginas.. al presionar una tecla se muestra
la pagina siguiente-
mv - move (rename) files. Este comando sirve para mover o renombrar archivos, por ejemplo:
mv profile.php ./pipo/ ; este comando movería el archivo profile.php al directorio pipo.
mv profile.php pepe.php ; este comando renombraría el archivo profile.php a pepe.php
ps - report a snapshot of the current processes. Este comando sirve para mostrar los procesos actuales,
por ejemplo:
ps -aux ; con esto mostraríamos los procesos.. ver el help del comando para la opciones -aux.
ps -aux | grep squid ; con esto filtramos todos los procesos excepto aquellos que contengan la palabra
squid.
pwd - print name of current/working directory. Muestra el directorio actual de trabajo o donde estoy
parado.
reboot= halt=poweroff - reboot or stop the system. Sirve para reiniciar el sistema o apagar.
189
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
su - ejecuta una shell con identificadores de grupo y de usuario distintos. Sirve para por ejemplo desde
una consola logearse como Super Usuario o root.
tail - output the last part of files Permite mostrar la cola o parte final de un archivo.
tail -n 7 Miprograma.cc , muestra las ultima 7 lineas.
tail -f weblog.log ; muestra la cola del archivo y va scrollando.
top - display Linux tasks. Lista un resumen de las tareas que se están ejecutando en el sistema en
tiempo Real.
uname - print system information úname. Muestra información del sisteama por ejemplo nombre de
maquina, versión del Kernel o núcleo, fecha, etc. reboot, halt, poweroff - reboot or stop the system.
Ejemplo:
uname -a ; la a es de all.
whoami - print effective userid Muestra el identificador del usuario, o sea quien es el que tipea...
who - show who is logged on Muestra Información sobre los usuarios que están usando el sistema o
logeados.
190
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
191
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
192
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Es un error asociar el concepto de usuario a una persona real. Se trata de una abstracción, que se
refiere no a personas sino a categorias.
Por ejemplo, si nosotros creamos un script, somos efectivamente sus autores y propietarios; pero ese
script esta destinado a la red. Nosotros, y el resto de personas, accederan al archivo no a traves de nuestra
maquina local sino por internet. Es frecuente en los servidores la creación de usuarios genéricos (root, www,
www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser
cualquiera que visite la página, lo cual será necesario si como es normal se trata de scripts que se
administran via web.
Y tratándose de directorios:
read listar los archivos de un directorio
write añadir nuevos archivos al directorio
execute acceder a los archivos del directorio
193
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Por lo tanto, existen tres categorias de usuarios ("user," "group," y "other") y para cada categoria
pueden asignarse tres tipos de permisos ("r," "w," y "x").
La orden chmod puede usarse con letras o numeros. La forma mas corriente es expresar los permisos
numericamente. Por ejemplo, chmod 777.
Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de
lectura, el 2 permiso de escritura y el 1 permiso de ejecución.
Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de
usuario):
4= lectura
2= escritura
1= ejecución
6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecución
3 (2+1)= escritura y ejecución
7 (4+2+1)= lectura, escritura y ejecución
Como ves, son tres digitos, de izquierda a derecha designan los permisos del owner, group y others.
Vemos a continuación su equivalente en letras:
0 = --- = sin acceso
1 = --x = ejecución
2 = -w- = escritura
3 = -wx = escritura y ejecución
4 = r-- = lectura
5 = r-x = lectura y ejecución
6 = rw- = lectura y escritura
7 = rwx = lectura, escritura y ejecución
Por ejemplo:
chmod go+r index.php significa que asignamos permisos de lectura para group y others en index.php
194
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
De esta forma solo cambiamos los atributos que especificamos, pero no alteramos otros compatibles que
pudieran estar asignados anteriormente) por ejemplo, no modifica la atribucion anterior a group de un
permiso de ejecución).
Si queremos fijar de nuevo todos los permisos, la sintaxis sería: chmod go=r index.php donde
asignamos a group y other permiso de lectura sobre index.php y eliminamos cualquier otro permiso para
ambos.
Es posible, también, usar comodines: chmod 644 *.html
Los bits de adhesivos o pegajosos se aplican principalmente a los directorios. Si el bit sticky esta
activado para un directorio, sólo el propietario de ese directorio o el dueño de un archivo pueden eliminar o
cambiar el nombre de un archivo dentro de ese directorio.
Ejemplo:
Considere la posibilidad de que haya un directorio "prueba".
chmod a "777". Esto da permisos para todos los usuarios leer, escribir y ejecutar.
chmod +t prueba
Si luego listamos el directorio prueba, ls -al
195
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Ejemplo:
Si pepe es el propietario de la secuencia de comandos y trata coco para ejecutar el mismo script, el
script se ejecuta con la propiedad de pepe.
Si el usuario root quiere dar los permisos para algunas secuencias de comandos para ejecutar por
diferentes usuarios, puede establecer el bit SUID para que el guión en particular.
Así que si cualquier usuario en el sistema se inicia el guión, se ejecutará bajo la propiedad raíz.
Tenga en cuenta:
Al utilizar el usuario root debe ser mucho más cuidadoso.
196
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Control de Tareas es una utilidad incluida en muchos shells (incluídas Bash y Tcsh), que permite el
control de multitud de comandos o tareas al momento. Antes de seguir, deberemos hablar un poco sobre
los procesos.
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como proceso, que es
simplemente el nombre que se le da a un programa cuando se esta ejecutando.
El comando ps visualiza la lista de procesos que se están ejecutando actualmente, por ejemplo:
/home/larry# ps, que mostraría en pantalla lo siguiente:
/home/larry#
197
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se está ejecutando
actualmente, sino que está temporalmente parado. Después de suspender una tarea, puede indicar a la
misma que continúe, en primer plano o en segundo, según necesite. Retomar una tarea suspendida no
cambia en nada el estado de la misma, la tarea continuará ejecutandose justo donde se dejó.
Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando usted interrumpe
un proceso (generalmente con la pulsación de ctrl+C), el proceso muere, y deja de estar en memoria y
utilizar recursos del ordenador.
Una vez eliminado, el proceso no puede continuar ejecutandose, y deberá ser lanzado otra vez para
volver a realizar sus tareas.
También_se_puede dar el caso de que algunos programas capturan la interrupción, de modo que
pulsando Ctrl+C no se para inmediatamente. Esto se hace para permitir al programa realizar operaciones
necesarias de limpieza antes de terminar. De hecho, algunos programas simplemente no se dejan matar por
ninguna interrupción.
Empecemos con un ejemplo sencillo. El comando yes es un comando aparentemente inútil que envía
una serie interminable de y-es a la salida estándard. Realmente es muy útil. Si se utiliza una tubería (o
"pipe") para unir la salida de yes con otro comando que haga preguntas del tipo si/no, la serie de y-es
confirmará todas las preguntas.
Pruebe con esto.
/home/larry# yes
y
y
y
La serie de y-es continuará_hasta_el infinito, a no ser que usted la elimine, pulsando la tecla de
interrupción. También puede deshacerse de esta serie de y-es redigiriendo la salida estándard de yes hacia
/dev/null, que como recordará es una especie de "agujero negro" o papelera para los datos. Todo lo que
usted envíe allí, desaparecerá.
/home/larry# yes > /dev/null
Ahora va mucho mejor, el terminal no se ensucia, pero el prompt de la shell no retorna. Esto es porque
yes sigue ejecutandose y enviando esos inútiles y-es a /dev/null. Para recuperarlo, pulse la tecla de
interrupción.
Supongamos ahora que queremos dejar que el comando yes siga ejecutandose, y volver al mismo
tiempo a la shell para trabajar en otras cosas. Para ello nos enviaremos a yes a segundo plano, lo que nos
permitirá ejecutarlo, pero sin necesidad de interacción.
Una forma de mandar procesos a segundo plano es añadiendo un carácter "&" al final de cada comando,
/home/larry# yes > /dev/null &, en pantalla aparecerá:
[1] 164
/home/larry#
Como podrá ver, ha regresado a la Shell, ¿Pero qué es eso de "[1] 164"? ¿se está ejecutando realmente
el comando yes?
"[1]" representa el número de tarea del proceso yes. La shell asigna un número a cada tarea que se esté
ejecutando. Como yes es el único comando que se está ejecutando, se le asigna el número de tarea 1.
El número "164" es el número de identificación del proceso, o PID, que es el número que el sistema le
asigna al proceso. Ambos números pueden usarse para referirse a la tarea como veremos después.
Ahora usted tiene el proceso yes corriendo en segundo plano, y enviando constantemente la señal y
hacia el dispositivo /dev/null.Para chequear el estado del proceso, utilice el comando interno de la shell
jobs:/home/larry# jobs
[1]+ Running yes >/dev/null &
198
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
/home/larry#
¡Ahí está! También puede usar el comando ps, como mostramos antes, para comprobar el estado de la
tarea.
Para eliminar una tarea, utilice el comando kill. Este comando toma como argumento un número de
tarea o un número de ID de un proceso. Esta era la tarea 1, así que usando el comando /home/larry# kill
%1, que matará la tarea.
Cuando se identifica la tarea con el número de tarea, se debe preceder el número con el carácter de
porcentaje (“%").
Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo para comprobarlo:
/home/larry# jobs
La tarea está, en efecto, muerta, y si usa el comando jobs de nuevo, no mostrará nada.
También podrá matar la tarea usando el número de ID de proceso (PID), el cual se muestra
conjuntamente con el ID de tarea cuando arranca la misma. En nuestro ejemplo el ID de proceso es 164, así
que el comando /home/larry# kill 164 es equivalente a/home/larry# kill %1
No es necesario usar el "%" cuando nos referimos a una tarea a través de su ID de proceso.
Este comando tira los procesos que se estan ejecutando para esa terminal, pero esto no nos sirve por que
queremos ver todos los procesos e identificar el que queremos finalizar o matar. Por ello utilizaremos
algunos argumentos opcionales de ps como ser:
ps aux
a: all ( todos los procesos)
u: user (usuario)
x : processes w/o controlling tty
Esto nos permitirá ver los procesos, luego identificar en la lista el PID o nro. de proceso que queremos
matar.
Veamos como se vería:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 5421 0.0 0.0 1844 488 ? S 18:08 0:00 /bin/sh c nice runparts report /etc/cron.daily
root 5422 0.0 0.1 1764 616 ? SN 18:08 0:00 runparts report /etc/cron.daily
usuario 5605 0.6 5.1 101356 25604 ? Rl 18:50 0:03 gnometerminal
usuario 5607 0.0 0.1 2912 768 ? S 18:50 0:00 gnomeptyhelper
usuario 5608 0.0 0.6 5712 3076 pts/0 Ss 18:50 0:00 bash
usuario 5702 2.1 7.5 84948 37704 ? S 18:58 0:03 anjuta
199
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
usuario 5824 0.0 0.8 20872 4020 pts/1 Ss+ 19:00 0:00 anjuta_launcher /home/usuario/prueba
usuario 5825 0.0 0.1 2796 820 pts/1 S+ 19:00 0:00 /home/usuario/prueba
root 5827 0.0 0.1 1844 504 ? SN 19:00 0:00 /bin/sh /etc/cron.daily/mandb
man 5833 0.0 0.1 2268 984 ? RN 19:00 0:00 /usr/bin/mandb nopurge quiet
usuario 5834 0.0 0.2 2744 1028 pts/0 R+ 19:00 0:00 ps aux
Podemos ver que en la 1er columna aparece el dueño del proceso (root o usuario) luego en la segunda
columna el PID o nro de proceso, este es el nro. que usaremos para matar el proceso.
Podemos ver que el proceso 5825 es un programa de nombre prueba que se está ejecutando.
Suponiendo que este programa este fuera de control o en un bucle infinito lo mataríamos haciendo:
kill 5825
Este comando kill mata el proceso nro. 5825 que es el programa en cuestión.
Podemos ver que existe en el listado el proceso 5834, que fué justamente el proceso que permitió ver los
procesos (ps aux).
Finalmente, algunas veces el listado suele ser extenso, para facilitar la ubicación del PID de nuestro
programa podemos usar un filtro que permitirá filtar y mostrar solo lo que contenga el filtro.
A modo de ejemplo:
ps aux | grep prueba.
usuario 5824 0.0 0.8 20872 4020 pts/1 Ss+ 19:00 0:00 anjuta_launcher /home/usuario/prueba
usuario 5825 0.0 0.1 2796 820 pts/1 S+ 19:00 0:00 /home/usuario/prueba
usuario 5928 0.0 0.1 3236 792 pts/0 R+ 19:07 0:00 grep prueba
Podemos ver que ps aux no aparece., esto es por que no contiene la palabra “prueba”.
Para cada uno de estos comandos desde la terminal se pueden obtener una ayuda extensa escribiendo:
man grep.
man ps.
200
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Un editor de texto es simplemente un programa usado para la edición de ficheros que contienen texto,
como una carta, un programa en C, o un fichero de configuración del sistema. Mientras que hay muchos
editores de texto disponibles en Linux, el único editor que está garantizado encontrar en cualquier sistema
UNIX es vi el "visual editor".
vi no es el editor más fácil de usar, ni es muy autoexplicativo. De cualquier forma, como es tan común
en el mundo UNIX y es posible que alguna vez necesite usarlo, aquí encontrará algo de documentación.
La elección de un editor es principalmente una cuestión de gusto personal y estilo.
Muchos usuarios prefieren el barroco, autoexplicativo y potente Emacs_un editor con más características
que cualquier otro programa único en el mundo UNIX. Por ejemplo, Emacs tiene integrado su propio dialecto
del lenguaje de programación LISP y tiene muchas extensiones (una de ellas es el programa "Eliza"- como
programa de IA). Pero como Emacs y todos sus ficheros de soporte es relativamente grande, puede que no
tenga acceso a él en muchos sistemas. vi, por otra parte, es pequeño y potente, pero más difícil de usar. De
cualquier modo, una vez conozca la forma de funcionamiento de vi, es muy fácil usarlo. Simplemente la
curva de aprendizaje es bastante pronunciada al comienzo.
Esta sección es una introducción coherente a vi, no discutiremos todas sus características, solo aquellas
necesarias para que sepa como comenzar. Puede dirigirse a la página de manual de vi si está interesado en
aprender más acerca de las características de este editor.
5.7.1. Conceptos
Mientras se usa vi, en cualquier momento estará en uno de tres posibles modos de operación.
Estos modos son conocidos como:
modo órdenes,
modo inserción y
modo última línea.
Cuando inicia vi, está en el modo órdenes. Este modo le permite usar ciertas órdenes para editar
ficheros o cambiar a otros modos.
Por ejemplo, tecleando "x" mientras está en el modo órdenes, borra el carácter que hay debajo del
cursor.
Las teclas del cursor mueven éste por el fichero que estamos editando.
Generalmente, las órdenes usadas en este modo son solamente de uno o dos caracteres de longitud.
Modo última línea es un modo especial usado para proporcionar ciertas órdenes extendidas a vi.
Al usar esos comandos, aparecen en la última línea de la pantalla (de ahí el nombre).
Por ejemplo, cuando teclea ":" desde el modo de ódenes, entrará en el modo última línea, y podrá usar
órdenes como "wq" (para escribir el fichero a disco y salir de vi), o "q!" (para salir de vi sin guardar los
cambios).
El modo de última línea es habitualmente usado por órdenes vi mayores a un carácter.
En el modo de última línea, introduce una orden de una sola línea y pulsa |_enter_|para ejecutarla.
201
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Comenzando con vi
La mejor forma de entender estos conceptos es arrancar vi y editar un fichero. En el ejemplo "screens"
que veremos, vamos a mostrar solo unas pocas líneas de texto, como si la pantalla tuviese solo seis líneas
de altura (en lugar de veinticuatro).
La sintaxis de vi es
vi <filename> donde <filename> es el nombre del fichero que desea editar.
Arranque vi tecleando
/home/larry# vi test lo que editará el fichero test. Debería ver algo como
_____________________________________________________________________________||
|~ |
|~ |
| |
|~ |
|~ |
| |
|~ |
| |
|_"test"[New_file]__________________________________________________________________
|
Insertando texto
Está ahora en modo órdenes; para poder insertar texto en el fichero, pulse |_i_| (lo que le hará entrar
en modo inserción), y comience a escribir.
_____________________________________________________________________________||
| Now is the time for all good men to come to the aid of the party._ |
|~ |
|~ |
|_~___________________________________________________________________________ |
Mientras inserta texto, puede escribir tantas líneas como desee (pulsando |_return_|después de cada
una), y puede corregir los errores con la tecla de borrado de carácter.
Para salir del modo de inserción y volver al modo de órdenes, pulse |_esc_|.
Mientras esté en modo órdenes, puede usar las teclas del cursor para moverse por el fichero. En nuestro
ejemplo, como solo tenemos una línea, el tratar de usar las teclas de línea arriba o abajo, probablemente
hará que vi emita un pitido.
Hay muchas formas de insertar texto además de la orden i.
Por ejemplo, use la tecla de cursor a la izquierda para desplazar el cursor entre las palabras "good" y
"men".
_____________________________________________________________________________||
| Now is the time for all good__men to come to the aid of the party. |
|~ |
| |
|_~___________________________________________________________________________ |
202
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Pulse |_a_| para iniciar el modo inserción, teclee "wo" y pulse |_esc_| para volver al modo de ódenes.
______________________________________________________________________________
| Now is the time for all good women to come to the aid of the party. |
| |
| |
|_~___________________________________________________________________________ |
Borrando texto
Desde el modo de órdenes, la orden x borra el carácter debajo del cursor. Si pulsa |_x_|cinco veces,
terminará con:
______________________________________________________________________________||
| Now is the time for all good women to come to the aid of the party. |
| Afterwards, we'll go out for pizza and__ |
| |
|_~___________________________________________________________________________ |
Puede borrar líneas enteras usando la orden dd (es decir, pulse |_d_|dos veces en una fila). Si el cursor
está en la segunda línea y teclea dd,
________________________________________________________________________________
| Now is the time for all good women to come to the aid of the party. |
| __ |
| |
|_~___________________________________________________________________________ |
Para borrar la palabra sobre la que se encuentra el cursor, use la orden dw. Situe el cursor sobre la
palabra "good" y pulse dw.
______________________________________________________________________________||
| Now is the time for all _ women to come to the aid of the party. |
|~ |
| |
|_~___________________________________________________________________________ |
203
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Modificando texto
Puede sustituir_secciones de texto usando la orden R. Situe el cursor en la primera letra de "party" y
pulse |_R_|, y escriba la palabra "hungry".
______________________________________________________________________________||
| Now is the time for all women to come to the aid of the hungry._ |
|~ |
| |
|_~___________________________________________________________________________ |
El uso de R para editar texto es bastante parecido al uso de las órdenes i y a, pero R sobrescribe texto
en lugar de insertarlo.
La orden r sustituye un único carácter situado debajo del cursor. Por ejemplo, situe el cursor al comienzo
de la palabra ñow" y escriba r seguido de C. Obtendrá:
______________________________________________________________________________||
| C_ow is the time for all women to come to the aid of the hungry. |
|~ |
| |
|_~___________________________________________________________________________ |
La orden "~" cambia de mayúsculas a minúsculas o viceversa la letra sobre la que se_encuentra_ el
cursor. Por ejemplo, si situa el cursor sobre la "o" de "Cow", y repetidamente pulsa |_~_|, obtendrá:
____________________________________________________________________________
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
| __ |
|~ |
|_~___________________________________________________________________________ |
Ordenes de movimiento
Ya conoce como usar las teclas del cursor para moverse por el documento. Además, puede usar las
órdenes h, j, k y l para mover el cursor a la izquierda, abajo, arriba y derecha respectivamente. Esto es muy
cómodo cuando (por alguna razón) sus teclas de cursor no funcionen correctamente.
La orden w mueve el cursor al comienzo de la siguente palabra; b lo lleva al comienzo de la
palabra anterior.
La orden 0 (cero) mueve el cursor al comienzo de la línea actual, y la orden $ lo lleva al final de
la línea.
Al editar ficheros grandes, querrá moverse hacia adelante y atrás a lo largo del fichero mostrando una
pantalla cada vez.
Pulsando |_ctrl-F_| avanza el cursor una pantalla hacia adelante y |_ctrl-B_| lo lleva una pantalla atrás.
Para llevar el cursor al final del fichero, pulse G.
Puede también desplazarse a una línea arbitraria; por ejemplo, pulsando la orden 10G llevará el cursor a
la línea 10 del fichero.
Para desplazarse al comienzo, use 1G.
204
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
Al pulsar ":", el cursor se desplazará a la última línea de la pantalla; está en modo última línea.
____________________________________________________________________________
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
| |
|_____________________________________________________________________________ |
En el modo de última línea hay disponibles una serie de órdenes extendidas. Una de ellas es q!, la cual
permite salir de vi sin guardar los cambios.
La orden :wq salva el fichero y sale de_vi.
La orden ZZ (desde el modo de órdenes, sin ":") es equivalente a: wq. Recuerde que debe pulsar
|_enter_| después de introducir la orden para que esta se ejecute en el modo última línea.
lo cual significa que vi no quiere editar otro fichero hasta que salve el primero.
En este punto, puede usar: w para guardar el fichero original, y entonces usar: e, o puede usar la orden
______________________________________________________________________________||
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. |
|~ |
| :e! foo |
|_____________________________________________________________________________ |
El signo "!" le dice a vi lo que realmente desea usted editar el nuevo fichero sin salvar los cambios del
primero.
205
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
1. ¿Qué es el Shell?
2. ¿Es cierto que hay un solo shell? Justifique la respuesta.
3. ¿Qué es el prompt?
4. Indique cual de estos caracteres es un metacaracter.
? Si ___ No ___
+ Si ___ No ___
* Si ___ No ___
/ Si ___ No ___
5. ¿Qué es un sistema de File System?
6. ¿Cómo haría para ver el nro de inodo de un archivo llamado Ejemplo.opt?
7. ¿Qué comando utilizaría para ver el espacio libre en un disco?
8. ¿Cómo sería la sintaxis del comando para buscar un archivo de nombre ejemplo.txt en todo el
File System?
9. Si tengo:
4836 root 20 0 62352 39m 10m R 2.2 4.0 0:20.50 Xorg
5390 usuario 20 0 204m 76m 54m S 1.8 7.7 0:10.19 soffice.bin
5246 usuario 20 0 21616 3076 1728 R 0.7 0.3 0:02.46 gnome-screensav
5838 usuario 20 0 97.9m 24m 12m R 0.7 2.4 0:00.44 gnome-terminal
¿Cuál sería el comando para matar el proceso soffice.bin?
10. ¿Qué es un Proceso?
11. Un programa, ¿usa espacio en Disco o en Memoria?
12. ¿Cómo sería la sintaxis de una línea de comandos que usando el ps, filtre dentro de la lista de
procesos aquellas líneas que tienen la palabra soffice?
13. Cree tres directorios anidados
Dir1-
|- Dir2
|-Dir3
206
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
#include <iostream>
using namespace std;
int main()
{
cout<<"Hola Mundo"<<endl;
return (0);
}
207
TALLER DE INFORMÁTICA CAPITULO 5. Sistemas Operativos
17. Guarde el archivo. Compile usando la siguiente línea de comandos: "g++ -c prueba.cc". Y luego
genere un ejecutable con: "g++ -o prueba prueba.cc". Usando el manual, o el help averigüe que
significa el parámetro "-o" y "-c" . Observe la diferencia entre el manual del comando y la ayuda.
18. Pruebe el programa usando el comando: "./prueba". Debiera ver el cartel "Hola Mundo" en
pantalla y luego el prompt del sistema.
19. Utilice el comando "ls" para ver los permisos del programa "prueba".Utilice el manual del
comando para ver que parámetro utilizar.
20. Quite los permisos de ejecución al programa "prueba".
21. Intente ejecutar nuevamente el programa "prueba". Analice que sucede.
22. Presione flecha arriba tantas veces hasta llegar al primer comando que ejecuto: "mkdir
taller2009", luego borre 2009. Observe que ocurre con la tecla tabular, borre todo y escriba
"mk" y nuevamente presione la tecla tabular.
23. Dentro del directorio /backuptaller2009 cree un archivo de texto donde explique brevemente que
hacen las teclas tabular, flecha arriba y flecha abajo. Ejecute el comando "cd ~" y luego intente
ejecutar el programa prueba; ¿Como debe ser el comando para poder ejecutarlo?.
Para recordar:
CTRL+C y CTRL+V, copia y pega en ventana gráfica.
CTRL+SHIFT+C y CTRL+SHIFT+V, copia y pega en la consola de comandos.
El comando "ls" se usa para listar el contenido de la carpeta.
"man <nombre de comando>" abre el manual del comando especificado, se sale presionando la
letra "q".
" <nombre de comando> --help" muestra una ayuda de como se usa el comando.
Al escribir las rutas a los archivos, presionando la tecla "TABULADOR", se autocompleta el
nombre que se está escribiendo, esto agiliza mucho la tarea.
208
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
CAPITULO 6.
SOFTWARE DE APLICACIONES
El software de aplicación es el conjunto de programas que han sido diseñados para que la computadora
pueda desarrollar un trabajo.
Sirven como herramienta para elevar la productividad de los usuarios en la resolución de problemas.
Está diseñado y escrito para realizar tareas específicas personales, empresariales o científicas. El software de
este tipo procesa datos y genera información.
Consta de:
* Lenguajes de programación
Fortran
Cobol
Basic
Pascal
C
* Lenguaje ensamblador
Lenguajes de Programación
Los lenguajes naturales son aquellos con los cuales hablamos y escribimos en nuestras actividades
cotidianas. Los lenguajes de programación ocupan una posición intermedia entre los lenguajes naturales
humanos y los precisos lenguajes de máquina.
El lenguaje de programación consiste en un conjunto de órdenes o comandos que describen el
proceso deseado. Cada lenguaje tiene sus instrucciones y enunciados verbales propios, que se combinan
para formar los programas de cómputo.
Los lenguajes de programación son herramientas que permiten construir y adecuar aplicaciones.
Son cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su
procesamiento por un ordenador
Cada generación de lenguajes es más fácil de usar y más parecida a un lenguaje natural que su
predecesores.
Los lenguajes posteriores a la cuarta generación se conocen como lenguajes de muy alto nivel. Son
lenguajes de muy alto nivel los generadores de aplicaciones y los naturales.
En cada nuevo nivel se requieren menos instrucciones para indicar a la computadora que efectúe una
tarea particular.
209
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Un mayor nivel significa que son necesarios menos comandos, debido a que cada comando o mandato
de alto nivel reemplaza muchas instrucciones de nivel inferior.
Segunda Generación – Lenguajes ensambladores: (Fines de los ’50) En lugar de usar códigos
binarios, las instrucciones se representan con símbolos fáciles de reconocer, conocidos como
mnemotécnicos. Aún se utilizan estos lenguajes cuando interesa un nivel máximo de eficiencia en la
ejecución o cuando se requieren manipulaciones intrincadas. Son únicos para una computadora particular.
Esta dependencia de la computadora los hace ser lenguajes de bajo nivel.
Tercera Generación: años ’60. Los lenguajes de esta generación se dividen en tres categorías, según
se orienten a:
* Procedimientos: Requieren que la codificación de las instrucciones se haga en la secuencia en que se
deben ejecutar para solucionar el problema.
A su vez se clasifican en científicos (p.ej.: FORTRAN), empresariales (v.g.: COBOL), y de uso general o
múltiple (p.ej.: BASIC).
Permiten señalar cómo se debe efectuar una tarea a un nivel mayor que en los lenguajes
ensambladores. Hacen énfasis en los procedimientos o las matemáticas implícitas, es decir en lo que se hace
(la acción).
* Objetos: El énfasis se hace en el objeto de la acción. Los beneficios que aportan estos lenguajes
incluyen una mayor productividad del programador y claridad de la lógica, además de ofrecer la flexibilidad
necesaria para manejar problemas abstractos de programación.
Cuarta Generación: su característica distintiva es el énfasis en especificar qué es lo que se debe hacer,
en vez de cómo ejecutar una tarea.
Las especificaciones de los programas se desarrollan a un más alto nivel que en los lenguajes de la
generación anterior. La característica distintiva es ajena a los procedimientos, el programador no tiene que
especificar cada paso para terminar una tarea o procesamiento.
Características de los lenguajes de cuarta generación son:
Uso de frases y oraciones parecidas al inglés para emitir instrucciones
No operan por procedimientos, por lo que permiten a los usuarios centrarse en lo que hay que
hacer no en cómo hacerlo
Al hacerse cargo de muchos de los detalles de cómo hacer las cosas, incrementan la
productividad.
Hay dos tipos de lenguajes de cuarta generación, según se orienten:
a la producción: Diseñados sobre todo para profesionales en la computación.
al usuario: Diseñados sobre todo para los usuarios finales, que pueden escribir programas para
hacer consultas en una base de datos y para crear sistemas de información. También se llama
lenguaje de consultas (SQL, Structured Query Language: lenguaje estructurado para consultas).
Procesador de Textos
210
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Sustituyen el trabajo de una tradicional maquina de escribir. Podemos encontrar las siguientes
funciones:
Escribir de corrido y una sola vez todo nuestro documento
Permiten con suma rapidez y flexibilidad hacer modificaciones al contenido, como: mover
párrafos o bloques de texto completo de una hoja a otra, entre documentos e incluso entre
programas.
Cambiar en un instante palabras o frases repetidas por sinónimos.
Permiten modificar en la marcha el escrito sin desperdiciar papel, ni tiempo.
Se puede cambiar completamente el estilo, diseño, formato e incluso el tipo y tamaño de la letra
deseada.
Podemos verificar la ortográfica del documento.
Se pueden crear cartas o documentos de tipo constante, ya sea para circulares o formatos
específicos incluso de facturación y manipularlos rápidamente.
Crear Documentos estilo periodístico a base de columnas, con gráficos, imágenes o fotografías e
incluso en formato cuadricular.
Cuentan palabras, deshacen los cambios, imprimen partes, etc.
Planilla de Cálculo
También denominadas Hojas de cálculo. Es una de las herramientas imprescindibles en cualquier
empresa, ya que permite realizar tareas que involucran complejas fórmulas y procesos basados en análisis,
proyecciones, presupuestos, amortizaciones, cálculos básicos pero repetidos en cantidades, etc.
Entre las capacidades de las modernas hojas de cálculo, encontramos las siguientes:
Rápida escritura de fórmulas autocalculables
Inmensa cantidad de funciones financieras, científicas, matemáticas, lógicas, etc.
Implementación avanzada de varios gráficos estadísticos
Incrustación de texto e imágenes de diseño gráfico
Poder en la manipulación de grandes cantidades de registros de información
Diseño, Generación e Impresión rápida de reportes y listados.
Herramientas flexibles de proyección y análisis para la planeación y la oportuna toma de
decisiones
Graficación
a) Software de pintura: con él es posible “pintar” pixels en la pantalla usando un dispositivo
apuntador, traduciendo los movimientos a líneas y patrones en la pantalla. Un programa de pintura ofrece
herramientas, de las cuales algunas imitan instrumentos de dibujo del mundo real.
c) Software de dibujo: almacena una imagen, no como una colección de puntos, sino como una
colección de líneas y formas. Calcula y recuerda una fórmula matemática para la línea. El programa de
dibujo almacena las formas como formas y el texto como texto; es lo que se conoce como graficación
orientada a objetos.
Incrementar la facilidad con que el usuario puede interactuar con el hardware y el software.
211
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Software cada vez más interactivo, mediante el uso de dispositivos apuntadores, programas de
reconocimiento de voz.
Incremento en la velocidad de acceso a los datos para los usuarios finales.
Comercialización de software directamente a usuarios finales.
Desarrollo de software integrado que tienen capacidades de comunicación y control. Integran
partes de una institución y permiten el control y coordinación de la toma de decisiones en la
institución.
212
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Formato → Página:
Se configurarán principalmente:
Estilos de pagina (Se verá mas adelante).
Tamaño y formato del papel, diseño, tipo de numeración de página. 2
Fondo de la página.
Columnas
Encabezado y Pie de Página (solamente configuraciones).
Nota al pie (solamente configuraciones).
Hay que tener en cuenta que la edición de página y párrafo siempre están asociado a un
determinado Estilos de página (predeterminado, primera página, índices, sobre, Página
derecha, etc.). Este estilo de página es usado a la hora de configurar de forma diferente una
página con otra; así por ejemplo se podrá insertar una página horizontal en el medio de
verticales.
ejemplo: año, número de página, nombre del documento, logo, etc.). En esta pestaña de
configuración de páginas están características como: tamaño, bordes, etc.
Para Insertar un Encabezados o Pie de Página:
213
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
serán campos distintos, uno sera el número de página y otro la cantidad de página.
Nota al Pie
Ésta va en otro lugar de la página, mas arriba del pie de página; su configuración es mas
limitada y su utilización es distinta.
En la pestaña correspondiente en la ventana de configuraciones de página se podrán
configurar:
Área de la nota al pie.
Linea de separación.
Las Notas al pie se usan para hacer aclaraciones de ciertos temas, insertando
automáticamente una referencia al final de la hoja o del documento.
Para Insertar una nota al pie, se debe tener el cursor al final de la palabra o texto al cual
se quiere referenciar, luego:
Insertar → Nota al Pie/Nota al Final.
CONFIGURACIONES DE PÁRRAFOS
Formato → Párrafo.
Aquí se configuran Principalmente:
Sangría y Espacios (importante en todo documento).
Alineación: Justificado, Centrado, etc. (CTR + [J L R T]).
Flujo del texto . 7
PERSONALIZAR
214
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
rápidas configuradas en esta pestaña, facilitan o agilizan bastante el uso del procesador de
texto .
8
Barras de Herramientas
Las barras de herramientas (por defecto, están visibles las barras: Estándar y Formato)
se pueden activar o colocar en el panel desde el menú: Ver → Barras de Herramientas →
[...]. Las cuales son configurables desde:
Ver → Barra de Herramientas → Personalizar.
Click derecho → Personalizar Barra de Herramienta.
9
Herramientas → Personalizar.
En el asistente de configuración se debe seleccionar la barra a editar, luego:
Si el elemento esta en la lista, solo hay que asegurarse que este tildado.
Si no lo esta, hay que Agregar...
OPCIONES
Herramientas → Opciones.
Aquí, las configuraciones son muchas y complejas, abarca desde el tiempo que tarda en
guardar el archivo (copia de seguridad), hasta formato por defecto que se usará para guardar
el documento .10
Formateo de texto
Para este tema, en OpenOffice, la palabra clave es Carácter. Para editar el formato del
texto:
Click derecho → Carácter.
11
Formato → Carácter.
En esta ventana las configuraciones principales son:
Fuente: tipografía, tamaño.
Efectos: subrayado, relieve, mayúsculas.
Fondos.
Pero es importante recalcar que en la barra de herramientas es común tener estas
opciones además de otras, como por ejemplo superíndices o subíndices.
Corrector Ortográfico
Se usa para estar seguro de que el texto escrito este correcto. Generalmente se desea:
Cambiar idioma de un texto o una palabra:
Efectuar una corrección asistida:
215
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Para esto primero hay que configurar el corrector (por defecto se encontrará en el idioma
del sistema operativo):
Herramientas → Idioma → […] → Idioma a usar.
En la barra de estado
El corrector ortográfico generalmente esta activo, en tal caso habrá un icono en la barra
de herramientas que permitirá desactivarlo, o en caso contrario activarlo, indicando la
activación o no del corrector ortográfico. Si no está el icono es porque alguien ha modificado
la barra de herramientas o no está la barra de herramienta estándar.
Cabe destacar que éste corrector es de ortografía nada mas. Existen extensiones para
OpenOffice Writer, como LanguageTool, que es una herramienta de corrección gramatical.
GENERALIDADES
Porque es útil usar “Estilos y Formatos”: Porque una vez configurado, con simples
combinaciones de teclas o simples click, se podrá cambiar la configuración de los textos y/o
páginas seleccionadas, cuyos cambios abarcan muchos aspectos (como estilos de párrafo,
página, formatos, carácter, etc.).
Existen distinto tipos de estilos ya configurados, como ser: encabezado1, encabezado2,
cuerpo de textos, predeterminados, contenido de tabla, etc., que están listos para ser usados.
Estos estilos serán usado automáticamente en ciertas acciones, como por ejemplo: cuerpo
de texto será usado en documentos, Ilustraciones en gráficas o figuras, Pie de página en notas
al pie, texto de tablas en tablas, etc. Entonces, si se modifican los estilos, automáticamente
se estarán usando configuraciones a gusto de cada uno, en todo el documento.
Muchas características que posee OpenOffice en general, requieren que el usuario sepa
usar esos estilos, ya sean de páginas, de párrafos, de carácter, etc. Por ejemplo, si se quiere
que la carátula de un documento no este usando el pie de página pero si el resto del
documento, es necesario usar estilos diferentes.
216
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Para editar los Estilos y Formatos se tendrá que estar usando un estilo determinado,
luego, hacer click derecho sobre el párrafo → Editar estilo de párrafo. Este método tiene
muchas opciones reagrupadas y a veces suelen prestar a confusión.
12
Otra forma de editar es: Editar un texto cualquiera, configurar de la forma ya vista su
preferencia de párrafo, de carácter, etc., luego presionando F11 o yendo a Formato →
Estilos y Formatos se selecciona el nombre del estilo que se quiere editar (ejemplo:
Encabezado 1) y luego “Actualizar estilos”.
Entonces: Para Editar los Estilos de Párrafo hay que “Actualizar Estilos de Párrafos”.
CONSEJOS
Para Encabezados
Configuraciones de Párrafo:
Espacio entre párrafo.
Que este tildada la casilla mantener párrafos juntos .
13
Esto hace referencia a enumerar capítulos, títulos subtítulos, figuras, etc. Como se puede
ver en este documento, en los encabezado se ha usado una numeración. Para editarla hay que
ir a:
Herramienta → Numeración de Capítulos.
Ya en la ventana, en la primer pestaña, se configura la forma de la numeración, el nivel
usado, el texto que ira antes y después, etc., para los distintos estilos que se requiera. En la
segunda pestaña se configura la posición y el espaciado (en muchos casos, es útil cambiar
Tabulación por Espacio).
También se podrá insertar la numeración en los capítulos de la misma forma que se inserta
una numeración en un texto cualquiera, como se explica mas adelante (sección 7 ). Este
puede ser un método mas fácil pero a la vez NO tan configurable.
Formatos de Páginas
217
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
estilos y formatos distintos para cada página. La edición de la los distintos estilos, es similar a
la edición de estilos para párrafos:
En complemento a las configuraciones dichas anteriormente (sección 1.1 ). Lo
que se necesita es guardar las configuraciones hechas en un estilo. Si se esta
trabajando con un estilo, ya sea predeterminado o seleccionado manualmente, al
editarlo se irá guardando, pero si se quiere editar además otro estilo, se tendrá que
cambiar.
Para usar un determinado estilo, es conveniente usar la barra de estado (ver ).
Con F11 o Estilos y Formatos. Se abre el gestor de formatos, en la cuarta
pestaña (estilos de páginas), se podrá elegir el estilo deseado. También, una vez
configurada la pagina a gusto, se usa para actualizar algún estilo, en este caso de
página.
Uso de Plantillas
218
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Numeración y Viñetas
Método clásico:
Click derecho → Numeración y viñetas.
Agregamos un icono en la barra de herramienta.
En esta ventana de configuración, se pueden configurar varios aspectos entre ellos:
Tipo de numeración
Esquema
Imagen
Niveles
Opciones, etc.
Otros métodos de insertar o modificar viñetas son:
Es útil, en los casos que se usen muy a menudo, configurar teclas rápidas. La
forma es: Herramientas → Personalizar... → Teclado, usando CTR + [5 6 7 8] por
ejemplo.
Una vez que estas usando viñetas, podes usar TAB o SHIFT + TAB para
cambiar de niveles. Esto es: Con el cursor al inicio del párrafo presionas TAB para
subir de nivel o SHIFT + TAB para bajar.
Insertar Imagen
Insertar → Imagen → a partir de archivos. También es una buena forma de insertar las
imágenes arrastrándolas desde un navegador de archivos o copiándolas desde portapapeles.
Una vez insertada, es importante configurar (Doble click o Click derecho → Imagen).
Entre las preferencias y características se pueden encontrar:
Opción de redimensionamiento (importante es mantener proporciones)
Recortar
Modo en que se integrará la imagen con el texto y el resto de los objetos. En la
pestaña Ajustes → predeterminaciones (Ninguno, Dinámico, Detrás, etc.)
Teniendo seleccionada la imagen, aparece una nueva barra de preferencia, esta
tiene cosas simples pero muy útiles, como ser:
Filtro: invertir, suavizar, aumentar nitidez, etc.
Modo de gráfico: escalas de grises, etc.
219
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Titulo de Imagen
Click derecho sobre la imagen → Titulo entonces se abre un asistente.
En la casilla Categorías (del asistente) se podrá crear un nuevo tema, en este caso se
creó Figura.
Características del Titulo: Si se creó una nueva categoría, llamada Figura, una vez
insertado el titulo de la imagen, se creará un nuevo estilo llamado Figura, el cual se podrá
editar al igual que se editan los demás estilos.
Insertar Tablas
220
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Objetos OLE
Son básicamente cualquier archivo hecho en OpenOffice que pueden ser insertados en un
documento. Para insertar un objeto OLE: Insertar → Objeto → Objeto OLE → […]. En esta
ventana se observaran distintas categorías, de las que veremos:
Formulas.
Hoja de Cálculo.
Dibujos.
Los Objetos OLE tendrán en el documento en el cual fueron insertados un aspecto
semejante a una imagen o gráfico (la configuración principal estará en vez de click derecho →
Imagen en Click derecho → Objeto) pero su contenido podrá ser editado y tendrá las mismas
herramientas que en CALC, DRAW o MATH. Por tal caso siempre podremos editar el Objeto
OLE en el mismo documento (editor empotrado) o abriéndolo externamente (Objeto OLE
externamente).
También, y respaldando lo que se ha dicho, se podrá insertar un título en un Objeto OLE,
al igual que en las Imágenes, esto será útil para el caso de tablas de cálculos, diagramas y
dibujos.
INSERTAR FORMULA
Para insertar la formula (con un número y que éste pueda ser usado para referencia) como
a continuación:
(1)
Usando auto-texto, hay que escribir “núm” y presionar F3. En éste método lo que se esta
haciendo es uso de un auto-texto, éste a su vez inserta una tabla de dos columnas por una fila
(con una distribución predeterminada) en la cual contiene un objeto (formula) y otro un texto
(ver ) que se ira actualizando para cada fórmula.
Otra forma de insertar una formulas es:
Insertar → Objeto → Formula. Pero este método no tendrá todas las características que
posee el anterior.
Editar formulas
Para esto se puede hacer con Doble click, en este caso se usará el editor de formula
empotrado. También se puede usar el editor externo (click derecho → Activar objeto OLE
externamente). El uso del editor es tanto gráfico (no tan intuitivo) como por comandos (muy
útil y el más usado) .
15
221
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Cualquiera de estos métodos, insertarán un objeto OLE, que es tratado como todos en
OpenOffice.
INSERTAR DIBUJOS
Uso de Teclas
Se tratarán uso de las teclas direccionales, combinaciones de teclas que agilizan la edición
de los documentos.
MOVIMIENTO Y SELECCIONES
Estas teclas o combinaciones de ellas, son útiles para los procesadores de textos (Writer),
tanto como para editores de textos (mousepad, leafpad, kwriter, kate, etc.) o IDEs de
programación (anjuta, geany, glade, gambas, etc.).
Up, down, left y rigth: Permite movimientos hacia arriba, abajo,
izquierda y derecha (un carácter).
Page Up y page down: Permite movimientos por paginas hacia
arriba y abajo respectivamente.
Home o Inicio y End o Fin: Movimiento al Principio y al final del
renglón.
Efecto de la tecla SHIFT: Se usa para seleccionar el texto desde donde estaba
el cursor anteriormente a donde esta después del movimiento.
Efecto de la tecla CTR: Usada como multiplicador de efecto, es decir:
CTR + [Up, down, left y rigth]: Los movimientos hacia arriba y
abajo se realizan por párrafos; de izquierda y derecha por palabras.
CTR + [Home y End]: Movimiento al Principio y al final del
documento.
Si se combinan los efectos de CTR y SHIFT, funcionaria como seleccionador y a
la vez multiplicador de efectos. A modo de ejemplo:
CTR + Home y después CTR + SHIFT + End: Seleccionaría todo el documento.
222
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
COMBINACIONES DE TECLAS
Estas configuraciones están por defecto configurada según el idioma que se usa en el
sistema, a veces por motivos desconocidos las combinaciones de teclas son en ingles aunque
el sistema operativo este en español, algunos ejemplos son:
CREAR ÍNDICES
Un aspecto a tener en cuenta es que cuando queramos crear un índice, Los niveles de
configurados en Numeración de Capítulos serán los niveles del índice.
Para crear un índice basta con:
Usar los estilos y formatos
Configurar los niveles (en caso de que se haya usado encabezado [1 2 3 …] no
es necesario).
Insertar → Índices y seguir el asistente.
Actualizar
Herramientas → Actualizar → [Campos, Todos los índices...]
Si se realiza una edición manual del índice, ésta es sobre-escrita al actualizar el índice o al
actualizar todo.
223
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Si se desea que los objetos tengan una numeración que siga al capítulo (por ejemplo
Figura 3.1.1)se tendrá que modificar la forma de insertar el título de la figura:
Click derecho → Título → Opciones. Y aquí hay que configurar el nivel (nivel uno: sigue
al titulo, nivel dos: sigue al subtitulo...).
Para configurar la numeración de las formulas (por ejemplo 3.1.1), hay que poner el cursor
en frente del número y:
Click derecho → Campos → Opciones. Y aquí se configura el nivel.
USO DE REFERENCIAS
Insertar → Referencia.
Esta es útil para documentos largos. Por ejemplo: se inserta una nueva sección en medio
del documento, por lo tanto cambiara la numeración y la referencia, entonces, se debe
cambiar manualmente la referencia (si es que esta no se esta usando) y muchas veces recién
después de imprimir el trabajo nos damos cuenta que se esta haciendo mal la referencia.
Como es obvio: Insertar → salto de página. Es muy simples, pero hay aclaraciones que
son validas en ciertos casos:
Si se quiere insertar una carátula o índices se puede insertar la página con un
estilo distinto (generalmente primera página o índices).
Insertar la página pero que la numeración de pagina empiece en un valor
determinado.
Insertar página de forma Horizontal (es un estilo de página).
BARRA DE ESTADO
La barra de estado puede estar de modo visible o no (menú → ver → barra de estado). En
ella se encuentran:
Número de página: Ver la cantidad de páginas y en que página se está situado.
Estilo de la página: Ver el estilo usado y con click derecho permite cambiar el
estilo.
Idioma: Ver el idioma usado y con click derecho permite cambiar el Idioma ya
sea para una selección, una palabra o el texto completo.
Modo de inserción (tecla insert), sobrescribe el carácter que sucede al cursor.
Nivel de numeración o viñeta.
Escala o Ampliación: permite ajustar la escala del documento.
224
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
…………………………………………….
225
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Una archivo de planilla de Cálculo esta formado por varias hojas. Cada hoja tiene columnas y filas.
La intersección de una fila y una columna es una Celda.
Cada Celda puede contener: Texto, Valores Numéricos, Funciones , Fórmulas.
Cada Fila de una hoja suele tener como nombre un número.. (1,2,3....) y cada columna de esa hoja
una letra ( A,B,C...) así que cada celda al ser la intersección de una fila con una columna recibe el
nombre de ambas, por ejemplo para referirnos a la celda que resulta de la intersección de la fila 2
con la columna B lo haremos con B2.
Como una hoja de Cálculo puede contener varias hojas..estas tendrán nombres.. de esta manera se
puede indentificar a cada celda de cada hoja. Estos nombres se pueden personalizar, los nombres de
las hojas de cálculo se pueden ver en la parte inferior de cada hoja.
Una formula es una expresión que escribimos en una celda , por ejemplo en la Celda B3 ,
escribimos
B2+B1, esto quiere decir que el contenido o lo que vemos en la celda B· será la suma de el
contenido de B2 mas el contenido de B1 , ya veremos mas al respecto mas adelante.
226
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Una función es una fórmula que utiliza un lenguaje propio de la planilla de cálculo, que permite
hacer operaciones mas compleja. (promedios, máximos, mínimos, etc). Mas adelante veremos mas
en detalle el uso de funciones.
La cantidad de Filas y Columnas para cada hoja dependen de la aplicación, por ejemplo:
Podemo
s ver
también
las
barras Barra de
de herramient
desplaz
amiento
horizont
al y
vertical
de la
Ventana
. Sobre Ho
la parte
inferior
izquierd
a
podemo
s ver:
Estas flechas nos permiten avanzar a la siguiente , ultima o anterior y primer hoja de cálculo.
Barra de Fórmula:
227
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Es la Barra situada en la parte superior de la ventana o area de trabajo, que se utiliza para introducir
o modificar los valores o las fórmulas de las celdas o los gráficos. Muestra el valor constante o la
fórmula utilizada en la celda activa.
Se puede mostrar u ocultar la barra de fórmulas, en Open Office Ver->Barra de Herramientas-
>Formula.
Cuadro de Nombre:
Es el nombre que tiene la celda. Este nombre se puede personalizar, por ejemplo se podría llamar
una celda: temp_amb, para que en ella escribamos el valor de la temperatura ambiente. Esto sirve
por que luego en una formula o función se podría usar el nombre personalizado lo que mejoraría la
compresión de la formula.
Celda Activa:
Celda donde esta el cursor. Lo que escribamos se ubicaría en esta celda.
Barra de Herramientas:
Esta barra sirve para agilizar el acceso a comando usados con mayor frecuencia. Se puede
personalizar el contenido de la misma.
Barra de Estado:
Se puede visualizar distintas opciones. Cantidad de hojas ( ej: 2/13) , Escala de Visualización,
Promedio , Suma , Cantidad de un rango celdas Seleccionados.
Menú:
Debajo de la barra de títulos de la Ventana , encontramos la Barra de Menú, similar al de cualquier
otra aplicación, pulsando con el puntero del Mouse sobre cualquiera de sus opciones se descolgara
hacia abajo un menú de tipo persiana con una serie de comandos y funciones relacionadas con dicha
opción. Estando el menú desplegado con las teclas Flecha abajo/arriba nos movemos entre las
opciones, con las teclas Flecha derecha/izquierda nos movemos entre los menúes, con la tecla
ENTER se elige una opción y con la tecla ESC se sale del menú.
También podemos acceder al menú presionando ALT + Primer letra del menú deseado.
228
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
la celda E3 =D3*C3
Entonces se puede ver que las referencias a las celdas se ajustaban al copiar las fórmulas: este tipo
de referencias se llaman referencias relativas, y son las más corrientes. Sin embargo, en ocasiones
nos interesa usar referencias absolutas, es decir, referencias que no se ajustan al copiar una fórmula
de una celda a otra: para ello, ponemos el carácter $ delante de la referencia a la columna, a la fila, o
a ambas, según nos interese mantener fija la referencia a la columna, a la fila, o tanto a la columna
como a la fila. Por ejemplo:
Referencia relativa B2
Referencia absoluta a la columna $B2
Referencia absoluta a la fila B$2
Referencia absoluta (a la columna y la fila) $B$2
Funciones y Fórmulas
En realidad hacemos una diferencia respecto de formula y función , una formula es una expresión
que escribimos en una celda , por ejemplo en la Celda B3 , escribimos B2+B1, esto quiere decir que
el contenido o lo que vemos en la celda B· será la suma de el contenido de B2 mas el contenido de
B1 , y consideramos función una expresión que es propia de la planilla de calculo , como ser la
función suma. Veamos un ejemplo de esto:
Fórmula Función
En general todas las planillas de cálculo poseen muchas funciones que están agrupadas por
"categorías" , es decir las lógicas, trigonométricas, matemáticas, estadísticas, etc.
229
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
Para cada una de estas suele existir una pequeña ayuda sobre su utilización , suele ser algo así como
la imagen que se muestra a continuación:
Esto permite entender la Sintaxis de la fórmula, la cual hay que respetar para poder usarla.
A modo de ejemplo vamos a comentar sobre algunas de las planillas de cálculo que existen hoy en
día como ser el Excel de Microsoft y la que usaremos en este curso de Calc Open Office.
No intentaremos comparar o calificar a cada uno de ellos , no viene al caso , simplemente
mencionaremos características de Open Office Calc y algunas parecidas o distintas del Excel ya que
este esta muy difundido.
Este programa de hoja de cálculo ; Calc viene incluido en la suite completa de Open Office desde
el nacimiento de esta y al igual que los otros programas de la suite como ser :
Esta suite de programas está disponible para un número de plataformas más amplio y lo mas
importante tiene una licencia libre.
Veamos una comparativa de las características del Software propietario contra el Software libre:
230
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
En particular ahora nos referiremos a Calc que nos presenta una interfaz similar a la vista en
anteriores de la planilla de Microsoft Excel , decimos esto por que la última versión del Excel (
2007) se modificó bastante , las diferentes funciones del programa son accesibles desde la barra de
menús despegables de la parte superior de la pantalla , como cualquier sistema de ventanas.
Algunas de las características de Calc frente a Excel son, por ejemplo, la gran cantidad de formatos
que el programa es capaz de abrir (incluyendo el formato .xls de Excel y los propios formatos de
Calc, entre otros), esto no es así con el Excel que no permite guardar en un formato por ejemplo
como el del Calc (ods).
Además, podemos realizar también todo tipo de cálculos a través de su editor de fórmulas, que nos
permitirá tratar incluso con números complejos (imaginarios) o con funciones estadísticas
financieras. Posee además un editor de gráficas, que al igual que en Excel nos permitirá generar
gráficas a partir de los datos introducidos previamente y representarlos del modo que queramos.
Al igual que pasaba con Writer (Procesador de Texto del Open Office) , Calc puede salvar nuestro
trabajo directamente en formato PDF, esto no es así en su competidor , ajustando las hojas de
cálculo al formato que le indiquemos.
A modo de ejemplo vamos a comentar las Equivalencias de los Términos usados en cada una de las
suites Ofimática ( OpenOffice.org , Microsoft)
231
TALLER DE INFORMÁTICA CAPITULO 6. Aplicaciones
232
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
CAPITULO 7
7.1. DEFINICIONES
7.1.1. Telecomunicaciones
Las telecomunicaciones pueden definirse como comunicación de información por medios electrónicos,
normalmente a cierta distancia.
Anteriormente, las telecomunicaciones significaban transmisión de voz mediante líneas telefónicas. En la
actualidad, muchas de las transmisiones de telecomunicaciones son de información digital, usando las
computadoras para la transmisión de datos.
Transmitir información
Establecer la interfase entre emisor y el receptor
Enviar mensajes a través de los caminos más eficaces
233
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
7.1.2. Protocolos
Una red típica de telecomunicaciones contiene diferentes componentes de hardware y software que
deben trabajar en conjunto para transmitir información; estos componentes deben adherirse a un conjunto
común de reglas que permiten que se comuniquen entre ellos.
Protocolo es el conjunto de reglas y procedimientos que gobiernan la transmisión entre dos puntos de
una red.
Funciones principales:
Identificar cada dispositivo de la ruta de comunicaciones para asegurar la atención del otro
dispositivo
Verificar la correcta recepción del mensaje transmitido
Verificar que el mensaje requiere retransmisión porque no puede ser correctamente
interpretado
Realizar la recuperación cuando tenga errores.
Los canales de comunicación son los medios mediante los cuales los datos se transmiten de
un dispositivo de red a otros.
Un canal puede utilizar diferentes medios de transmisión de telecomunicaciones: par
trenzado, cable coaxial, fibra óptica, microondas terrestres, satélite.
234
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
a) Par trenzado
Es un medio de transmisión que consiste en pares de alambre de cobre torcidos. Se emplea para la
transmisión analógica de conversaciones telefónicas pero puede ser usado para transmisión de datos.
Ventajas / Desventajas: bajo costo, relativamente lento, tiene interferencia. Velocidad hasta los 10
megabits por seg.
b) Cable coaxial
Es un medio de transmisión que consiste en un alambre de cobre con un gran espesor de aislamiento.
Puede transmitir rápidamente grandes volúmenes de datos.
Ventajas / Desventajas: es más rápido, menos interferencia, velocidad de hasta 200 Megabits por
seg. Es grueso, difícil de instalar, no soporta conversaciones analógicas de teléfonos, se debe mover al
mover las computadoras.
c) Fibra óptica
Consiste en haces de fibra de vidrio transparente, delgados que se unen en cables. Los datos se
transmiten en pulsos de luz que se llevan a través del cable por un dispositivo láser.
Ventajas / Desventajas: velocidad de 500 kilobits por seg. hasta millones de bits por seg. Es más
rápido, más ligero, mas durable. Es apropiado para los sistemas donde se transmiten grandes volúmenes de
información. Es más cara, más difícil de trabajar e instalar.
d) Transmisión inalámbrica
Envía señales a través del aire sin ninguna conexión física. Puede ser de microondas terrestres, satélites,
telefonía celular.
* Sistemas de microondas terrestres
Transmiten señales de radio de alta frecuencia a través de la atmósfera. No requiere de cableado, pero
necesita estaciones entre 40 y 50 Km de distancia. Se utiliza para comunicaciones con alto volumen de
datos, larga distancia y de punto a punto.
* Satélites
Transmisión de datos usando satélites orbitales para servir como estaciones de enlace para la
transmisión de señales de microondas a muy largas distancias.
b) Modos de transmisión
Son convenciones para determinar cuando comienza y cuando termina un carácter.
* Transmisión asíncrona: es la transmisión a baja velocidad de datos, de a un carácter por vez. Cada
carácter limitado por el bit de control, un bit de arranque, uno o dos bits de alto y un bit de paridad.
235
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
c) Dirección de transmisión
Es la dirección del flujo de información a través de la red.
* Dirección simplex: los datos pueden viajar en una sola dirección todo el tiempo.
* Dirección half-duplex: los datos pueden fluir en los dos sentidos, pero solo en una dirección a la
vez.
* Dirección full-duplex: los datos pueden enviarse en las dos direcciones simultáneamente.
7.2.1. Clasificación
Estrella
236
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
II.X.2.1. Estrella
Se trata de un nodo central del cuál salen los cableados para cada estación. Las estaciones se
comunican unas con otras a través del nodo central. Es sencilla de controlar: el software no es
complicado y el flujo de tráfico es simple.
Conectar un conjunto de computadoras en estrella es uno de los sistemas mas antiguos,
equivale a tener una computadora central (el Server), encargada de controlar la información de
toda la red. Dicha información abarca desde los mensajes entre usuarios, datos almacenados en
un archivo en particular, manipulación de archivos, etc. Para poder instalar este tipo de red, cada
una de las computadoras utilizadas como estaciones de trabajo necesitan de una tarjeta de
conexión para lograr la interfase con la computadora central.
II.X.2.2. Bus
Permite conectar a todas las computadoras de la red en una sola línea compartiendo el mismo
canal de datos (bus), de ahí su nombre.
A fin de poder identificar hacia cual de las computadoras de toda la red se está dirigiendo, se
añade un sufijo al paquete de información, este contiene la dirección de la computadora que debe
recibir la información en particular. Cada una de las computadoras revisa el mensaje y comparar
la dirección de la terminal de recepción, en caso de no ser igual a la propia, se rechaza y en caso
de ser igual la dirección, se acepta el mensaje.
237
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
II.X.2.3. Anillo
Recibe su nombre del aspecto circular del flujo de datos.
En muchos casos, el flujo de datos va en una sola dirección. Es decir, una estación recibe la
señal y la envía a la siguiente estación del anillo. La topología en anillo es muy atractiva debido a
que los cuellos de botella son raros.
Además, la lógica necesaria en una red de este tipo es relativamente simple. Consiste en unir
una serie de computadoras en un circuito cerrado formando un anillo por donde circula la
información en una sola dirección, factor que permite tener un control de recepción de mensajes.
238
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
Las redes de área local abarcan una distancia limitada, en general un edificio.
La mayoría de las LAN conectan dispositivos localizados dentro de un radio de los 670 m
Requieren de sus propios canales de comunicación.
En general transmiten a razón de 256 Kilobits a 100 Megabits por seg.
Permiten compartir hardware y software.
El servidor de archivos es una computadora en una red que almacena diversos programas
de la red. Determina el acceso u disponibilidad en la red. Contiene el SO de la red.
Sistema Operativo de la red: software que administra el servidor de archivos en una LAN y
direcciona y administra las comunicaciones en la red.
Existen cuatro tecnologías principales de LAN para conectar físicamente los dispositivos:
Ethernet
Appletalk
Token Ring
ARCnet
Estas tecnologías utilizan una tecnología de canal de banda base o banda amplia.
Banda base (baseband): es una tecnología de canales LAN que proporciona una ruta
única para la transmisión de texto, gráficas, voz o video al mismo tiempo.
Banda amplia (broadband): es una tecnología de canales LAN que proporciona diversas
rutas para la transmisión de texto, gráficas, voz o video de manera que distintos tipos de
datos puedan ser transmitidos simultáneamente.
Sistema operativo
El SO puede residir en cada una de las computadoras o en un servidor único de archivos
designado para todas las aplicaciones de la red.
Ejemplo: son el Netware de Novell, PCLan de IBM.
239
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
240
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
7.3. Conectividad
Requerimientos:
Los programas deben ser escritos como dos componentes separados de software que corren
en distintas máquinas pero aparecen operando una sola aplicación.
Características:
Es difícil escribir software que divida el procesamiento entre clientes y servidores.
Se puede saturar el servidor
Es difícil administrar una red.
241
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
b) Modelo de terminal X
Es una terminal de escritorio controlada centralmente que se usa en una red y que puede
acceder a las operaciones de diversas computadoras remotas de manera simultánea. No son
computadoras con capacidades individuales de procesamiento.
Características:
Es una solución más barata
Requiere de un sistema operativo como UNIX para poder funcionar
Baja el rendimiento cuando se incrementa el número de terminales.
242
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
Alcanzar la conectividad implica establecer normas para las redes, sistemas operativos e
interfases de usuario.
El NIST (National Institute for Standars and Technology) del gobierno federal de los Estados
Unidos, las asociaciones de ingeniería como la IEEE (Institute of Electrical and Electronic
Engineers) y la ANSI (American National Standars Institute) han estabecido las normas para la
definición del lenguaje de software, desempeño del hardware y protocolos de comunicación.
Con la globalización de los negocios, las normas internacionales son críticas.
La ISO (Internacional Organization for Standarisation) y la CCITT (International Telephone
and Telegraph Consultative Commitee) han ayudado a legitimar uno de los más poderosos
modelos conectivos.
Protocolo: es un enunciado que establece cómo una tarea específica debe realizarse.
243
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
Protocolos
Para que los paquetes de datos puedan viajar desde el origen hasta su destino a través de una
red, es importante que todos los dispositivos de la red hablen el mismo lenguaje o protocolo.
Un protocolo es un conjunto de reglas que hacen que la comunicación en una red sea más
eficiente.
Una definición técnica de un protocolo de comunicaciones de datos es: un conjunto de
normas, o un acuerdo, que determina el formato y la transmisión de datos.
Al principio de su desarrollo, las LAN y WAN eran en cierto modo caótico. A principios de la
década de los 80 se produjeron tremendos aumentos en la cantidad y el tamaño de las redes.
A mediados de los 80, las empresas debieron enfrentar problemas cada vez más serios debido
a su expansión caótica. Resultaba cada vez más difícil que las redes que usaban diferentes
especificaciones pudieran comunicarse entre sí.
Se dieron cuenta que necesitaban salir de los sistemas de networking propietarios.
Los sistemas propietarios se desarrollan, pertenecen y son controlados por organizaciones
privadas. Significa que una empresa o un pequeño grupo de empresas controla el uso de la
tecnología.
Abierto: significa que el uso libre de la tecnología está disponible para todos.
Para enfrentar el problema de incompatibilidad de las redes y su imposibilidad de comunicarse
entre sí, la Organización Internacional para la Normalización (ISO) estudió esquemas de
red a fin de encontrar un conjunto de reglas.
Como resultado de esta investigación, la ISO desarrolló un modelo de red que ayudaría a los
fabricantes a crear redes que fueran compatibles y que pudieran operar con otras redes.
El modelo de referencia OSI (Nota: No debe confundirse con ISO), lanzado en 1984, fue el
esquema descriptivo que crearon.
244
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
En el modelo de referencia OSI, hay siete capas numeradas, cada una de las cuales ilustra una
función de red particular.
La división de la red en siete capas presenta las siguientes ventajas:
Divide la comunicación de red en partes más pequeñas y sencillas.
Normaliza los componentes de red para permitir el desarrollo y el soporte de los productos
de diferentes fabricantes.
Permite a los distintos tipos de hardware y software de red comunicarse entre sí.
Impide que los cambios en una capa puedan afectar las demás capas, de manera que se
puedan desarrollar con más rapidez.
Divide la comunicación de red en partes más pequeñas para simplificar el aprendizaje.
Si dos computadoras diferentes usan normas OSI, ambas tendrían software y hardware
correspondiente a cada uno de los niveles del modelo OSI.
APLICACIÓN
PRESENTACIÓN
SESION
245
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
TRANSPORTE
RED
ENLACE DE DATOS
FISICO
Cada capa individual del modelo OSI tiene un conjunto de funciones que debe realizar para
que los paquetes de datos puedan viajar en la red desde el origen hasta el destino.
246
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
El Departamento de Defensa de EE.UU. (DoD) creó el modelo TCP/IP porque necesitaba una
red que pudiera sobrevivir ante cualquier circunstancia. Se necesita que fluya la información o los
datos (organizados en forma de paquetes), independientemente de la condición de cualquier nodo
247
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
o red en particular. El DoD desea que sus paquetes lleguen a destino siempre, bajo cualquier
condición, desde un punto determinado a cualquier otro punto determinado.
Capa de aplicación
Los diseñadores de TCP/IP sintieron que los protocolos de nivel superior deberían incluir los
detalles de las capas de sesión y presentación.
Simplemente crearon una capa de aplicación que maneja protocolos de alto nivel, aspectos de
representación, codificación y control de diálogo.
El modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una sola
capa y da por sentado que estos datos están correctamente empaquetados para la siguiente capa.
Capa de transporte
La capa de transporte se refiere a los aspectos de calidad del servicio con respecto a la
confiabilidad, el control de flujo y la corrección de errores.
El protocolo para el control de la transmisión (TCP), ofrece maneras flexibles y de alta calidad
para crear comunicaciones de red confiables, sin problemas de flujo y con un nivel de error bajo.
TCP es un protocolo orientado a la conexión. Mantiene un diálogo entre el origen y el
destino mientras empaqueta la información de la capa de aplicación en unidades denominadas
segmentos. Orientado a la conexión significa que los segmentos de la Capa 4 viajan de un lado
a otro entre dos hosts para comprobar que la conexión exista lógicamente para un determinado
período. Esto se conoce como conmutación de paquetes.
Capa de Internet
El propósito de la capa de Internet es enviar paquetes origen desde cualquier red y que estos
paquetes lleguen a su destino independientemente de la ruta y de las redes que se utilizaron para
llegar hasta allí.
El protocolo específico que rige esta capa se denomina Protocolo Internet (IP).
En esta capa se produce la determinación de la mejor ruta y la conmutación de paquetes. Esto
se puede comparar con el sistema postal. Cuando envía una carta por correo, usted no sabe cómo
llega a destino (existen varias rutas posibles); lo que le interesa es que la carta llegue.
Capa de red
Es la capa que se ocupa de todos los aspectos que requiere un paquete IP para realizar
realmente un enlace físico y luego realizar otro enlace físico. Esta capa incluye los detalles de
tecnología de LAN y WAN y todos los detalles de las capas física y de enlace de datos del modelo
OSI.
248
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
Diferencias
TCP/IP combina las funciones de la capa de presentación y de sesión en la capa de
aplicación.
TCP/IP combina la capas de enlace de datos y la capa física del modelo OSI en una sola
capa.
TCP/IP parece ser más simple porque tiene menos capas
Los protocolos TCP/IP son los estándares en torno a los cuales se desarrolló Internet.
En comparación, no se crean redes a partir de protocolos específicos relacionados con OSI,
aunque todo el mundo utiliza el modelo OSI como guía.
249
TALLER DE INFORMÁTICA CAPITULO 7. Conceptos de Redes e Internet
250
TALLER DE INFORMÁTICA BIBLIOGRAFIA
BIBLIOGRAFIA
251
TALLER DE INFORMÁTICA BIBLIOGRAFIA
252
TALLER DE INFORMÁTICA ANEXOS
ANEXOS
ANEXO 1.
Proceso Xa+b
Si <condición>
NO SI
Decisión <acciones>
sino
<acciones>
Conectores
Comentarios // Comentarios.....
- 253 -
TALLER DE INFORMÁTICA ANEXOS
ANEXO 2. OPERADORES
OPERADORES SIGNIFICADO
== Igual
> Mayor
< Menor
<> ó != Distinto
NO - NOT Y - AND O - OR
A NO A A B AyB A B AóB
V F V V V V V V
F V V F F V F V
F V F F V V
F F F F F F
- 254 -
TALLER DE INFORMÁTICA ANEXOS
Normalmente, las expresiones con operadores se evalúan de izquierda a derecha, aunque no todos,
ciertos operadores que se evalúan y se asocian de derecha a izquierda.
Además, no todos los operadores tienen la misma prioridad, algunos se evalúan antes que otros, de
hecho, existe un orden muy concreto en los operadores en la evaluación de expresiones.
Esta propiedad de los operadores se conoce como precedencia o prioridad.
Veremos ahora las prioridades de todos los operadores incluidos los que aún conocemos.
Considera esta tabla como una referencia, no es necesario aprenderla de memoria, en caso de duda
siempre se puede consultar, incluso puede que cambie ligeramente según el compilador, y en último caso
veremos sistemas para eludir la precedencia.
3ero. + , - , o – or
La precedencia es el orden en el cual serán realizadas las evaluaciones; por ejemplo: la multiplicación se
realiza antes que la suma.
Las reglas de precedencia, en forma completa, de los operadores se muestran en la siguiente tabla:
Y – AND
NO – NOT
+,-
MOD
DIV
*,/
- 255 -
TALLER DE INFORMÁTICA ANEXOS
Operadores Asociatividad
== != Izquierda a derecha
|| Izquierda a derecha
?: Derecha a izquierda
, Izquierda a derecha
- 256 -
TALLER DE INFORMÁTICA ANEXOS
Por ejemplo:
char n;
int a, b, c, d;
float r, s, t;
...
a = 10;
b = 100;
r = 1000;
c = a + b;
s = r + a;
d = r + b;
- 257 -
TALLER DE INFORMÁTICA ANEXOS
d = n + a + r;
t = r + a - s + c;
...
En estos casos, cuando los operandos de cada operación binaria asociados a un operador son de distinto
tipo, se convierten a un tipo común.
Existen reglas que rigen estas conversiones, y aunque pueden cambiar ligeramente de un compilador a
otro, en general serán más o menos así:
1. Cualquier tipo entero pequeño como char o short es convertido a int o unsigned int. En este
punto cualquier pareja de operandos será int (con o sin signo), long, long long, double, float o
long double.
2. Si algún operando es de tipo long double, el otro se convertirá a long double.
3. Si algún operando es de tipo double, el otro se convertirá a double.
4. Si algún operando es de tipo float, el otro se convertirá a float.
5. Si algún operando es de tipo unsigned long long, el otro se convertirá a unsigned long long.
6. Si algún operando es de tipo long long, el otro se convertirá a long long.
7. Si algún operando es de tipo unsigned long, el otro se convertirá a unsigned long.
8. Si algún operando es de tipo long, el otro se convertirá a long.
9. Si algún operando es de tipo unsigned int, el otro se convertirá a unsigned int.
10. En este caso ambos operandos son int.
En el ejemplo:
c = a + b; caso 8, ambas son int.
s = r + a; caso 4, "a" se convierte a float.
d = r + b; caso 4, "b" se convierte a float.
d = n + a + r; caso 1, "n" se convierte a int, caso 4 el resultado (n+a) se convierte a float.
t = r + a - s + c; caso 4, "a" se convierte a float, caso 4 (r+a) y "s" son float, caso 4, "c" se
convierte a float.
También se aplica conversión de tipos en las asignaciones, cuando la variable receptora es de distinto
tipo que el resultado de la expresión de la derecha.
Cuando esta conversión no implica pérdida de precisión, se aplican las mismas reglas que para los
operandos, estas conversiones se conocen también como promoción de tipos.
Cuando hay pérdida de precisión, las conversiones se conocen como democión de tipos.
El compilador normalmente emite un aviso o "warning", cuando se hace una democión implícita, es decir
cuando hay una democión automática.
En el caso de los ejemplos 3 y 4, es eso precisamente lo que ocurre, ya que estamos asignando
expresiones de tipo float a variables de tipo int.
- 258 -
TALLER DE INFORMÁTICA ANEXOS
Sintaxis de "casting":
(<nombre de tipo>)<expresión>
ó
<nombre de tipo>(<expresión>)
Esta última es conocida como notación funcional.
Hacer un "casting" indica que sabemos que el resultado de estas operaciones no es un int, que la
variable receptora sí lo es, y que lo que hacemos lo hacemos a propósito.
Veremos más adelante, cuando hablemos de punteros, más situaciones donde también es obligatorio el
uso de "casting".
- 259 -
TALLER DE INFORMÁTICA ANEXOS
Cada uno de estos sistemas Numéricos tiene su conjunto de símbolos y reglas de generación que
permiten construir todos los números válidos en el sistema, en algunos casos son mas fáciles unos que
otros.
Los sistemas Numéricos se suelen clasificar en dos grandes grupos, posicionales y no posicionales.
En los sistemas modernos de numeración básicamente se usa el sistema posicional o ponderado
(dependiendo de la ubicación u orden tiene un peso, para el caso del 12, el 1 tiene un peso de 10), en estos
sistemas de numeración ponderados o posicionales el valor de un dígito depende tanto del símbolo utilizado,
como de la posición que ése símbolo ocupa en el número (unidad, decena, centena). Esto tiene como efecto
facilitar operaciones como suma, resta, etc.
Sistema Hexadecimal:
El sistema de numeración hexadecimal, de base 16, utiliza 16 símbolos.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Es común abreviar hexadecimal como hex aunque hex significa base seis. Como dijimos dado que el
sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la
convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan: A = 10,
B = 11, C = 12, D = 13, E = 14 y F = 15.
- 260 -
TALLER DE INFORMÁTICA ANEXOS
Por ejemplo:
1A → el 1 indica que supero una vez a la base que es 16, y la letra A que son 10 unidades. Entonces 1A
sería equivalente a 16+10 total 26
3F → el 3 indica que supero tres veces a la base 3*16, y la letra F que son 15 unidades. Entonces 3F
sería equivalente a 3*16+15 total 63.
Ejemplo:
1A3F = 1*163+ A*162 + 3*161 + F*160 = 1*163+ 10 *162 + 3*161 +15*160 = 6719
Observación:
-Ver que exponente de la base (16) está relacionado con la posición del símbolo. Se empieza a contar la
posición desde la derecha y la primera es la posición cero.
Para el caso de:
- A se encuentra en la posición 2, 0(F), 1(3), 2(A), por lo que A (10) quedará multiplicado por 16
elevado al Cuadrado.
- F se encuentra en la posición cero, por lo que F (15) quedará multiplicado por 16 elevado a la cero.
- 3 se encuentra en la posición 1, por lo que 3 (3) quedará multiplicado por 16 elevado a la uno.
Sistema Binario:
El sistema binario, es usado en matemáticas e informática, es un sistema de numeración en el que los
números se representan utilizando solamente las cifras cero y uno (0 y 1).
Es el que se utiliza en los ordenadores, pues trabajan internamente con dos niveles de voltaje o tensión,
por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). Cada posición
puede tener = o 1 y se denominaremos Bit.
Para este tipo de Sistema numérico los símbolos son 0 y/ó 1 y se forman los números combinando ceros
y unos.
Veamos que si tengo 2 símbolos y tengo que representar el equivalente a 7 (en decimal) voy a necesitar
3 bits, ya que 2 (base) elevado a la cantidad de bits (3) me dá 8, que sería la cantidad de combinaciones
posibles logradas con 3 bits en un sistema binario.
De lo expuesto para el sistema binario y pensando en lo que hicimos para el sistema Hexadecimal
podemos hacer un expresión similar con la base que tenemos, que para nuestro caso es 2.
101 = 1 * 22 + 0 * 21 + 1 * 20 = 1*4+0+1= 5 (decimal)
- 261 -
TALLER DE INFORMÁTICA ANEXOS
Ejemplo:
1011 = 1*23+ 0*22 + 1*21 + 1*20 = 1*8+ 0 + 1*2 +1*1 =11 (once en sistema decimal)
Observación:
- Ver que exponente de la base (2) está relacionado con la posición del símbolo. Para el caso de 1011 se
encuentra en la posición tres, por lo que este 1 quedará multiplicado por 2 elevado a la tres.-
- 262 -
TALLER DE INFORMÁTICA ANEXOS
ASCII: Acrónimo inglés de American Standard Code for Information Interchange . Son códigos estandar
para que los equipos intercambien información, es decir la N en Europa es la N en Latinoamerica pero como
a los equipos les es más facil manejar Números que caracteres, internamente, estos caracteres son
representados por números.
El código ASCII utiliza 7 bits para representar los caracteres.
Esta es la Tabla:
- 263 -
TALLER DE INFORMÁTICA ANEXOS
ampersand address
amp reference
amper andpersand
& and bitand
and sign background
pretzel
apostrofe prime
apostrophe glitch
' single quote tick
quote irk
pop
- 264 -
TALLER DE INFORMÁTICA ANEXOS
spark
closing single quotation
mark
acute accent
opening / closing so/already
parentesis lparen/rparen
left / right paren opening/closing parenthesis
left / right parenthesis opening/closing round bracket
() left / right left/right round bracket
open / close wax/wane
open / close paren parenthisey/unparenthisey
paren / thesis left/right ear
Corchetes square / unsquare
opening / closing bracket u turn / u turn back
[] left / right bracket
left / right square bracket
bracket / unbracket
Llaves brace / unbrace
opening / closing brace curly / uncurly
open / close brace leftit / rytit
left / right brace left / right squirrelly
{} left / right squiggly embrace / bracelet
left / right squiggly
bracket/brace
left / right curly bracket/brace
Menor , Mayor from / into (or towards)
less / greater than read from / write to
bra / ket suck / blow
< left / right angle comes-from / gozinta
> left / right angle bracket in / out
left / right broket crunch / zap
tic / tac
angle / right angle
asterisco wildcard
star gear
splat dingle
mult
spider
* aster
times
twinkle
glob
Nathan Hale
mas cross
+ plus intersection
add
coma cedilla
, comma tail
menos, guión medio worm
dash option
- hyphen dak
minus bithorpe
punto radix point
period full stop
. dot spot
point
decimal point
barra diagonal
/ slash solidus
- 265 -
TALLER DE INFORMÁTICA ANEXOS
stroke over
slant slak
forward slash virgule
slat
backslash bash
hack reverse slant
whack reversed virgule
escape backslat
\ reverse
slash
slosh
backslant
backwhack
colon dots
: two-spot
Punto y coma weenie
; semicolon hybrid
semi pit-thwong
igual quadrathorpe
equals half-mesh
= gets
takes
signo de pregunta quiz
question mark whatmark
query what
ques wildchar
? huh
hook
buttonhook
hunchback
arroba each
at sign vortex
at whorl
strudel whirlpool
cyclone
@ snail
ape
cat
rose
cabbage
commercial at
acento circunflexo xor sign
circumflex chevron
caret shark (or shark-fin)
^ hat to the
control fang
uparrow pointer
Guión bajo score
underline backarrow
_ underscore skid
underbar flatworm
under
Acento grave backprime
grave accent backspark
backquote unapostrophe
` left quote birk
left single quote blugle
open quote back tick
grave back glitch
- 266 -
TALLER DE INFORMÁTICA ANEXOS
push
opening single quote
quasiquote
barra vertical line
bar gozinta
or thru
| or-bar pipesinta
v-bar spike
pipe
vertical bar
tilde approx
squiggle wiggle
~ twiddle swung dash
not enyay
sqiggle (sic)
- 267 -
TALLER DE INFORMÁTICA ANEXOS
C ++ C
1 asm auto
2 auto break
3 bool case
4 break char
5 case const
6 catch continue
7 char default
8 class do
9 const double
10 const_cast else
11 continue enum
12 default extern
13 delete float
14 do for
15 double goto
16 dynamic_cast if
17 else int
18 enum long
19 explicit register
20 extern return
21 false short
22 float signed
23 for sizeof
24 friend static
25 goto struct
26 if switch
27 inline typedef
28 int union
29 long unsigned
- 268 -
TALLER DE INFORMÁTICA ANEXOS
30 mutable void
31 namespace volatile
32 new while
33 operator
34 private
35 protected
36 public
37 register
38 reinterpret_cast
39 return
40 short
41 signed
42 sizeof
43 static
44 static_cast
45 struct
46 switch
47 template
48 this
49 throw
50 true
51 try
52 typedef
53 typeid
54 typename
55 union
56 unsigned
57 using
58 virtual
59 void
60 volatile
61 while
- 269 -
TALLER DE INFORMÁTICA ANEXOS
En la medida en que el lenguaje C y C++ se empieza a conocer y el código fuente empieza a ser mas
complejo conviene tratar de ser lo mas claro posible en el código, de manera de que sea facil la
interpretacion del código fuente.
Recordemos que hoy, tal vez entendamos bien qué hace el código, pero que sucedería si lo miramos
dentro de 5 años?
Para lograr una convención en la escritura de código fuente presentamos algunas sugerencias:
7.1. Comentarios
Se deben escribir comentarios!!
Recodermos que con // o /* .... */ se pueden introducir comentarios en el código.
sz variables del tipo string ( array de char texto[20] => char sz_texto[20];
caracteres terminados en /0)
- 270 -
TALLER DE INFORMÁTICA ANEXOS
- 271 -
TALLER DE INFORMÁTICA ANEXOS
Esta sección introduce algunos de las órdenes básicas más útiles de un sistema UNIX, incluidas las ya
cubiertas en las secciones anteriores.
Nótese que las opciones usualmente comienzan con "-" y en la mayoría de los casos se pueden añadir
múltiples opciones de una letra con un único "-". Por ejemplo, en lugar de usar ls -l -F es posible usar ls -lF.
En lugar de listar todas las opciones disponibles para cada uno de los comandos solo hablaremos de
aquellas más útiles o importantes. De hecho, la mayoría de las órdenes tienen un gran número de opciones
(muchas de las cuales nunca usará). Puede usar man para ver las páginas de manual de cada orden, la cual
mostrará la lista completa de opciones disponibles.
Nótese también, que la mayoría de las órdenes toman una lista de ficheros o directorios como
argumentos, denotados como "<fichero1> . .<.ficheroN>". Por ejemplo, la orden cp toma como argumentos
la lista de ficheros a copiar, seguidos del fichero o directorio destino. Cuando se copia más de un fichero, el
destino debe de ser un directorio.
mv Mueve fichero(s) a otro fichero o directorio. Es equivalente a una copia seguida del borrado del
original. Puede ser usado para renombrar ficheros, como el comando MS-DOS RENAME.
Sintaxis: mv <fichero1> <fichero2> . . .<ficheroN> <destino>
Donde <fichero1> a <ficheroN> son los ficheros a "mover" y <destination> es el fichero o
directorio destino.
Ejemplo: mv ../frog joe mueve el fichero ../frog al fichero o directorio joe.
rm Borra ficheros. Nótese que cuando los ficheros son borrados en UNIX, son irrecuperables (a
diferencia de MS-DOS, donde usualmente se puede recuperar un fichero borrado).
Sintaxis: rm <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los nombres de los ficheros a borrar.
Opciones: -i pedirá confirmación antes de borrar un fichero.
Ejemplo: rm -i /home/larry/joe /home/larry/frog borra los ficheros joe y frog en /home/larry.
- 272 -
TALLER DE INFORMÁTICA ANEXOS
rmdir Esta orden borra directorios vacios. Al susar rmdir, el directorio de trabajo actual no debe de
estar dentro del directorio a borrar.
Sintaxis: rmdir <dir1> <dir2> . . .<dirN>
Donde <dir1> a <dirN> son los directorios a borrar.
Ejemplo: rmdir /home/larry/papers borra el directorio /home/larry/papers si está vacio.
man Muestra la página de manual del comando o recurso (cualquier utilidad del sistema que no
es un comando, como funciones de librería) dado.
Sintaxis: man <command> Donde <command> es el nombre del comando o recurso sobre
el que queremos obtener la ayuda.
Ejemplo: man ls muestra ayuda sobre la orden ls.
more Muesta el contenido de los ficheros indicados, una pantalla cada vez.
Sintaxis: more <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: more papers/history-final muestra por el terminal el contenido del fichero
papers/history-final.
cat Oficialmente usado para concatenar ficheros, cat también es usado para mostrar el
contenido completo de un fichero de una vez.
Sintaxis: cat <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: cat letters/from-mdw muestra por el terminal el contenido del fichero letters/from-
mdw.
grep Muestra todas las líneas de un fichero dado que coinciden con un cierto patrón.
Sintaxis: grep <patrón> <fichero1> <fichero2> . . .<ficheroN>
Donde <patrón> es una expresión regular y <fichero1> a <ficheroN> son los ficheros
donde buscar. Ejemplo: grep loomer /etc/hosts mostrará todas las líneas en el fichero /etc/hosts que
contienen la cadena "loomer".
- 273 -
TALLER DE INFORMÁTICA ANEXOS
Este apéndice explica como utilizar el Anjunta para realizar tareas sencillas como compilar, depurar, etc.,
para obtener un manual detallado (en inglés) se puede descargar la página desde el link:
http://anjuta.org/documentations/subpage/documents/C/anjuta-manual/anjuta-manual.html
9.1. Introducción
Anjuta es un Entorno Integrado de desarrollo (IDE) para C y C++ que proporciona gran cantidad de
facilidades para la programación. Posee una interfaz gráfica para acceder a múltiples herramientas de
programación disponibles para sistemas Linux que se ejecutan en línea de ordenes.
Anjuta intenta ser amigable al usuario. Está escrito para GTK+/GNOME y pretende combinar la
flexibilidad y la potencia de las herramientas en línea de ordenes con la interfaz gráfica fácil-de-usar de
GNOME.
Este apéndicel se refiere a la versión 1.2.2 de la aplicación.
La primera vez que se inicia Anjuta, se muestra al usuario un mensaje de bienvenida.
Al iniciar la aplicación se mostrará la ventana principal en la que se distingue diversas zonas:
- 274 -
TALLER DE INFORMÁTICA ANEXOS
Prácticamente todas las opciones de Anjuta están disponibles desde alguna opción de este menú. Estas
opciones están agrupadas en diversos submenús:
Archivo: incluye las opciones típicas de gestión de archivos (Nuevo, Abrir, Guardar, Guardar
Como, Cerrar), así como opciones de gestión de proyectos (Proyecto Nuevo, Abrir proyecto,
Cerrar proyecto, Guardar proyecto, Importar proyecto). Un proyecto permite organizar los
diversos archivos de una aplicación en una sola entidad, para una mejor gestión de la misma. En
este menú también están las opciones de impresión (Imprimir, Vista previa de impresión).
Editar: con las opciones de Cortar, Copiar, Pegar y Borrar, así como las de Deshacer y Rehacer.
También incluye varios submenús para facilitar la edición de texto al programar. Desde opciones
de búsqueda y reemplazo (opción Buscar), opciones de conversión de caracteres (opción
Transformar), opciones de selección de texto (opción Seleccionar), múltiples opciones de
inserción de texto orientadas a la programación en lenguaje C (opción Insertar texto), opciones
de comentar bloques de código fuente (opción Comentar código), así como opciones para ir
rápidamente a diversos sitios del documento (opción Ir a).
Sugerencia: La opción Editar -> Buscar -> Buscar en archivos permite realizar búsquedas de un
texto en múltiples archivos, mediante una caja de diálogo con múltiples y potentes opciones.
Ver: permite mostrar y ocultar las diversas barras de herramientas y ventanas de la aplicación,
así como algunas características del editor (números de línea, márgenes, etc.)
Proyecto: opciones para gestionar los proyectos, tales como añadir y quitar archivos del
proyecto, o editar la configuración del proyecto. Desde aquí también se invoca al editor GUI para
crear la interfaz gráfica de la aplicación(opción Editar GUI de la aplicación, necesita tener Glade
instalado).
Formato: opciones de formateo del texto, permitiendo el resaltado sintáctico, así como desplegar
y replegar trozos de código.
Construir: opciones de compilación y de construcción del código de la aplicación.
Marcador: permite insertar marcadores en el código y desplazarse por ellos.
Depurador: opciones de depuración del código. Permite insertar puntos de ruptura y una
ejecución controlada, así como evaluar e inspeccionar variables.
CVS: opciones para trabajar sobre un repositorio CVS (Sistema de Control de Versiones), lo que
permite controlar los cambios que se realicen sobre el código.
Opciones: opciones para establecer las preferencias de un montón de características de la
aplicación, desde opciones del compilador y enlazador hasta las opciones del editor y las
preferencias generales de la aplicación.
Ayuda: permite acceder a la ayuda en línea (Manual de Anjuta), a un tutorial (Cursillo de
Anjuta), a la página web del proyecto, así como a fuentes relacionadas, tales como páginas del
API de Gnome, páginas de Man y páginas de Info.
En ellas se incluyen las opciones más habituales. Por defecto Anjuta muestra dos barras, la Barra
Principal y la Barra de Navegación.
Estas barras pueden desplazarse de su ubicación y colocarse en otra posición o ser incluso flotantes.
Para ello, hacer clic en el extremo izquierdo de la barra y arrastrar con el ratón a la ubicación deseada.
Las barras disponibles son:
Barra principal: funciones de archivos y de edición de textos.
Barra de Navegación: navegación por los marcadores y etiquetas de función.
Barra extendida: funciones del proyecto y de compilación, construcción y ejecución.
Barra de depuración: controles para el Depurador de código.
Barra de formato: funciones para dar formato al texto y al código.
- 275 -
TALLER DE INFORMÁTICA ANEXOS
Es la zona de trabajo y en ella se pueden observar diversos paneles, que pueden ocultarse y mostrarse
(menú Ver -> Ventana de mensajes y Ver -> Ventana del proyecto), así como cambiar su tamaño, haciendo
clic sobre los bordes de separación y arrastrando con el ratón.
Los colores con que se muestran los mensajes son relevantes. Los de color negro son mensajes
normales informativos. Los de color azul son mensajes importantes como avisos (Warnings) y mensajes de
error. Los mensajes de color rojo indican que están enlazados, es decir, haciendo doble-clic sobre un
mensaje de color rojo llevará el cursor al archivo y la línea que se especifica en el mensaje.
Además, la ventana de mensajes tiene múltiples pestañas donde se va mostrando información según las
acciones que se estén llevando a cabo, incluyendo las salidas estándar y ventanas de depuración.
- 276 -
TALLER DE INFORMÁTICA ANEXOS
Deberemos elegir para la mayoría de los caso la Opción “Archivo Nuevo”, luego aparecerá la siguiente
partalla:
Le damos un nombre al Archivo, recordemos que es aconsejable que el mismo refleje la tarea del
código. Como tipo de Archivo, debemos indicar que es C++ Source File.
- 277 -
TALLER DE INFORMÁTICA ANEXOS
El proceso de compilación genera un archivo de código objeto (*.o) que será luego enlazado para
construir el ejecutable.
Una vez que se ha construido con éxito el ejecutable, para probarlo seleccionar la opción de menú
Construir -> Ejecutar o hacer clic en el botón Ejecutar de la barra extendida.
También se puede pulsar la tecla de función F3.
9.7.1. Dependencias
Al contrario que en la fase de construcción, la ejecución no comprueba las dependencias, es decir, no
comprueba si el ejecutable está en la última versión, así que es tarea del usuario, realizar la comprobación.
Para pasar argumentos al programa, seleccionar la opción Construir -> Configurar los parámetros del
programa. Se mostrará una caja de diálogo donde poder introducir los parámetros. Para ejecutar,
seleccionar el botón Ejecutar.
También puede especificarse si el programa debe ejecutarse en un terminal o no.
9.8. Preferencias
Anjuta permite la personalización de muchas de sus características para que el usuario trabaje más
cómodamente.
Para mostrar la ventana de preferencias, seleccionar la opción de menú Opciones -> Preferencias.
- 278 -
TALLER DE INFORMÁTICA ANEXOS
Para volver a las preferencias que trae Anjuta por defecto, seleccionar la opción de menú Opciones ->
Preferencias predeterminadas.
- 279 -