155
Programació n I Cristhian Arrúa Picart

Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Embed Size (px)

Citation preview

Page 1: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Programación I

Cristhian Arrúa Picart

Page 2: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

•ALGORITMO:

…es una secuencia de acciones que cumplen una tarea…

Page 3: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

…mas especificamente

“sucesión finita de pasos que debe cumplir las siguientes especificaciones:”

1. Cada paso del algoritmo debe estar bien definido.

la definición de un paso debe ser suficientemente clara,

para que una persona pueda entenderla y realizarla.

Page 4: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

2. Un algoritmo debe tener un principio y un fin.

Un programa es un algoritmo escrito con un objetivo:

conseguir un resultado

Page 5: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• DATO:

Es la información con la que opera un algoritmo para llegar a un resultado.

Page 6: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• PROGRAMA:

Es la implementación de un algoritmo,

en un lenguaje entendible por una computadora.

Page 7: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Lenguajes Máquina

Es el “lenguaje natural” de una computadora.Consisten en cadenas de números.

Son dependientes de la máquina.

Page 8: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Lenguajes EnsambladoresSon abreviaturas similares al inglés para representar los operadores elementales de la computadora.

Page 9: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Lenguajes de Alto Nivel

Permiten a los programadores escribir instrucciones entendibles por el ser humano y la computadora.

Page 10: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Lenguajes interpretados vs. lenguajes compilados

Tras la escritura del algoritmo,

un compilador o un intérprete

transformarán el texto

en código máquina que el procesador es capaz de ejecutar

Page 11: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Lenguajes compilados

1. Compilar cada uno de los archivos del código fuente.

3. Enlazar los archivos objeto.

2. Ensamblarlos en archivos objeto.

Para poder generar un ejecutable se deben seguir los siguientes pasos:

Page 12: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplos:

C/C++

Page 13: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Desventajas:

• es mas difícil de manejar que los interpretados

• es sólo apto para un sistema operativo o formato de ejecutable

Page 14: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Lenguajes interpretadosNacen como respuesta a la dificultad de manejo de los compilados.

El programa intérprete analiza el código fuente y lo va ejecutando en tiempo real, sin compilarlo ni ensamblarlo.

Page 15: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

son multiplataforma:

un programa en Perl, por ejemplo, no debe ser compilado dos veces (una para Unix y otra para Windows). Con que haya diferentes versiones del intérprete en cada uno de esos ordenadores, específicamente compilados para ellos, basta.

Page 16: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplos:

PHPPerlPythonBASICLISP

Page 17: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Desventajas:

• Consume muchos recursos de memoria, sobre todo RAM.

• Se depende del intérprete:

si no tienes instalado el intérprete que corresponda, no podrás ejecutar el programa

Page 18: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

¿Cuáles son los pasos para resolver un problema de programación?

Page 19: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Especificación del problema.

• Análisis y búsqueda del algoritmo idóneo.

• Prueba de análisis.

• Codificación.

• Pruebas de la codificación..

Page 20: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Características de los algoritmos

Carácter finito

"Un algoritmo siempre debe terminar después de un número finito de pasos".

Page 21: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Precisión "Cada paso de un algoritmo

debe estarprecisamente definido;

las operaciones a llevar a cabo deben ser especificadas de

manera rigurosa y no ambigua para cada caso".

Page 22: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Entrada

"Un algoritmo tiene cero o más entradas:

cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre.

Estas entradas son tomadas de conjuntos específicos de objetos".

Page 23: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Salida

"Un algoritmo tiene una o más salidas:

cantidades que tienen una relación específica con las entradas".

Page 24: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Eficacia

en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

"También se espera que un algoritmo sea eficaz,

Page 25: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

pseudocódigo

en lenguaje naturalson formas más estructuradas para

representar algoritmos

Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras

lenguajes de programación

diagramas de flujo

tienden a ser ambiguas y extensas

evita muchas ambigüedades del lenguaje natural

se mantienen independientes de un lenguaje de programación específico

