Web viewdel problema por medio de la . ... Lenguajes de programación: notación que...

28
Introduccion – Conceptos generales – Verano 2016 1 Objetivos de aprendizaje Dominando los temas del presente capitulo Usted podrá. 1. Conocer la terminología propia de la disciplina. 2. Definir y comprender claramente conceptos específicos muchas veces mal definidos 3. Comprender el valor de la abstracción. 4. Dar valor a la eficiencia en las soluciones 5. Introducirse en la notación algorítmica y a la forma e encarar los problemas de programación 6. Introducirse al LP C++ Contextualizacion de la materia Nombre Algoritmos y estructura de datos Codigo 082021 – Area Programacion. Plantel docente o Director de Catedra Dr. Oscar BRUNO [email protected] – droscarbruno.wordpress.com o Profesores concursados Esp. CC. Marta Ferrari, Esp. Lic. Alejandro Frankel, Ing. Pablo Sznajdleder. o Profesores interinos Lic. Hugo Cuello, Esp. Ing. Jose Maria Sola, Lic. Javier Bianchi, Ing. Yamila Zakhem, Ing. Gabriela Sanroman, Ing. Adrian Fiore, Mg. Elena Garcia, Ing. Pablo Mendez. o Auxiliares Mg. Marcelo Lipkin, Ing. Natalia Perez Lopez, Sr. Flavio Caniggia. Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 1

Transcript of Web viewdel problema por medio de la . ... Lenguajes de programación: notación que...

Page 1: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Introduccion – Conceptos generales – Verano 2016 1

Objetivos de aprendizajeDominando los temas del presente capitulo Usted podrá.

1. Conocer la terminología propia de la disciplina.2. Definir y comprender claramente conceptos específicos muchas veces mal definidos3. Comprender el valor de la abstracción.4. Dar valor a la eficiencia en las soluciones5. Introducirse en la notación algorítmica y a la forma e encarar los problemas de

programación6. Introducirse al LP C++

Contextualizacion de la materia Nombre Algoritmos y estructura de datos Codigo 082021 – Area Programacion. Plantel docente

o Director de Catedra Dr. Oscar BRUNO [email protected] – droscarbruno.wordpress.com

o Profesores concursados Esp. CC. Marta Ferrari, Esp. Lic. Alejandro Frankel, Ing. Pablo Sznajdleder.

o Profesores interinos Lic. Hugo Cuello, Esp. Ing. Jose Maria Sola, Lic. Javier Bianchi, Ing. Yamila

Zakhem, Ing. Gabriela Sanroman, Ing. Adrian Fiore, Mg. Elena Garcia, Ing. Pablo Mendez.

o Auxiliares Mg. Marcelo Lipkin, Ing. Natalia Perez Lopez, Sr. Flavio Caniggia.

Contextualización Mediante la MatrizTransversalContenidosEl objetivo formar profesionales con dominio profundo del paradigma imperativo

1. Habilidades: los programadores imperativos deben disponer de las siguientes habilidades:

a. Lógica para informáticos: (LI).b. Resolución de problemas: (RP).c. Conocimiento de terminología propia de la disciplina (TD).d. Tipos de datos::

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 1

Page 2: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

i. Datos simples (DS). ii. Estructura registro (ER).iii. Archivos: Archivos de texto (AT) y Archivos Binarios (AB).iv. Estructuras indexadas (EI).v. Estructuras enlazadas lineales (EL).vi. Estructuras arbóreas. (EA).

vii. Grafos (GR)viii. Combinaciones complejas de estructuras de datos (CC).

e. Patrones algorítmicos: i. Patrones de inicialización, inserción, búsqueda y recorrido

ii. Patrones de ordenamiento, agrupaciones, carga y modificacionesf. Implementación en lenguajes de programación.

i. Iniciales con utilización de módulos (IM)ii. Con utilización de bibliotecas (TAD) (IT)iii. Orientada a objetos (IO)iv. Otros paradigmas (OP)

Matriz Transversal de Contenidos propuesta:

Generales Tipos de datos Imp.LI RP TD DS ER AT AB EI EL EA EG CC IT T P

MD ALTA BAJA MED. BAJA BAJA BAJA BAJA BAJA BAJA BAJA BAJA NO NO NO NO

AyE ALTA ALTA ALTA ALTA ALTA ALTA ALTA ALTA ALTA MED. BAJA ALTA MED. ALTA ALTA

