Algoritmos y programacion en C++

54

Transcript of Algoritmos y programacion en C++

Page 1: Algoritmos y programacion en C++
Page 2: Algoritmos y programacion en C++

UNIVERSIDAD PRIVADA ANTENOR ORREGO

FACULTAD DE INGENIERIA

CARRERA PROFESIONAL DE INGENIERIA ELECTRONICA

Ing. Alejandro Martin Leon Cerna

Semana 02: EL ALGORITMO Y SUS HERRAMIENTAS

Page 3: Algoritmos y programacion en C++

Método que describe la solución de un problema computacional medianteuna serie de pasos precisos, definidos y finitos.

• Preciso: Indicar el orden de realización en cada paso.

• Definido: Al repetir los pasos “n” veces se obtiene el mismo resultado.

• Finito: Tiene un numero determinado de pasos.

La solución de un algoritmo debe describir tres partes:

• Entrada: Datos que se necesitan para poder ejecutarse.

• Proceso: Acciones y cálculos a realizar.

• Salida: Resultado esperado.

Entrada Proceso Salida

Page 4: Algoritmos y programacion en C++

• Un algoritmo debe resolver el problema para el que fue formulado.Lógicamente, no sirve un algoritmo que no resuelve ese problema.

• Los algoritmos son independientes del lenguaje de programación. Losalgoritmos se escriben para poder ser utilizados en cualquier lenguaje deprogramación.

• Los algoritmos deben ser precisos. Los resultados de los cálculos deben serexactos, de manera rigurosa. No es válido un algoritmo que sólo aproxime lasolución.

• Los algoritmos deben ser finitos. Deben de finalizar en algún momento. No esun algoritmo válido aquel que produce situaciones en las que el algoritmo notermina.

• Los algoritmos deben poder repetirse. Deben permitir su ejecución las vecesque haga falta. No son válidos los que tras ejecutarse una vez ya no puedenvolver a hacerlo por la razón que sea.

Page 5: Algoritmos y programacion en C++

• Validez: Un algoritmo es válido si carece de errores. Un algoritmo puederesolver el problema para el que se planteó y, sin embargo, no ser válidodebido a que posee errores.

• Eficiencia: Un algoritmo es eficiente si obtiene la solución al problema enpoco tiempo. No lo es si tarda en obtener el resultado.

• Óptimo: Un algoritmo es óptimo si es el más eficiente posible y nocontiene errores. La búsqueda de este algoritmo es el objetivo prioritariodel programador. No siempre podemos garantizar que el algoritmo halladosea el óptimo, a veces sí.

Page 6: Algoritmos y programacion en C++

Hay tres fases en la elaboración de un algoritmo.

• Análisis: En esta se determina cual es exactamente el problema a resolver.Que datos forman la entrada del algoritmo y cuales deberán obtenersecomo salida.

• Diseño: Elaboración del algoritmo.

• Prueba: Comprobación del resultado. Se observa si el algoritmo obtiene lasalida esperada para todas las entradas.

Page 7: Algoritmos y programacion en C++

• Para diseñar un algoritmo se debe comenzar por analizar eidentificar las tareas mas importantes para resolver el problema ydisponerlas en el orden en el que han de ser ejecutadas. En estecurso utilizaremos el meto descendente (top-down), que va de losconceptos generales a los de detalle a través de refinamientossucesivos.

• En un algoritmo (basado en el método descendente), se deben deconsiderar tres partes:

Entrada: Información dada al algoritmo.

Proceso: Operaciones o cálculos necesarios para encontrar lasolución del problema.

Salida: Respuestas dadas por el algoritmo o resultados finales delos cálculos.

Page 8: Algoritmos y programacion en C++

• Como ejemplo imagine que desea desarrollar un algoritmo quecalcule la superficie de un rectángulo proporcionándole su base yaltura. Lo primero que deberá hacer es plantearse y contestar a lassiguientes preguntas:

Especificaciones de Entrada:

¿Qué datos son de entrada?

¿Cuántos datos se introducirán?

¿Cuántos son datos de entrada validos?

Especificaciones de Salida:

¿Cuáles son los datos de salida?

¿Cuántos datos de salida se producirán?

¿Qué precisión tendrán los resultados?

¿Se debe imprimir una cabecera?

Page 9: Algoritmos y programacion en C++

