Algoritmos y  lenjuage de programacion
Upcoming SlideShare
Loading in...5
×
 

Algoritmos y lenjuage de programacion

on

  • 154 views

 

Statistics

Views

Total Views
154
Views on SlideShare
154
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Algoritmos y  lenjuage de programacion Algoritmos y lenjuage de programacion Document Transcript

  • INSTITUTO TECNOLOGICO SUPERIOR DE GUASAVE ALGORITMOS YLENGUAJE PROGRAMACION ASESOR: CARLOS ALFREDO CERVANTES ALUMNO: RUIZ ALVAREZ ARAN ISAAC ING. INSDUTRIAL 4-4
  • FUNCION ESTANDAR Se denomina una función estándar de C, es decir, una función que está incluida con el compilador. Para poder usarla dentro de un programa hay que decir en el mismo como es su forma: eso se hace incluyendo la línea #include <stdio.h> al principio. De momento dejaremos esto así y lo explicaremos dentro de más sobre printf. Para poder trabajar o llamar a una función estándar hay que conocer que necesita y qué hace. De la función printf hay que saber: Su nombre cada vez que se coloca printf en un programa le estamos diciendo al compilador de C que queremos usar esta función. Lo que se quiere imprimir, que irá entre los paréntesis En general, la expresión (números o texto) que va entre los paréntesis de una función se llaman parámetros de la función. Por ejemplo, si en matemáticas se quiere calcular el valor de Fórmula en MathML: Logaritmo de tres equis al cuadrado , el parámetro de la función logaritmo sería Fórmula en MathML: Tres equis al cuadrado . En lenguaje C, algunas funciones necesitan que le demos datos para poder hacer su trabajo y otras no. Por ejemplo, printf necesita el texto que hay que mostrar por pantalla (el cual se entrecomilla), pero para la función principal main no es obligatorio. Qué hace y cómo funciona
  • printf() escribe texto en la pantalla del computador. Los detalles de funcionamiento aparecen en el manual del compilador que se esté usando. El manual nos dice, por ejemplo, que si colocamos el código n dentro del parámetro de printf(), se imprimirá un salto de línea. Un compilador suele tener decenas de funciones estándar, aunque su número exacto y los detalles concretos de funcionamiento de las funciones estándar de C dependen de cada compilador. Las variables nos permiten almacenar datos. Estos datos pueden ser de distinto tipo o formato numérico y de distinto tamaño (en bits o bytes). Por ejemplo, un dato numérico puede almacenarse en una variable de tipo entero o en otra de coma flotante simple precisión. Recíprocamente, 32 bits (4 bytes) de la memoria pueden servir para contener un número de coma flotante simple precisión, o para 4 letras según el convenio ASCII. Es decir, que las variables fijan una interpretación de los bits de memoria o datos de que disponemos en el programa. Las variables pueden ser manipulados usando expresiones de distinto tipo. Una expresión es un conjunto de operaciones que realizan cálculos con datos o con los datos contenidos en las variables. Por ejemplo, las expresiones aritméticas son las más comunes. 2 ENTRADA Y SALIDAD DE DATOS En un algoritmo, los datos de entrada son los que la computadora va a procesar. Los datos de salida son datos derivados, es decir, obtenidos a partir de los datos de entrada. Por esta razón, a los datos de salida se les considera más significativos que a los datos de entrada. Sin embargo, en un sentido más filosófico, a los datos de entrada se les considera la materia primade los datos de salida, considerados estos como la verdadera información. Entrada Una instrucción de entrada (o simplemente entrada) consiste en asignar a una o más variables, uno o más valores recibidos desde el exterior. Normalmente, View slide
  • los datos son recogidos desde la entrada estándar (el teclado), pero, también existen otros dispositivos de entrada (el ratón, el escáner,...). En algoritmos la instruccion de entrada es: leer( <nombre_de_la_variable_1>, <nombre_de_la_variable_2>, ..., <nombre_de_la_variable_n> ) También se puede escribir como: leer( <lista_de_variables> ) Ejemplo : Partiendo de las variables cadena: nombre, apellidos entero: edad para cada una de ellas se puede recoger un valor desde el teclado, escribiendo: leer( nombre ) leer( apellidos ) leer( edad ) Otra posibilidad es leer( nombre, apellidos, edad ) Salida Una instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los valores obtenidos de la evaluación de una lista de expresiones. Normalmente, los datos son enviados a la salida estándar (la pantalla), pero, también existen otros dispositivos de salida (la impresora, el plotter,...). En pseudocodigo, la sintaxis de una instruccion de salida es: View slide
  • escribir( <expresión_1>, ..., <expresión_n> ) También se puede escribir como: escribir( <lista_de_expresiones> ) Ejemplo: Partiendo de las variables cadena nombre = "Timoteo" entero edad = 27, hijos = 2 al escribir escribir ( nombre, " tiene ", edad, " años." ) Escribir ( nombre, " tiene ", hijos, " hijos." ) FUNCIONES DEFINIDAS POR EL USUARIO. Definición de Funciones Las funciones definidas por el programador se escriben “fuera” de la función main. Si se recuerda, uno de los objetivos del uso de las funciones es la descomposición de problemas complejos y el trabajo en grupo. El siguiente es un ejemplo de una definición de una función. Se utiliza antes de presentar la sintaxis formal de modo que nos podamos familiarizar con la terminología: double square(double numero) { double cuadrado; cuadrado = numero * numero; return cuadrado; } Esta definición de la función square consiste de: 1) El encabezado de la función double square(double numero)
  • Observe que el encabezado no termina con punto y coma. Las partes del encabezado de una función son los siguientes. a) Una lista de los argumentos de la función entre paréntesis: (double numero) Si se considera a la función como un programa pequeño, la lista de argumentos serían equivalentes a los datos que en un programa se introduciría a través de la instrucción cin. Es importante que observe que en la lista de argumentos se indican tanto la lista de los argumentos necesarios como el tipo de cada uno de ellos. b) El nombre de la función square que puede se cualquier identificador válido en C++. c) El tipo de valor que regresa la función como resultado. double 2) El cuerpo de la función { double cuadrado; cuadrado = numero * numero; return cuadrado; } El cuerpo de la función se encierra entre llaves y en él se escriben las sentencias que se necesitan ejecutar para lograr el objetivo de la función. Contiene al menos una sentencia return. La sentencia return va seguida del nombre de una variable o de un valor constante. return cuadrado; El valor de dicha variable (o el valor de dicha constante) constituye el valor de regreso de la función. El tipo del valor que regresa la función debe ser consistente con el tipo del valor de regreso especificado en el encabezado de la función. Observe que, en este ejemplo, el valor de regreso de la función (tipo
  • de la variable llamada cuadrado) es double, al igual que el tipo de valor de regreso especificado en el encabezado. Llamado de Funciones El llamado de las funciones definidas por el usuario se realiza de la misma forma que el llamado a funciones predefinidas. Por ejemplo, si un programador ha definido la función square de este ejemplo, los siguientes serían llamados válidos a la función: double x,y,z; x=2.0; y = square(10.0); z = square(x+y); Observe que los argumentos que se pasan a la función (10.0 en el primer caso y x+y en el segundo caso) son del tipo double y coinciden con el tipo definido para el argumento de la función. Asimismo, a la variable y se le asigna el valor de regreso de la función square(10.0). Esto es correcto porque el valor de regreso de la función es de tipo double y la variable y también es de tipo double. Note que no es necesario que los argumentos con que la función es llamada se nombren igual que los identificadores usados en el encabezado de la función. Paso por valor El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos pasar en otra dentro del ámbito local de la subrutina, consiste pues en copiar el contenido de la memoria del argumento que se quiere pasar a otra dirección de memoria, correspondiente al argumento dentro del ámbito de dicha subrutina. Se tendrán dos valores duplicados e independientes, con lo que la modificación de uno no afecta al otro. Paso por referencia El paso de parámetros por referencia consiste en proporcionar a la subrutina a la que se le quiere pasar el argumento la dirección de memoria del dato. En
  • este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se realiza sobre la misma posición de memoria. Puntero Un puntero o apuntador es una variable que da referencia a una región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria. Si se tiene una variable ' p ' de tipo puntero que contiene una dirección de memoria en la que se encuentra almacenado un valor ' v ' se dice que ' p ' apunta a ' v '. El programador utilizará punteros para guardar datos en memoria en muchas ocasiones, de la forma que se describe a continuación. Trabajar con punteros no implica la manipulación de los datos en sí, sino manejar las direcciones de memoria en la cuales estos residenEl ejemplo que sigue es propio del lenguaje C/C++ y no es de aplicación en otros lenguajes de programación: struct Elemento // Ejemplo de un nodo de lista doble enlazada { int dato; struct Elemento *siguiente; // El '*' es el operador de indirección, y es el usado para declarar punteros struct Elemento *anterior; }; Para acceder a los atributos como punteros de una estructura que va a ser tratada como tal, se debe desreferenciar el puntero y acceder a sus miembros como se haría con una variable normal, o usar directamente el operador: ->. De tal modo que: Elemento *elem; Elemento sig1 = (*elem).siguiente; Elemento sig2 = elem->siguiente; /* Se cumple que: sig1==sig2 */
  • Los paréntesis en este ejemplo son necesarios, pues el operador '*' es el que menor prioridad de operaciones tiene asignada (por lo que se haría *(elem.siguiente), lo que es incorrecto, pues trataría acceder a un campo de una dirección de memoria, y no de una estructura. Esto es un error sintáctico, en tiempo de compilación). Otro ejemplo en C++: Se presenta una función que no devuelve ningún valor, esta función llamada "swap" tiene como parámetros dos punteros del tipo int. Así, cuando sea llamada desde alguna parte del programa, recibirá las direcciones de dos variables; luego accederá a dichas variables gracias al operador de indirección (* precediendo al identificador del puntero) y podrá intercambiar sus valores residentes. void swap(int *x, int *y) { int temp; temp = *x; // copia el valor apuntado por x a temp *x = *y; // copia el valor apuntado por y en la ubicación del puntero x *y = temp; // copia el valor de temp en la ubicación apuntada por y }