SSL ALTA MED. ALTA BAJA MED. MED. MED. MED. BAJA MED. ALTA MED.

ALTA ALTA IT

PP ALTA MED. ALTA BAJA BAJA MED. MED. MED. BAJA MED. BAJA BAJA ALTA ALTA IOOP

Aprender programación

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 2

creatividad

compromiso habilidad

Page 3: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

II CC CI IC

Metodos

1. De asimilación y desarrolloa. Inductivo

i. Básicoii. Construcción de conceptos

iii. De investigaciónb. De instrucción

i. Transmisionii. Significativo

iii. Debatec. De cambio conceptual

i. Discusionii. Propuesta de cambios

2. Para la acción practicaa. Estudio de casosb. Solución de problemasc. Construcción de problematizacionesd. Proyectose. Tutorias

3. Para el desarrollo de habilidades operativasa. Demostraciones y ejercitacionesb. Simulaciones

4. Desarrollo personala. Basado en fortalezasb. Fijando metasc. Motivación y cambio

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 3

Page 4: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

leer(f,r) fread(…)

grabar(f,r)

fwrite(…)

Leer(id) cin >> imprimir (expresión)

cout>>expresion

Terminos y frases

InformáticaDisciplina del estudio sistematizado de los procesos algorítmicos que describen y transforman información, su teoría, análisis, diseño, eficiencia, implementación y aplicación.Programación La programación es una actividad transversal asociada a cualquier área de la informática.La creación de software es una actividad de ingeniería y requiere la aplicación de principios científicos. Programa: Conjunto de instrucciones, ejecutables sobre una computadora, que permite cumplir una función especifica. DefiniciónPrograma: conjunto de instrucciones no activas almacenadas en un computador, se vuelve tarea a partir de que se selecciona para su ejecución y permite cumplir una función específica. Un proceso es un programa en ejecución.

Partes de un programa Los componentes básicos son las instrucciones y los datos.

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 4

Page 5: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Dato Representación de un objeto el mundo real mediante el cual se pueden modelizar aspectos de un problema que se desea resolver con un programa en una computadora. Definición Dato representación de un objeto el mundo real mediante el cual se pueden modelizar aspectos de un problema que se desea resolver con un programa en una computadora. <dato> -> <objeto><atributo><valor>Los tipos de datos se definen por:

Un conjunto de valoresUn conjunto de operaciones validas sobre esos valors

Trabajaremos: con datos simples (único nombre para un único dato e indivisible) que pueden ses ordinales o no ordinales) y estructuras (único nombre para mas de un dato divisibles y con un operador de acceso para cada miembro)

Abstracción Interpretar los aspectos esenciales de un problema y expresarlo en términos precisos.Modelizacion Abstraer un problema del mundo real y simplificar su expresiónPrecondición Información conocida como verdadera antes de iniciar el programa.Poscondición Información que debiera ser verdadera al cumplir un programa.Lenguaje de programación Conjunto de instrucciones permitidas y definidas por sus reglas sintácticas y su valor semántico para la expresión de soluciones de problemas.Del problema real a su solución por computadorasAnalizando un problema del mundo real se llega a la modelización del problema por medio de la abstracción.A partir del modelo se debe elaborar el análisis de la solución como sistema, esto significa la descomposición en módulos. Estos módulos deben tener una función bien definida. La modularización es muy importante y no solo se refiere a los procesos a cumplir, sino también a la distribución de los datos de entrada, salida y los datos intermedios necesarios para alcanzar la solución.

Etapas de resolución de problemas con computadoras.1. Análisis del problema: en su contexto del mundo real.2. Diseño de la solución: Lo primero es la modularización del problema, es decir la

descomposición en partes con funciones bien definidas y datos propios estableciendo la comunicación entre los módulos.

3. Especificación del algoritmo: La elección adecuada del algoritmo para la función de cada modulo es vital para la eficiencia posterior.

4. Escritura del programa: Un algoritmo es una especificación simbólica que debe convertirse en un programa real sobre un lenguaje de programación concreto.

5. Verificación: una vez escrito el programa en un lenguaje real y depurado los errores sintácticos se debe verificar que su ejecución conduzca al resultado deseado con datos representativos del problema real.

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 5

Page 6: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Programación modular – programación estructurada