• El algoritmo en el primer diseño se podrá representar con lossiguientes pasos:

Paso 1. Entrada desde periférico de entrada, por ejemplo teclado,de base y altura.

Paso 2. Calculo de la superficie, multiplicando la base por la altura.

Paso 3. Salida por pantalla de base, altura y superficie.

El leguaje algorítmico debe de ser independiente de cualquier lenguajede programación particular, pero fácilmente traducible a cada uno deellos. Alcanzar estos objetivos conducirá al empleo de métodosnormalizados para la representación de algoritmos, tales como losdiagramas de flujo, diagrama Nassi-Schneiderman o pseudocódigo,comentados mas adelante.

Page 10: Algoritmos y programacion en C++

Para expresar la solución de un problema se pueden usar diferentesherramientas de programación, tales como diagrama de flujo (flow chart),diagrama N-S (Nassi Schneiderman), pseudocódigo.

• Diagrama de flujo: Es una representación gráfica que utiliza símbolosnormalizados por ANSI, y expresas las sucesivas instrucciones que sedeben seguir para resolver el problema. Estas instrucciones no dependende la sintaxis de ningún lenguaje de programación, sino que deben servirfácilmente para su transformación (codificación) en un lenguaje deprogramación.

Page 11: Algoritmos y programacion en C++
Page 12: Algoritmos y programacion en C++
Page 13: Algoritmos y programacion en C++
Page 14: Algoritmos y programacion en C++

• Diagrama de Nassi Scheneiderman (N-S): Conocido también como eldiagrama de Chapín, es como un diagrama de flujo pero sin flechas y concajas continuas.

• Pseudocódigo: Permite expresar las instrucciones en un lenguaje común(ingles, español, etc.) para facilitar tanto la escritura como la lectura de lasolución de un programa. No existen reglas para escribir pseudocódigo.

Page 15: Algoritmos y programacion en C++
Page 16: Algoritmos y programacion en C++
Page 17: Algoritmos y programacion en C++

Son las acciones que debe realizar un algoritmo para resolver un problema.Las instrucciones mas comunes son las siguientes:

A. Instrucciones de inicio / fin: Representa el inicio y fin de un algoritmo.

B. Instrucciones de asignación: Representa la asignación de un valor a unavariable, se puede representar usando una flecha o el símbolo deigualdad, el cual es usado por muchos de los lenguajes de programación.

Page 18: Algoritmos y programacion en C++

C. Instrucción de lectura: Representa el ingreso de datos mediante undispositivo de entrada, que muchas veces es representado por unsímbolo de teclado.

D. Instrucción de escritura: Representa la salida de la información medianteun dispositivo de salida, puede ser representado por el símbolo deentrada/salida, por símbolo de pantalla o impresora.

Page 19: Algoritmos y programacion en C++

E. Instrucción de bifurcación: Cambian el flujo del programa según elresultado de una expresión lógica (condición).

Page 20: Algoritmos y programacion en C++

• Permiten describir y explicar, además sirve como ayuda para recordar yentender las operaciones que se van a ejecutar.

• Los comentarios no son instrucciones, por lo tanto al ser traducido elcódigo fuente a código binario (tiempo de compilación), los lenguajes deprogramación los ignoran.

• Dependiendo el lenguaje de programación los comentarios se escribenusando cierta simbología, en este curso usaremos el símbolo // en lospseudocódigos para colocar comentarios.

Ejemplo de Pseudocódigo

Page 21: Algoritmos y programacion en C++

Son palabras usadas por el lenguaje de programación que no deben serutilizados como identificadores de variables, funciones, entre otros.

• Algunas de las palabras reservadas C++

short, int, float, double, if, for, Switch …

Son los nombres que asignamos a las variables, constantes, funciones,objetos, entre otros; y no pueden coincidir con las palabras reservadasporque ocasionaría ambigüedad, y el compilador no lo entendería. Por logeneral, los identificadores deben de cumplir las siguientes reglas:

• Deben comenzar por una letra. Evite usar ñ y tilde.

• No debe coincidir con palabras reservadas del lenguaje de programaciónque esta utilizando.

Page 22: Algoritmos y programacion en C++

Error de compilación C++

Page 23: Algoritmos y programacion en C++