Page 26: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Descripción de un algoritmo

posiblemente con ilustraciones y omitiendo detalles.

se suele hacer en tres niveles

Descripción de alto nivel

se establece el problema,se selecciona un modelo matemáticose explica el algoritmo de manera verbal,

Page 27: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Descripción formal

Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución

Implementación

Se muestra el algoritmo expresado en un lenguaje de programación específico

Page 28: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Los diagramas de flujo son descripciones gráficas de algoritmos;

Diagrama de flujo

Page 29: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Los diagramas de flujo son usados para representar algoritmos pequeños

ya que abarcan mucho espacio y su construcción es laboriosa

Page 30: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Por su facilidad de lectura son usados como

introducción a los algoritmos,

descripción de un lenguaje y

descripción de procesos a personas ajenas a la computación.

Page 31: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural

Pseudocódigo

Page 32: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

VENTAJAS con respecto a DF

poco espacio que se requiere para representar instrucciones complejas

no está regido por ningún estándar

Page 33: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Máquina de Turing

es un modelo matemáticodiseñado por Alan Turing

que formaliza el concepto de algoritmo

A este modelo se le refiere comúnmente como la

"descripción de más bajo nivel"

Page 34: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Implementación

Muchos algoritmos son ideados para implementarse en un programa

como una red neuronal,un circuito eléctrico o un aparato mecánico

los algoritmos pueden ser implementados en otros medios,

Page 35: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo de algoritmo

El problema consiste en encontrar el máximo de un conjunto de números.

Descripción de alto nivel

dado un conjunto

se pide encontrar m tal que

para todo elemento x que pertenece al conjunto C.

Page 36: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Para encontrar el elemento máximo, se asume que el primer elemento (c0) es el máximo; luego, se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. En el caso que un elemento sea mayor que el máximo, se asigna su valor al máximo.Cuando se termina de recorrer la lista, el máximo número que se ha encontrado es el máximo de todo el conjunto.

Page 37: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Descripción formalen pseudocódigo

Algoritmo Encontrar el máximo de un conjuntofunción max ( C ) /C es un conjunto no vacío de números

n = cant_en_C // cant_en_C es el número de elementos de C

mayor = c0 // asigno a mayor el primero del conjunto

para i = 1 hasta n hacer si ci > mayor entonces

mayor = ci

finsi finpara

devolver mayor

Page 38: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Introducción a los tipos de datosLos datos que utilizan los programas se pueden clasificar en base a diferentes criterios.

Uno de los más significativos es aquel que dice que todos los datos que utilizan los programas son simples o compuestos.

Page 39: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Un dato simple es indivisible (atómico), es decir, no se puede descomponer.

Ejemplo 1: Un año es un dato simple.

Ejemplo 2:Una fecha es un dato compuesto por tres datos simples (día, mes, año).

Año 2010

Fecha Día 30Mes 11Año 2010

Page 40: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo 3:Otro ejemplo de dato simple es una letra.

Letra t Ejemplo 4:Para formar un nombre de persona se utilizan varios caracteres.

Nombre Ana (dato compuesto por tres caracteres)

Page 41: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Tipos de datos simples

• Entero • Real • Lógico • Carácter

también se les conoce como tipos de datos primitivos, básicos o fundamentales

Page 42: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Por ejemplo, en lenguaje C es posible utilizar datos de tipo entero, real y carácter, sin embargo, los datos de tipo lógico no se pueden utilizar, ya que, no existen en este lenguaje.

la mayoría de los

lenguajes de programaciónpermiten trabajar con ellos

Page 43: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Datos de tipo entero

Un dato de tipo entero es aquel que puede tomar por valor un número perteneciente al conjunto de los números enteros (Z), el cual está formado por los números naturales, su opuestos (números negativos) y el cero.

Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Page 44: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

La edad de una persona y el año en que nació, son dos datos de tipo entero.

Edad 29Año 1976