Algoritmo Conjunto de reglas, ordenadas de forma lógica, finito y preciso para la solución de un problema, con utilización o no de un computador.

DefiniciónAlgoritmoEspecificación rigurosa (debe expresarse en forma univoca) de la secuencia de pasos, instrucciones, a realizar sobre un autómata para alcanzar un resultado deseado en un tiempo finito. Esto último supone que el algoritmo empieza y termina, en el caso de los que no son de tiempo finito (ej. Sistemas en tiempo real) deben ser de número finito de instrucciones.

Características de un algoritmoUn algoritmo debe tener al menos las siguientes características:

1. Ser preciso: 2. Ser definido. 3. Ser finito: 4. Presentación formal: 5. Corrección: 6. Eficiencia:

Propiedades de los algoritmos 1. Especificación precisa de la entrada:.2. Especificación precisa de cada instrucción:3. Un algoritmo debe ser exacto y correcto: 4. Un algoritmo debe tener etapas bien definidas y concretas.5. Debe ser fácil de entender, codificar y depurar.6. Debe hacer uso eficiente de los recursos de la computadora

Estructura de un algoritmoEstructura de un algoritmoLEXICO {Léxico Global del algoritmo}

{Declaración de tipos, constantes, variables y acciones}Acción 1

PRE {Precondición de la acción 1}POS {Poscondición de la acción 1}LEXICO {Léxico local, propio de la acción 1}

Declaraciones localesALGORITMO {Implementación de la acción 1}

{Secuencia de instrucciones de la acción 1}FIN {Fin implementación algoritmo de la acción 1}

ALGORITMOPRE {Precondición del algoritmo principal}POS {Poscondición del algoritmo principal}

{Secuencia de instrucciones del algoritmo principal}FIN {Fin del algoritmo principal}

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 6

Page 7: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

DefinicionesPrograma: Algoritmo escrito en un lenguaje cuyas instrucciones son ejecutables por una computadora y que están almacenados en un disco.Tarea: a partir del momento que se lo selecciona para su ejecución y hasta que esta termina.Proceso: programa en ejecución, se ha iniciado pero aún no ha finalizado.Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina. Sus instrucciones deben ser traducidas a lenguaje de máquina.Paradigmas de programaciónParadigma: Colección de conceptos que guían el proceso de construcción de un programa. Estos conceptos controlan la forma en que se piensan y formulan los programas.Imperativo – Procedural – Objetos.Declarativo – Funcional – Lógico. Dato Información ConocimientoDato: <objeto><atributo><valor> sin interpretar. Información: añade significado al dato.Conocimiento: Añade propósito y capacidad a la información. Potencial para generar acciones.ProblemaEnunciado con una incógnita, la solución es encontrar el valor de esa incógnita.Problema computacional o algorítmico: tarea ejecutada por una computadora con una especificación precisa de los datos de entrada y de los resultados requeridos en función de estos.Clase de problemasNo computables: No existe un algoritmo.ComputablesTratables: Existe un algoritmo eficiente.Intratable: No existe algoritmo eficiente.Expresiones Sentencias Léxico

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 7

Page 8: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Representaciones gráficas de algoritmos

Diagrama de Nassi-Sneiderman

Diagramas de Jackson

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 8

M ientras condición 3

Condic ión 1

Condic ión 2

Repetir hasta condición 4

Acción 4

Acción 3

Acción 2

Acción 1

Acción 9

Acción 5

Acción 7

Acción 6

Acción 8

Acción 10

Acción 11

Acción 12

T F

T F

Figura 2.1.a

Page 9: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

identificador expresión

Diagrama de LindseyAcciones Lindsey

Comienzo

Estr

uctu

ras s

ecue

ncia

les

Asignación externa de

entrada

Asignación externa de salida

Asignacion interna

Estr

uctu

ras s

elec

tivas

Selección simple

Selección múltiple

FinF

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 9

Page 10: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Llaves de Warniel

HacerUnaCosa)

Si HacerOtraCosa

Condición No Vacio

Algoritmo

1 Case Ordinal

2

HacerUnaCosa; Mientras HacerOtraCosa; Condición HacerAlgoMas

Tipos de datos Declaracion struct nombre {int a; int b;} no reserva memoriaDefinicion: int a; reserva memoria 1. Identificador

a. Nombre reglas de formación (letra)(letra + digito)*b. Tipo