Representa un espacio de memoria RAM, el cual guarda un valor que servirápara algún proceso en articular; dicho valor puede ser modificado encualquier momento. Las variables tienen, por lo general, un identificador(nombre) y, asignado, el tipo de dato que se esta utilizando; es decir, sialmacena un numero (entero), si es texto o alfanumérico (cadena), si es unvalor verdadero o falso (lógico) llamado también booleano.

Ejemplo de Pseudocódigo

Page 24: Algoritmos y programacion en C++

Representa un espacio de memoria RAM, el cual guarda un valor que servirápara algún proceso en particular; dicho valor permanece fijo, es decir, nopuede cambiarse en la ejecución del programa. Las constantes tienen, al igualque las variables, un identificador (nombre) y un tipo de dato.

Ejemplo Pseudocódigo

Page 25: Algoritmos y programacion en C++

Al declarar una variable, debemos indicar el tipo de dato que es permitidoalmacenar en dicha variable. Cada lenguaje de programación trabaja con unavariedad de tipo de datos; por lo general, todos usan los llamados«primitivos», que son los siguientes:

A. Entero: Representa los números enteros (no almacena decimales).

Ejemplo Pseudocódigo

Page 26: Algoritmos y programacion en C++

En el lenguaje de C++ el tipo entero se puede trabajar con “short”, “int” y“long”; la diferencia está en que unos almacenan rangos de númerosdiferentes, llamados también «entero corto» y «entero largo».

Ejemplo C++

Ejemplo C++

Page 27: Algoritmos y programacion en C++

B. Real: Representan los números reales (almacenas decimales).

Ejemplo Pseudocódigo

En el lenguaje de Java, el tipo real se puede trabajar con float o double, ladiferencia está en la cantidad de decimales que pueden almacenar, llamadostambién «precisión simple» y «precisión doble».

Ejemplo C++

Page 28: Algoritmos y programacion en C++

C. Carácter: Representa un carácter de cualquier tipo: texto, numero,símbolo, etc. El valor se coloca entre comillas simples.

Ejemplo Pseudocódigo

Ejemplo C++

Page 29: Algoritmos y programacion en C++

D. Lógico: Representan los valores <<verdadero>> o <<falso>>, conocidostambién como boolean, no se colocan comillas simples ni dobles.

Ejemplo Pseudocódigo

En C++ se utiliza el tipo de dato llamado <<boolean>>, para almacenar valoreslógicos.

Ejemplo C++

Page 30: Algoritmos y programacion en C++
Page 31: Algoritmos y programacion en C++

Son los que permiten realizar los cálculos entre valores fijos y variables. Losoperadores se clasifican en: aritméticos, relacionales, lógicos y de cadena.Sobre estos se trata a continuación:

A. Operadores Aritméticos: Son aquellos operadores que permiten realizarlas operaciones aritméticas, de la misma forma como se utilizan en lasmatemáticas.

Page 32: Algoritmos y programacion en C++

Dependiendo el lenguaje de programación los operadores varían o noimplementan uno u otro operador; en el caso de C++ implementan lossiguientes:

Para elevar a una potencia se usa pow (9.0, 2.0), dentro de los parámetros secoloca números reales (double), y para división entera se usa / pero connúmeros enteros.

División Real

N = 9.0 / 4.0 // retorna 2.25

División Entera

N= 9 / 4 // retorna 2

Page 33: Algoritmos y programacion en C++
Page 34: Algoritmos y programacion en C++

B. Operadores Relacionales: Llamados también operadores de comparación,y permiten evaluar si dos valores guardan alguna relación entre si.

Dependiendo el lenguaje de programación los operadores varían o noimplementan uno u otro operador; en el caso de C++ varia la simbología enalgunos.

Page 35: Algoritmos y programacion en C++

Expresiones lógicas (condiciones) – (algoritmo)

C. Operadores Lógicos: Son aquellos operadores que se utilizan encombinación con los operadores de relación.

Page 36: Algoritmos y programacion en C++

<<Y>> lógico: Si p y q son valores lógicos, ambos deben ser verdaderos paraque Y devuelva verdadero.

Expresiones lógicas (condiciones)

<<O>> lógico: Si p y q son valores lógicos, uno de ellos deben ser verdaderopara que O devuelva verdadero.

Expresiones lógicas (condiciones) – (algoritmos)

Page 37: Algoritmos y programacion en C++

<<No>> lógico: Si p es un valor lógico, el operador No invierte su valor.

Expresiones lógicas (condiciones)