Page 45: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Z  es un conjunto infinito de números enteros, y como el ordenador no puede representarlos todos, un dato de tipo entero sólo puede tomar por valor un número perteneciente a un subconjunto de Z.

Los valores máximo y mínimo de dicho subconjunto varían según las características de cada ordenador y del compilador que se utilice.

Page 46: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

En pseudocódigo, para indicar que un dato es de tipo entero se utiliza la palabra reservada:

entero

Page 47: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Datos de tipo real

Un dato de tipo real es aquel que puede tomar por valor un número perteneciente al conjunto de los números reales (R), el cual está formado por los números racionales e irracionales.

Page 48: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:El peso de una persona (en kilogramos) y su altura (en centímetros), son datos que pueden considerarse de tipo real.

Peso 75,3

Altura 172,7

Page 49: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

R es un conjunto infinito de números reales, y como el ordenador no puede representarlos todos, un dato de tipo real sólo puede tomar por valor un número perteneciente a un subconjunto de R.

Los valores de dicho subconjunto varían según las características de cada ordenador y del compilador que se utilice.

Page 50: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

En pseudocódigo, para indicar que un dato es de tipo real se utiliza la palabra reservada:

real

Page 51: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Datos de tipo lógico

En programación, un dato de tipo lógico es aquel que puede tomar por valor sólo uno de los dos siguientes:

{ verdadero, falso }

Los valores verdadero y falso son contrapuestos, de manera que, un dato de tipo lógico siempre está asociado a que algo se cumpla o no se cumpla.

Page 52: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

El estado de una barrera de paso de trenes es un dato que puede considerarse de tipo lógico, por ejemplo, asociando verdadero a que esté subida y falso a que esté bajada.

Estado falso (indica que la barrera está bajada)

Page 53: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Datos de tipo carácter

Un dato de tipo carácter es aquel que puede tomar por valor un carácter perteneciente al conjunto de los caracteres que puede representar el ordenador.