i. Bytes para la implementaciónii. Interpretación de la secuencia de bits

iii. Conjunto de valoresiv. Conjunto de operaciones

2. Estáticosa. Simples

i. Ordinales1. Enteros: int, long, unsigned, signed 2. Carácter: char3. Booleanos: boolean

ii. No ordinales1. Reales: float, double2. Cadenas: char nombre [tamaño]; string

b. Estructurasi. Registros struct nombre{tipo c1;…tipo cN;}

ii. Array: tipo nombre[tamaño];iii. Archivos FILE* nombrelogico

3. Con asignación dinámicaa. Punteros: tipo* nombre. & op. Dirección, *op. indireccion b. Estructuras enlazadas

i. Pilas

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 10

Page 11: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

ii. Colasiii. Listas

4. Accionesa. Asignación

i. Interna NI Expresion; 1. Lvalue2. Expresión3. Destructiva4. Asignación a variables booleanas

ii. Externa1. De entrada leer(id). cin >>id; fread2. De salida imprimir(id). cout << id; fwrite

b. Análisis de casoi. Simple (evalúa expresiones)

if(exp){lista de sentencias}[else{lista de sentencias}]1. Incompleto2. Completo

ii. Múltiple (evalúa ordinales)Switch(ordinal) { case v1:{s1; breack;}…..[default:{sd}];}

1. Incompleto2. Completo

iii. Repetición1. Exacta (0..N)

a. Índice creciente for( ; ; ){sentencia};b. Índice decreciente

2. No exactaa. Pre condicional (0..N) while(exp){sentencia};

i. Expresión lógica evaluada al principioii. Se ejecuta mientras sea verdadera

iii. Requiere nueva asignación al DELb. Pos condicional (1..N) do { sentencia} while(expresión);

i. Expresión lógica evaluada al finalii. Se ejecuta mientras sea verdadera

iii. Requiere nueva asignación

Patrones algorítmicos simples

Repeticiones1) Repetir acciones 100 veces (con incremento del índice)PARA I [1..100] HACER

Acciones que se deben repetirFIN PARA

for(int i = 1; i<=100; i++) {sentencia;

}

2) Repetir acciones 100 veces (con disminución del índice)PARA I [100..1](-) HACER

Acciones que se deben repetirfor(int i = 100; I >= 1; i--) {

sentencia;

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 11

Page 12: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

FIN PARA }

3) Repetir acciones cantidad de veces leídas previamente (con incremento del índice)(Analice las secuencias y codifique en C)Leer (N) {N representa la cantidad de veces que se quiere hacer la repetición}PARA I [1..100] HACER

Acciones que se deben repetirFIN PARA

4) Repetir acciones 100 veces (con ciclo pre condicional)Alternativa 1I 1MIENTRAS (I <= 100) HACER

I I + 1Acciones que se deben repetir

FIN PARA

Alternativa 2I 0MIENTRAS (I < 100) HACER

I I + 1Acciones que se deben repetir

FIN PARA Precaución: Según el valor de inicialización y la relación pueden hacerse 1 mas o 1 menos de lo que realmente quiere hacerse.

5) Repetir acciones N veces (con ciclo pre condicional)Alternativa 1Leer(N)I 1MIENTRAS (I <= N) HACER

I I + 1Acciones que se deben repetir

FIN MIENTRAS

Alternativa 2Leer (N)I 0MIENTRAS (I < N) HACER

I I + 1Acciones que se deben repetir

FIN MIENTRAS

6) Repetir acciones N veces (con ciclo pos condicional)Recordar que esta secuencia se ejecuta al menos una vez

Leer (N)I 0

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 12

Page 13: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

HACERI I + 1Acciones que se deben repetir

MIENTRAS( I < N) INTERCAMBIO (Dados dos identificadores intercambiar sus valores)Coloca Valor1 en Valor2 y viceversa. Requiere un identificador auxiliar Auxiliar Valor1 {Contiene el primer valor}Valor1 Valor2 {Cambia el valor del primero por el que está en el segundo}Valor2 Auxiliar {Asigna al segundo valor el que originalmente tenía el primero)

//implementación en C++void intercambio(int &valor1, int &valor2){ int auxiliar = valor1; valor1 = valor2; valor2 = auxiliar; return;}