Para C++se utiliza la siguiente simbología:

Page 38: Algoritmos y programacion en C++

Todos los lenguajes de programación implementan estructuras para controlarla ejecución de un programa, estas son:

• Estructura secuencial.

• Estructura selectiva simple y doble.

• Estructura selectiva múltiple.

• Estructura repetitiva mientras.

• Estructura repetitiva para.

Page 39: Algoritmos y programacion en C++

Problema n.° 1

Enunciado: Dados dos números enteros, hallar la suma.

Análisis: Para la solución de este problema se requiere que el usuario

ingrese dos números enteros; luego que el sistema realice el cálculo

respectivo para hallar la suma. Para esto se usará la siguiente expresión:

Expresión matemática:

S = n1 + n2

Expresión algorítmica:

S ← n1 + n2

Entrada:

• Dos números (n1 y n2)Salida:

• La suma (S)

Page 40: Algoritmos y programacion en C++

Algoritmo

Diagrama de flujo Pseudocódigo

Fin

Escribir s

Inicio

n1, n2, s : Entero

Leer n1, n2

s ← n1 + n2

Inicio

// Variables

n1, n2, s : Entero

// Entrada

Leer n1, n2

// Proceso

s ← n1 + n2

// Salida

Escribir s

Fin

Page 41: Algoritmos y programacion en C++

Problema n.° 2

Enunciado: Hallar el cociente y el residuo (resto) de dos números enteros.

Análisis: Para la solución de este problema se requiere que el usuario ingrese

dos números enteros ; luego el sistema realice el calculo respectivo para hallar

el cociente y residuo, para esto se usara la siguiente expresión:

Expresión Algorítmica:

c ← n1 / n2

r ← n1 Mod n2

Entrada:

• Dos números (n1 y n2)

Salida:

• El cociente (c)

• El residuo (r)

Page 42: Algoritmos y programacion en C++

Algoritmo

Diagrama de flujo Pseudocódigo

Fin

Escribir c, r

Inicio

n1, n2, c, r : Entero

Leer n1, n2

c ← n1 \ n2r ← n1 Mod n2

Inicio

// Variables

n1, n2, c, r : Entero

// Entrada

Leer n1, n2

// Proceso

c ← n1 \ n2

r ← n1 Mod n2

// Salida

Escribir c, r

Fin

Page 43: Algoritmos y programacion en C++

Problema n.° 3

Enunciado: Dado el valor de venta de un producto, hallar el IGV (19%) y el

precio de venta.

Análisis: Para la solución de este problema se requiere que el usuario ingrese

el valor de venta del producto; luego, que el sistema realice el cálculo

respectivo para hallar el IGV y el precio de venta. Para esto se usara la

siguiente expresión:

Expresión algorítmica:

igv ← vv * 0.19

pv ← vv + igv

Entrada:

• Valor de venta (vv)

Salida:

• El IGV (igv)

• El precio de venta (pv)

Page 44: Algoritmos y programacion en C++

Algoritmo

Diagrama de flujo Pseudocódigo

Inicio

// Variables

vv, igv, pv : Real

// Entrada

Leer vv

// Proceso

igv ← vv * 0.19

pv ← vv + igv

// Salida

Escribir igv, pv

FinFin

Escribir igv, pv

Inicio

vv, igv, pv : Real

Leer vv

igv ← vv * 0.19 pv ← vv + igv

Page 45: Algoritmos y programacion en C++

Problema n.° 4

Enunciado: Hallar la potencia de a, donde <<a>> y <<n>> pertenecen a los

números enteros positivos.

Análisis: Para la solución de este problema se requiere que el usuario ingrese

dos números enteros positivos <<a>> y <<n>>; luego, que el sistema procese

y obtenga la potencia p.

Expresión matemática:

𝑝 = 𝑎𝑛 = 𝑎 𝑥 𝑎 𝑥 𝑎 𝑥 …𝑥 𝑎

Expresión algorítmica:

p ← a ^ n

Entrada

• Dos números enteros (a, n)Salida:

• La potencia (p)

n factores

Page 46: Algoritmos y programacion en C++

Algoritmo

Diagrama de flujo Pseudocódigo

Inicio

// Variables

a, n : Entero corto

p : Entero largo

// Entrada

Leer a, n

// Proceso

p ← a ^ n

// Salida

Escribir p

FinFin