En pseudocódigo, el valor de un dato de tipo carácter se puede representar entre comillas simples (') o dobles (").

Page 54: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carácter.

Respuesta correcta a la pregunta 3...: 'c'

Page 55: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Datos de tipo cadena

Un dato de tipo cadena es aquel que pueden tomar por valor una secuencia de caracteres.

Ejemplo:

El título de un libro y el nombre de su autor, son datos de tipo cadena.

Título "La Odisea" (cadena de 9 caracteres)

Autor "Homero" (cadena de 6 caracteres)

Page 56: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

En pseudocódigo, el valor de un dato de tipo cadena se puede representar entre comillas simples (') o dobles (").

En pseudocódigo, para indicar que un dato es de tipo cadena se utiliza la palabra reservada: cadena

Page 57: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Clasificación de los tipos de datos simplesLos tipos de datos simples se clasifican en

• predefinidos y • definidos por el programador.

Los tipos de datos simples predefinidos (estándares) son aquellos proporcionados por los lenguajes de programación.

Page 58: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

•Numericos

Entero

Real

•Lógico

•Carácter

Predefinidos (estándares)

Page 59: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Pero, el programador también puede definir sus propios tipos de datos simples (subrangos y enumerados.

Definidos por el programador (no estandares)

•Subrangos

•Enumerados

•Estructuras

Page 60: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Programación estructurada

Page 61: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Es un método disciplinado de escribir programas que sean:

claros fáciles de modificar

correctos

Page 62: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Estructura de un Programa en C

Page 63: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include ... /* Directivas */...main () /* Cabecera de main () */{

/* Cuerpo del main */...

funcion2();

funcion1();

funcionn();...

}

Page 64: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

fun1() /* Cabecera de fun1() */

{/* Cuerpo de fun1() */...

}

...

funn() /* Cabecera de funn() */

{/* Cuerpo de funn() */...

}

Page 65: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Fases para la ejecución

de un

programa C

Page 66: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Fase 1 DiscoEditor

Fase 2 DiscoPreprocesador

Fase 3 DiscoCompilador

Page 67: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Fase 4 DiscoEnlazador

Fase 5 Cargador

Fase 6 CPU

Memoria Primaria

Memoria Primaria

Page 68: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables

• Es un objeto del lenguaje cuyo valor puede cambiar.

• Antes de utilizar una variable, ésta debe ser declarada.

Page 69: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Al declarar una variable se asocia un nombre, con un tipo de datos.

• Se pueden declarar en tres sitios diferentes:

Page 70: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Dentro de las funciones (variables locales)

• Fuera de todas las funciones (variables globales)

• En la definición de los parámetros de las funciones (parámetros formales, que son variables locales)

Page 71: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La información elemental de una variable se compone de:• Un valor:

Es el valor que tiene la variable en un momento dado.

Page 72: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Un tipo:

• Un nombre, o identificador:

Define un conjunto de valores y operaciones posibles.

Es la forma en que se puede referir a la información.

Page 73: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Tipos de Datos

• Representa el rango de valores que puede tener la variable.

• Tienen asociado un conjunto de operadores.

Page 74: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Pueden ser:

• Básicos.

char Representa 1 carácter y ocupa 1 octeto.

int Representa un entero y ocupa 2 octetos.

Page 75: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

float

void

Representa los números reales y ocupa 4 octetos.

double Representa un número real en doble precisión y ocupa 8 octetos.

No representa ningún valor.

Page 76: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

• Compuestos.Combinaciones de los básicos.

Matrices

Estructuras

Uniones

Page 77: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Las declaraciones de variables tienen el siguiente formato general:

<clase de almacenamiento><tipo><lista de identificadores>

Page 78: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Donde...Clase:

es la forma de almacenamiento.

Tipo:

es el tipo de datos.

Lista de Identificadores

Es una secuencia de nombres separadas por comas.

Page 79: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplos:

char car1, car2, car3;

int m, n;

float x, y;

double d;

Page 80: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Modificadores de tipo

• short

• long

• unsigned

• signed

Page 81: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Al tipo entero se le pueden asociar calificadores;

shortlong

para referirse a su tamaño:

para referirse al rango de valores que puede tomar:

unsignedsigned

Page 82: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplos:

short int m, n;

unsigned int contador

unsigned char caracter;

Page 83: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

TIPO BYTES

VALOR MINIMO

VALOR MAXIMO

signed char 1 -128 127

unsigned char 1 0 255

signed short 2 -32.768 +32.767

unsigned short 2 0 +65.535

signed int 2 -32.768 +32.767

unsigned int 2 0 +65.535

signed long 4 -2.147.483.648 +2.147.483.647

Unsigned long 4 0 +4.294.967.295

VARIABLES DEL TIPO NUMERO ENTERO

Page 84: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Modificadores de Acceso

• const

• volatile

Se emplean para controlar el modo en que las variables se modifican en el programa.

Page 85: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

constIndica que la variable no se podrá modificar en todo el programa.

volatileIndica al compilador que la variable puede ser modificada en forma no explícita.

Page 86: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Visibilidad de Variables Locales y Globales

Un programa fuente en C contiene bloques de sentencias, que pueden ser funciones o agrupaciones de instrucciones.

Page 87: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Los bloques pueden ser paralelos:

{

bloque1

}

{

bloque2

}

Los bloques pueden ser anidados:

{

bloque1

{

bloque2....

}

}

Page 88: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables Locales

Son las variables que se declaran dentro de un bloque.

Se crean al comienzo del bloque y se destruyen al salirse de él.

Page 89: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Las variables que se declaran como argumentos de las funciones tienen las mismas características que las variables locales.

Page 90: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

{int x, y, m, n;

x = 1;

y = 2;

m = 3;

n = 4;

printf(“%d %d %d %d \n”, x, y, m, n);

}

Ejemplo:

/* Escribe 1 2 3 4 */

Page 91: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

{

int x, y, m, n;

x = 5;

y = 6;

m = 7;

n = 8;

printf(“%d %d %d %d \n”, x, y, m, n);

} /* Escribe 5 6 7 8 */

Page 92: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables Globales

Son las variables que se declaran fuera de todos los bloques.

Se conocen a lo largo de todo el programa y se pueden utilizar desde cualquier sitio.

Page 93: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Si dentro de un bloque se repite la declaración de una variable definida en un bloque exterior, el acceso se referirá a la variable del bloque más interno.

Page 94: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

{

int x;

x = 1;

{

printf(“%d”, x);

}

printf(“%d”, x);

}

/* escribe 1 */

/* escribe 1 */

Page 95: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

{

int x;

x = 1;

printf (“%d”, x);

{

int y;

y = 2 + x;

printf(“%d”, x);

}

printf(“%d”, x);

}

/* escribe 2 */

/* escribe 1 */

/* escribe 1 */

Page 96: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

automático (auto)estática (static)

externa (extern)

registro (register)

Clases de almacenamiento

Page 97: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables automáticasUna variable es automática si es local a una función o bloqueSu existencia está ligada a esa función o bloque.Si no se especifica una clase al declarar una variable, ésta es siempre automática.

Page 98: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:.....

{

int x,y,z;

....

}

Es equivalente a:

Page 99: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

.....

{

auto int x,y,z;

....

}

Page 100: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables externasÉstas variables tienen almacenamiento permanente.

Se pueden emplear para pasar información entre los diferentes bloques de un programa.

Page 101: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Todas las funciones y bloques declarados después de una variable externa podrán acceder a ella.

Page 102: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Se pueden distinguir dos tipos de declaraciones:

Las que relacionan un nombre a una variable.

Y las que además de relacionarlos, reservan memoria para la variable.

Page 103: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

Fun2()

{

....

extern int x

.....

}

int x;

main()

{

....

.....

}

Page 104: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La fun2() emplea la variable x, definida en otra parte del programa.

Page 105: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables EstáticasExisten desde el comienzo al final de la ejecución del programa.Pueden ser global a todo el programa, local a una unidad de compilación, o local a una función.

Page 106: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Todas las variables globales son estáticas y accesibles desde todos los módulos del programa , por defecto.

Una variable estática y local a una función, conserva su valor de una llamada a otra de la función.

Page 107: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Variables de registro

Una variable es de clase registro cuando se desea que resida en uno de los registros de la CPU.

Sólo se puede utilizar la clase registro con los tipos entero y carácter.

Page 108: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

{

....

register int contador;

....

}

Page 109: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

El acceso a estas variables es más rápido.

Se suelen emplear para controlar bucles.

Page 110: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Inicialización de Variables

Formato general:

<tipos básicos> = <expresión>

Page 111: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Las variables globales y estáticas se inicializan a cero si no se especifica ningún valor.

Ambas se deben inicializar con expresiones constantes.

Page 112: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Las variables estáticas las inicializa el compilador una sola vez, al comenzar el programa; no en cada ejecución del código.

Page 113: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Las variables locales y de registro tienen valores desconocidos hasta que se les asigna uno dentro del programa.

Si tienen valores iniciales, se asignan cada vez que se ejecuta el bloque donde se definen.

Page 114: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Estructuras de Control

Bifurcaciones y Bucles

Page 115: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La estructura IF

if (expresión) sentencia_verd

else sentencia_falsa

Donde expresión debe dar un valor verdadero (diferente de cero)

o falso (igual a cero)

Page 116: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

If/else anidadosEjemplo:Escribir un programa que imprima A para calificaciones mayores o iguales a 90, B para calificaciones mayores o iguales a 80, C para calificaciones mayores o iguales a 70, D para calificaciones mayores o iguales a 60, y F para las demás calificaciones.

Page 117: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>

void main(){int puntaje;

clrscr();printf("Ingrese el puntaje del examen entre 0

y 100\n");scanf("%d",&puntaje);

Page 118: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

if (puntaje>=90)printf("Su calificaci¢n fue A\n");

elseif (puntaje>=80)

printf("Su calificaci¢n fue B\n");else

if (puntaje>=70)printf("Su calificaci¢n fue

C\n");else

if (puntaje>=60)printf("Su calificaci¢n

fue D\n");else

printf("Su calificaci¢n fue F\n");

getch();}

Page 119: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La estructura SWITCHEjemplo:switch (orden) {

case 0: printf(“Es el caso 0\n”);

break;

case 1: printf(“Es el caso 1\n”);

break;

default: printf(“No es ninguno de los casos anteriores\n”);

}

Page 120: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La variable orden se evalúa y se compara sucesivamente con todas las constantes que aparecen junto a la palabra reservada case.

Cuando es igual, se ejecuta la sentencia o bloque de sentencias correspondientes.

¿Qué pasa si no aparece break?

Page 121: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Si aparece break, se termina la ejecución de la estructura switch.

La opción default indica la sentencia que se ejecuta por defecto.

No es necesario que esté presente.

Si no aparece la palabra break, continúa la ejecución de las siguientes sentencias de los otros case.

Page 122: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La estructura FOR

Se suele utilizar cuando es necesario repetir una instrucción o un bloque de instrucciones un número fijo de veces.

Ejemplo:

Escribir los 50 primeros números impares.

Page 123: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include <stdio.h>

void main(){

int m;

for(m=1;m<100;m+=2)

printf(“%d\n”,m);

}

Page 124: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Formato general:

for (exp1; exp2; exp3) { sentencias;

}

Donde:

Page 125: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

exp2:

es una expresión lógica, que determina el fin del bucle.

exp3:

es el incremento, que modifica la variable de control al final de cada vuelta.

es donde se le asigna un valor inicial a la variable de control del bucle.

exp1:

Page 126: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Se evalúa exp1

Se evalúa exp2

se ejecuta el bloque de sentencias dentro del bucle

Si es falsa

se termina de ejecutar el bucle

Si es verdadera

Se evalúa exp3

//La primera vez que entra al bucle

// generalmente altera la variable // de control

Page 127: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplos:

Variar la variable de control de 100 a 1en decrementos de 1.

for( i=100 ; i >= 1 ; i - -)

Variar la variable de control de 7 a 77 en pasos de 7.

for( i=7 ; i <= 7 ; i += 7)

Page 128: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicio1:

Escribir en pantalla todos los caracteres representables. #include<stdio.h>#include<conio.h>

void main(){

unsigned char i;

clrscr();

for(i=32;i<=255 && i>0 ;i++)printf("%3u=%c\t",i,i);

}

Page 129: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Escribir un programa que calcule la suma de los n primeros números naturales.

Ejercicio2:

Page 130: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>void main(){int n, i;int suma;clrscr();printf("Ingrese hasta que número desea

sumar\n");scanf("%d", &n);suma=0;for(i=0;i<=n;i++){

suma=suma+i;}printf("SUMA DESDE 0 HASTA %d es %d \n”

,n,suma);getch();}

Page 131: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicio3:

Escribir un programa que inicialice un vector a 0 y que despliegue su valor antes y después de la inicialización.

Page 132: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>

void main(){int i,vector[10];

clrscr();printf("Imprimo el contenido del

vector antes de inicializarlo.\n\n");

for(i= 0; i<=9; i++){printf("%d\t",vector[i]);

}printf("\n\n\n");

Page 133: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

// Inicializo el vector a 0.for(i= 0; i<=9; i++){

vector[i]=0;}printf("Imprimo el contenido del

vector después de inicializarlo.\n\n");

for(i= 0; i<=9; i++){printf("%d\t",vector[i]);

}getch();}

Page 134: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La estructura WHILE

Formato general:

while (expresión) {

sentencias;

}

Donde:

Page 135: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Expresión:

puede ser una expresión simple que al evaluarse debe ser verdadera o falsa.

El bucle se repite mientras la condición sea verdadera.

Cuando es falsa, el programa pasa a la instrucción siguiente, después del cuerpo de la estructura

Page 136: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejemplo:

Escribir un programa que lea caracteres del teclado y que los escriba en pantalla hasta que se ingrese EOF (fin de archivo, CTRL Z).

Page 137: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>

void main(){char car;

clrscr();while (car!=EOF) {

// CTRL Z indican fin de // archivo

putchar(car=getchar());}}

Page 138: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicio:

Escribir un programa que cuente los caracteres (sin el enter) y el número de líneas introducidas por el teclado.

El bucle se ejecuta hasta que se pulsen las teclas CTRL Z

Page 139: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>

void main(){char car;int ncar=0; // acumulador de caracteres.

int nlineas=0; //acumulador de lineas.

clrscr();...

Page 140: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

while ((car=getchar())!=EOF) { // CTRL Z indican fin de archivo

if (car=='\n')nlineas++;

elsencar++;

}printf("La cantidad de caracteres

ingresados fueron: %d\n", ncar);printf("La cantidad de lineas

ingresadas fueron: %d\n", nlineas);getch();}

Page 141: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicio:

Escribir un programa que almacene caracteres en un vector hasta que se apriete enter.

Luego desplegar el contenido del vector.

Page 142: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>#define TAMANIO 100void main(){

char veccar[TAMANIO];char car;int i;

clrscr();i=0;printf ("Escriba la oracion\n");

Page 143: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

while (((car=getchar())!=EOF) && (car!='\n')) {

veccar[i]=car;i++;

}

veccar[i]='\0'; // para indicar fin //de cadena.

for (i=0;i<TAMANIO;i++)printf("%c", veccar[i]);

getch();}

Page 144: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La estructura DO WHILE

La estructura do while repite la ejecución del bloque hasta que se cumpla una condición determinada.

Se evalúa la expresión de control del bucle después de que el cuerpo de la estructura se ejecute.

Page 145: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Por lo tanto:

El conjunto de sentencias que forman el cuerpo de la estructura, se ejecutará por lo menos una vez.

Formato general:

do {

sentencias;

} while (expresión);

Page 146: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicio:

Escribir un programa que imprima los números del 1 al 10.

Page 147: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

#include<stdio.h>#include<conio.h>

void main(){int cont=1;

clrscr();do {

printf("%d\t",cont);cont++;

}while (cont <=10);

getch();}

Page 148: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Definición y uso de Funciones

Un problema de computación se resuelve en varias partes.

Cada una de éstas partes se puede asociar a una función que resuelva su fracción correspondiente del problema.

Page 149: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Módulos de programa en C

En C los módulos se llaman Funciones.

Las funciones permiten al programador modularizar un programa.

Todas las variables declaradas en las definiciones de función son variables locales.

Page 150: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

La mayor parte de las funciones tienen una lista de parámetros.

Los parámetros proporcionan la forma de comunicar información entre funciones.

Los parámetros de una función son variables locales.

Page 151: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Formato general:

Tipo_de_valor_de_regreso nombre_de_la_función (lista de parámetros)

{

declaraciones

enunciados

}

Page 152: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Si tipo_de_valor_de_regreso es void la función no devolverá ningún valor.

Si tipo_de_valor_de_regreso no es especificado la función devolverá un valor int.

A cada parámetro deberá declararse un tipo.

Si no se especifica ninguno se asume como int.

Page 153: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Bajo ninguna circunstancia puede ser definida una función dentro de otra función!!!

Page 154: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Ejercicios:Ejercicios:

Escribe una función que calcule el cuadrado de un número.

Escribe una función que calcule el cuadrado de un binomio.

Es decir calcule :

(a + b)² = a² + 2 a b + b² ;

utilizando la función anterior.

Page 155: Programación I Cristhian Arrúa Picart ALGORITMO: …es una secuencia de acciones que cumplen una tarea…

Escribe una función que dada la base (b) y el exponente(e) calcule:

b elevado a la e.

Escribe una función que dados tres números devuelva el máximo entre ellos.