//implementacion con plantillastemplate <typename T> void intercambio(T &valor1, T &valor2) { T auxiliar = valor1; valor1 = valor2; valor2 = auxiliar; return; }

Utilizar repeticiones para buscar un máximoPara la búsqueda de un máximo se requiere

IdentificadoresPara las lecturasPara contener el máximo

Debe inicializarseCon un primer valor arbitrario (razonablemente chico)Con un valor centinelaCon la primer lectura.

1) Dado un conjunto de 100 valores enteros y positivos buscar el máximoAlternativa 1Maximo = 0 {inicialización con valor arbitrario}PARA I [1..100]

Leer(Valor)SI (Valor > Maximo) Entonces Maximo Valor

FIN PARA.

Alternativa 2 {inicialización con la primer lectura}Leer (Valor)Maximo = ValorPARA I [1..99] {también I[2..100] realiza 99 repeticiones}

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 13

Page 14: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Leer(Valor)SI (Valor > Maximo) Entonces Maximo Valor

FIN PARA.

Alternativa 3 {utilizando un valor centinela}PARA I [1..100]

Leer(Valor)SI (I = 1) o (Valor > Maximo) Entonces Maximo Valor

FIN PARA.

2) Dados un conjunto de valores distintos de cero determinar el máximo del conjuntoAlternativa 1{asignando al máximo la primera lectura}Leer(Valor)Máximo ValorMientras (Valor <> 0) Hacer

Si (Valor > Maximo)Entonces

Máximo ValorFIN SILeer(Valor)

FIN MIENTRAS

Alternativa 2{utilizando un valor centinela}PrimeraLectura VerdaderoLeer(Valor)Mientras (Valor <> 0) Hacer

Si (PrimeraLectura = verdadero) o (Valor > Maximo)Entonces

PrimeraLectura FalsoMáximo Valor

FIN SILeer(Valor)

FIN MIENTRAS

Alternativa 3{utilizando el valor leído como centinela}{El valor 0 no es parte del conjunto, se usa como centinela}Leer(Valor)Máximo = 0Mientras (Valor <> 0) Hacer

Si (Valor = 0) o (Valor > Maximo)Entonces

PrimeraLectura FalsoMáximo Valor

FIN SILeer(Valor)

FIN MIENTRAS

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 14

Page 15: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

3) Dados un conjunto de valores <> de cero buscar el máximo y su posición relativa dentro del conjunto

Leer(Valor)CantidadDeNumeros 0PosicionRelativa 0Máximo = 0Mientras (Valor <> 0) Hacer

Incrementar(CantidadDeNumeros)Si (Valor = 0) o (Valor > Maximo)Entonces

PrimeraLectura FalsoPosicionRelativa CantidadDeNumerosMáximo Valor

FIN SILeer(Valor)

FIN MIENTRAS

Resuelva las siguientes situaciones Codifique en C los patrones algorítmicos desarrollados en este apartado Dado un conjunto de valores enteros determinar e imprimir el máximo del conjunto. Dado un conjunto de valores reales determinar e imprimir el máximo del conjunto. Dado un conjunto de valores enteros determinar e imprimir el mínimo del conjunto. Dado un conjunto de valores reales determinar e imprimir el máximo de los negativos y el

mínimo de los positivos, si hubieron valores, el conjunto termina con un valor cero. Dado un conjunto de valores reales determinar e imprimir el máximo del conjunto y su

posición relativa, si hubieron valores, de lo contrario mostrar el mensaje “Sin valores”. Dado un conjunto de valores enteros determinar e imprimir el máximo del conjunto y el

siguiente máximo y sus posiciones relativas. Dado un conjunto de valores reales distintos de cero determinar e imprimir el máximo de

los negativos y el mínimo de los positivos.

Utilizar repeticiones para seguidillasa) Se dispone de un lote de valores enteros positivos que finaliza con un número negativo.

El lote está dividido en sublotes por medio de valores cero. Desarrollar un programa que informe: por cada sublote el promedio de valores, el total de sublotes procesados

CantidadSublotes 0Leer (Valor)MIENTRAS (Valor >= 0) HACER {ciclo externo que controla el conjunto general de datos}

CantidadNumeros 0, SumaValores0 {para calcular el promedio de cada sublote}MIENTRAS(Valor>0) HACER {ciclo interno, si el valor es cero termina el sublote}