Escribir p

Inicio

a, n : Entero cortop : Entero largo

Leer a, n

p ← a ^ n

Page 47: Algoritmos y programacion en C++

Problema n.° 5

Enunciado: Determinar la suma de los N primeros números enteros positivos, use la

siguiente formula.

𝑺 =𝑵(𝑵 + 𝟏)

𝟐

Análisis : Para la solución de este problema se requiere que el usuario ingrese un

número entero positivo <<n>>; luego, que el sistema procese y obtenga la suma de los

primeros números enteros positivos hasta <<n>>.

Expresión matemática:

𝑺 =𝑵(𝑵 + 𝟏)

𝟐

Expresión algorítmica:

s ← (n * (n+1)) 2

Entrada:

• Numero entro (n)Salida:

• La suma (s)

Page 48: Algoritmos y programacion en C++

Algoritmo

Diagrama de flujo Pseudocódigo

Inicio

// Variables

n, s : Entero corto

// Entrada

Leer n

// Proceso

s ← (n * (n+1)) / 2

// Salida

Escribir s

Fin

Fin

Escribir s

Inicio

n, s : Entero corto

Leer n

s ← (n * (n+1)) / 2

Page 49: Algoritmos y programacion en C++

Problema n.° 6

Enunciado: Crear un programa para encontrar el área de un circulo, usar la formula :

𝑨 = 𝝅. 𝒓²• Área (A): Es el área del circulo.

• PI (π): Representa el valor constante pi (3.14159)

• Radio (r): Es el radio del circulo.

Análisis: Para la solución de este problema se requiere que el usuario ingrese el radio

del circulo; luego, que el sistema procese y obtenga el área del circulo.

Expresión aritmética:

𝑨 = 𝝅. 𝒓²

Expresión algorítmica:

A ← 3.14159 * r ^ 2

Entrada:

• Radio (r)

Salida:

• Área (a)

Page 50: Algoritmos y programacion en C++

AlgoritmoDiagrama de flujo Pseudocódigo

Inicio

//Constantes

PI = 3.14159 : Real

// Variables

r, a : Real

// Entrada

Leer r

// Proceso

a ← PI * r ^ 2

// Salida

Escribir a

FinFin

Escribir a

Inicio

n, a : Real

Leer r

a ← PI * r ^ 2

PI ← 3.14159 : Real

Page 51: Algoritmos y programacion en C++

Problema n.° 7

Enunciado: Crear un programa que permita convertir una cantidad de

segundos en horas, minutos y segundos:

Análisis: Para la solución de este problema se requiere que el usuario ingrese

un tiempo expresado en segundo, luego que el sistema procese y obtenga las

hora, minutos y segundos restantes.

Entrada:

• Tiempo en segundos (t)

Salida:

• Horas (h)

• Minutos (m)

• Segundos (s)

Page 52: Algoritmos y programacion en C++

Diagrama de flujo Pseudocódigo

Inicio

//Constantes

HORA = 360 : Entero

MINUTO = 60 : Entero

// Variables

t, h, m, s : Entero

// Entrada

Leer t

// Proceso

h ← t \ HORA

t ← t Mod HORA

m ← t \ Minuto

s ← t Mod Minuto

// Salida

Escribir h, m, s

Fin

Fin

Escribir a

Inicio

t, h, m, s : Entero

Leer t

h ← t \ HORAt ← t Mod HORAm ← t \ Minuto

s ← t Mod Minuto

HORA = 360 : EnteroMINUTO = 60 : Entero

Page 53: Algoritmos y programacion en C++

Problemas PropuestosProblema n.° 1

Enunciado: Hallar el área y el perímetro de un cuadrado.

Problema n.° 2

Enunciado: Convertir una cantidad de grados Fahrenheit a Celsius y Kelvin.

Problema n.° 3

Enunciado: Convertir grados sexagesimales a centesimales.

Problema n.° 4

Enunciado: Dado 4 números enteros positivos, obtener el porcentaje de cada uno en

función a la suma de los 4 números ingresados.

Problema n.° 5

Enunciado: Obtener el valor de c y d de acuerdo a las siguientes formulas.

𝑐 =(4𝑎4+3𝑏𝑎+𝑏2)

𝑎2−𝑏2𝑑 =

(3𝑐2+𝑎+𝑏)

4

Page 54: Algoritmos y programacion en C++