Incrementar(CantidadNumeros)Incrementar(SumaValores, Valor)Leer(Valor)

FIN MIENTRASImprimir(SumaValores/CantidadNumeros; Incrementar(CantidadSublotes)SI (Valor = 0) ENTONCES Leer(Valor) FIN SI

FIN MIENTRASImprimir(CantidadSublotes)

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 15

Page 16: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 16

Page 17: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Fundamentos C++Sin declaración using Con declaración using//programa para imprimir texto#include <iostream>

int main(){ std::cout << “Hola\n”;

return 0; }

//programa para imprimir texto#include <iostream>using std::cout; //using std::cin;using std::endl; int main(){ cout << “Hola” << endl;

return 0;

Instruccion Descripcion#include<iostream>usingint main() { }std::cout<<“Hola\n” ;return 0

Directiva del preprocesadorComponente de entrada/salida (objetos cin, cout,cerr)Declaración que elimina necesidad de repetir el prefijo std.Funcion principal que retorna un enteroDefinición de un bloque de programaUso del nombre cout del espacio de nombres std, dispositivo std de salidaOperador de inserción en flujoLiteral Hola + salto de línea (también << std::endl;Finalización de una sentenciaPunto de finalización correcta de la función

Si la función, como en este caso tiene un encabezado int main() debe tener al menos un return de un valor entero. Una función void nombre() puede finalizar con la instrucción return o sin ella.Programa que muestra la suma de dos enteros# include <iostream>int main(){ // declaracion de variables int numero1; int numero2; int suma; std::cout << “Escriba el primer entero”; std::cin >>numero1; std::cout << “Escriba el segundo entero”; std::cin >>numero2; suma = numero1 + numero2; std::cout << “La suma de “ numero1 << “ + ” <<numero2 << “ es: “ << suma << std::endl; return 0;

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 17

Page 18: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

}

Instrucción Descripcioncin>>+-*/%( )==>>=<>=!==+=-=*=/=++--

Dispositivo std de entradaOperador de extracción de flujoOperador de sumaOperador de restaOperador multiplicativoOperador de divisiónOperador de modulo o restoOperador para agrupar expresiones ej: a * (b+c)Operador de igualdadMayorMayor igualMenorMenor igualOperador de desigualdad Operador de asignaciónAsignación y suma x+=3; equivale a x = x + 3;Resta y asignaciónMultiplicación y asignaciónDivisión y asignaciónOperador de incremento (pre pos)Operador de decremento (pre pos)

Sentencia de selección ifif (expresión) {lista de sentencias};[else {lista de sentencias}]Sin clausula elseif (nota >= 4){ cout << “Aprobado”;}Con clausula elseif (nota >= 4){ cout << “Aprobado”;}else{ cout << “No aprobado”;}

Estructura de repeticionwhileint i = 0;while (I < 10 ){ i++;}forfor (int I = 0; I < 10;i++) ;

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 18

Page 19: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

Desarrollar una funcion que calcule el promedio de varios valores

Palabras ReservadasC y C++Auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile whileSolo C++and and_eq asm bitand bitor bool catch class compl const_cast delete dynamic_cast explicit export false friend inline mutable namespace new not not_eq operator or or_eq private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t xor xor_eqTipos de datos fundamentales y jerarquia de promocionTipos de Datoslong doubledoublefloatunsigned long intlong intunsigned intintunsigned short intshort intunsigned charcharbool

Resumen:1. Los comentarios de una linea comienzan con //, esta línea es omitida por el compilador.2. Las directivas del preprocesador comienzan con #, estas líneas no terminan con ; ya que

no son parte de C. Permiten incorporar archivos de encabezado. <iostream> contiene información necesaria para utilizar cin y cout-

3. Los programas en C ejecutan la función main.4. Toda sentencia termina con ;5. La declaración using std::cout informa al compilador que puede encontrar a cout en el

espacio de nombre std y elimina la necesidad de repetir el prefijo std.

Ejercicios1. Cuál de las siguientes sentencias son correctas para la ecuación algebraica y=ax3 + 7.

a. y = a * x * x * x + 7b. y = a * x * x * (x + 7)c. y = (a * x) * x *( x + 7)d. y = (a * x) * x * x + 7e. y = a * (x * x * x) + 7f. y = a * (x * x * x + 7)

2. Escriba un programa que pida al ususrio dos números e informe la suma, la resta, el producto y el cociente de los mismos

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 19

Page 20: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

3. Imprima un programa que imprima los números del 1 al 4 en una misma línea, hágalo de las formas siguientes:

a. Utilizando un solo operador de inserción de flujob. Una única sentencia con 4 operadores de inserción de flujoc. Utilizando cuatro sentencias

4. Escriba un programa que reciba tres números por el teclado e imprima la suma, el promedio, el producto, el mayor y el menor de esos números. Escriba un adecuado dialogo en pantalla.

5. Escriba un programa que reciba un numero que represente el radio de un circulo e imprima el diámetro, circunferencia y área.

6. Que imprime el siguiente códigoa. std::cout << “*\n**\n***\n****” <<std::endl;b. std::cout << ‘A’;c. std::cout << static_cast< int > ‘A’; (que es static_cast? Investigue.)

7. Utilizando solo lo que hemos desarrollado en esta introduccion escriba un programa que calcule los cuadrados y los cubos de los números de 0 a 10 y los muestre por pantalla.

8. Escriba un programa que reciba un numero entero de 5 digitos, que separe el numero en sus digitoe y los muestre por pantalla, uno por línea comenzando por elmas significacivo en la primera línea.

9. Dados dos valores enteros A y B, informar la suma, la diferencia, el producto y el cociente A/B.

10. Dada una terna de números naturales que representan al día, al mes y al año de una determinada fecha informarla como un solo número natural de 8 dígitos (AAAAMMDD).

11. Dado un valor entero ingresado por teclado, se pide informar: a) La quinta parte de dicho valor b)El resto de la división por 5, c)La séptima parte del resultado del punto a)

12. Dados dos valores enteros y distintos, emitir una leyenda apropiada que informe cuál es el mayor entre ellos.

13. Dadas dos fechas representadas por el dia, el mes y el año informar cual es la más reciente.

14. Dado tres valores L1, L2, L3, determinar si los mismos forman un triangulo.15. Dado tres valores L1, L2, L3, que representan los lados de un triangulo determinar e

imprimir una leyenda según sea: equilátero, isósceles o escáleno.16. Dados dos valores, N y M números naturales, informar su producto por sumas sucesivas.17. Dados 50 números enteros, informar el promedio de los mayores que 100 y la suma de los

menores que -10.18. Se realiza una inspección en una fábrica de pinturas, y se detectaron 20 infracciones. De

cada infracción se tomó nota de los siguientes datos: a) Tipo de Infracción (1, 2, 3, ó 4), b) Motivo de la infracción, c)Valor de la multa, d)Gravedad de la infracción ('L','M', 'G'). Se pide informar al final del proceso: 1)Los valores totales de la multa a pagar de acuerdo al tipo de gravedad. “. La leyenda "Clausurar fábrica" si la cantidad de infracciones 3 y 4 con gravedad "G" sean mayor a 3.

19. Ingresar e informar valores, mientras que el valor ingresado no sea negativo. Informar la cantidad de valores ingresados.

20. Se ingresa un conjunto de valores reales, cada uno de los cuales representan el sueldo de un empleado, excepto el último valor que es cero e indica el fin del conjunto. Se pide desarrollar un programa que determine e informe: a)Cuántos empleados ganan menos $1.520. b) Cuántos ganan $1.520 o más pero menos de $2.780. c) Cuántos ganan $2.780 o más pero menos de $5.999. d) Cuántos ganan $5.999 o más.

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 20

Page 21: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

21. Dado un valor M determinar y emitir un listado con los M primeros múltiplos de 3 que no lo sean de 5, dentro del conjunto de los números naturales.

22. Dados 10 valores informar el mayor23. Dados N valores informar el mayor, el menor y en que posición del conjunto fueron

ingresados.24. Dado un conjunto de Nombres y Fechas de nacimientos (AAAAMMDD), que finaliza con

un Nombre = 'FIN', informar el nombre de la persona con mayor edad y el de la más joven.

25. Dado un conjunto de valores, que finaliza con un valor nulo, determinar e imprimir (si hubo valores): a) El valor máximo negativo, b) El valor mínimo positivo, c) El valor mínimo dentro del rango -17.3 y 26.9, d) El promedio de todos los valores.

26. Se dispone de un lote de valores enteros positivos que finaliza con un número negativo.El lote está dividido en sublotes por medio de valores cero. Desarrollar un programa que determine e informe: a) por cada sublote el promedio de valores, b) el total de sublotes procesados, c) el valor máximo del conjunto, indicando en que sublote se encontró y la posición relativa del mismo dentro del sublote, d) valor mínimo de cada sublote

27. Dada una serie de M pares {color, número} que corresponden a los tiros de una ruleta. Se pide informar: a) cuántas veces salió el número cero y el número anterior a cada cero, b) cuántas veces seguidas llegó a repetirse el color negro, c) cuántas veces seguidas llegó a repetirse el mismo número y cuál fue, d) el mayor número de veces seguidas que salieron alternados el rojo y el negro, el mayor número de veces seguidas que se negó la segunda docenas

28. Un buque de carga traslada 100 contenedores a tres diferentes puertos del país. Los puertos se identifican con los números 1, 2 y 3. De cada contenedor que el buque traslade se registran los siguientes datos: a) Identificación del contenedor, b) Peso del contenedor en kg, c) Puerto de arribo(un valor de 1 a 3). Se pide calcular e informar: 1) El peso total que el buque debe trasladar, 2) La identificación del contenedor de mayor peso, 3) La cantidad de contenedores que debe trasladar a cada puerto

29. En un torneo de fútbol participan K equipos. El torneo se juega con el sistema de todos contra todos. Por cada partido disputado por un equipo se dispone de la siguiente información: Nro. de equipo, Código del resultado ('P'= Perdido, 'E'= Empatado, 'G'= Ganado).Se arma un lote de datos con todos los resultados del torneo, agrupados por Nro. de equipo. Desarrollar el programa que imprima: a) Por cada equipo, su número y el puntaje total que obtuvo (suma 3 si gana, y 1 si empata). b) Cantidad de equipos que obtuvieron el puntaje minimo o cuantos son si hay mas de uno en esa situacion

30. Dada una serie de caracteres que conforman una oración, donde cada palabra está separada de la siguiente por un carácter blanco y la oración finaliza con un punto. Se pide informar: a)cantidad de veces que apareció cada vocal, b)cantidad de palabras que contiene la oración, c)cantidad de letras que posee la palabra más larga.

31. Dado un número entero positivo entre 1 y 3999 informar su correspondiente número Romano

32. Dado un conjunto de valores enteros, calcular e informar a) cuántos valores cero hubo, b) promedio de valores positivos, c) sumatoria de valores negativos.

33. Resolver el ejercicio para los siguientes lotes de datos:a. 167 valores enterosb. N valores, donde el valor de N debe ser leído previamentec. El conjunto de valores termina con un valor igual al anterior

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 21

Page 22: Web viewdel problema por medio de la . ... Lenguajes de programación: notación que permite escribir programas a mayor nivel de abstracción que los lenguajes de máquina

d. Se dan N valores, pero el proceso deberá finalizar si se procesan todos los valores o si la cantidad de ceros supera a cuatro

e. Se dan N valores, pero el proceso deberá finalizar si se cumple alguna de las condiciones de 4) o si el promedio de positivos resulta mayor que seis.

34. El gobierno de la Ciudad de Buenos Aires realiza una encuesta en casas de familia. De cada familia conoce: domicilio, tipo de vivienda ('C':casa, 'D':departamento), y cantidad de integrantes. De cada integrante de la familia se conoce: nombre y apellido, edad, sexo ('F', 'M'), nivel de estudios alcanzados ('N': no posee, 'P': primario, 'S': secundario, 'T': terciario, 'U': universitario), y un indicador ('I': incompleto, 'C': completo) que se refiere al ítem anterior. Los datos finalizan cuando la cantidad de integrantes sea igual a cero. Se pide emitir un listado con los resultados:

a. los datos de los encuestados que hayan completado los estudios primariosb. el porcentaje de analfabetismo en la ciudad (se considera analfabetos a los

mayores de 10 años que no posean estudios)c. el domicilio de la familia con mayor cantidad de integrantes que viven en

departamentod. edad promedio de cada familia y de la ciudade. cantidad de encuestados en cada tipo de nivel de estudios alcanzados

incompletos.f. porcentaje de encuestados de sexo femenino y masculino.

Algoritmos y Estructura de Datos DISI UTN.BA. Dr. Oscar BRUNO Página 22