SlideShare una empresa de Scribd logo
Sesión 3
Programación Estructurada en ANSI C
Rafael Menéndez de Llano Rozas
DEPARTAMENTO DE INFORMÁTICA Y ELECTRÓNICA
Este material se publica bajo licencia:
Creative Commons BY-NC-SA 4.0
Índice
1. Introducción.
1. Elementos lexicográficos y estructura.
1. Datos escalares, expresiones y entrada/salida básica.
2. Selección.
2. Iteración.
3. Funciones, punteros y estructuración.
4. Datos estructurados.
5. Otros aspectos.
Universidad de Cantabria. Grado de Informática. RMЯ 58
3. Funciones: definición
 La programación estructurada se basa en usar solamente
sentencias secuenciales (de asignación o E/S), condicionales e
iterativas.
 Además ese código debe ser dividido en subrutinas construidas
con ese principio. En C (ANSI C) estas subrutinas se llaman
funciones.
 Tres partes importantes:
1. La definición. La función puede tomar una serie de
argumentos y devolver un dato (por defecto el tipo es int, pero
siempre está bien ponerlo):
tipo_ a_devolver nombre_funcion (declaración de argumentos, …)
{
declaración de variables locales;
Sentencias;
return(); /* el valor devuelto opcionalmente */
}
Universidad de Cantabria. Grado de Informática. RMЯ 59
3. Funciones: uso
2. La declaración. Siempre es conveniente declarar las funciones
que se van a usar (llamar) en otra función. Si la definición se hace
después además es obligatorio. Recomendación: USA SIEMPRE
PROTOTIPOS.
La declaración de la función se hace con prototipos de función que
son casi la primera línea de la función:
tipo_funcion nombre_funcion (tipos de argumentos);
3. El uso. Una vez declarada, se puede llamar asignando el valor
que devuelve (a través del return) a una variable del mismo tipo
(salvo tipo void):
variable = nombre_funcion (argumentos, …);
Universidad de Cantabria. Grado de Informática. RMЯ 60
3. Funciones: uso
#include <stdio.h> /* definicion de cabecera */
int main ()
{
void asteriscos(void); /* declaracion */
asteriscos (); /* llamada */
printf("Aqui pongo un nombren");
asteriscos (); /* llamada */
return(0);
}
void asteriscos (void)
{ /* cuerpo */
int cont; // variable local
for (cont = 1; cont < 40; cont ++)
putchar('*');
putchar('n');
}
Universidad de Cantabria. Grado de Informática. RMЯ 61
Se pueden cambiar
de orden
3. Funciones: peculiaridades
 Se pueden crear prototipos de tres maneras:
 Sólo lo que devuelve, ejemplo: float funcion ();
 Con tipos de argumentos, ejemplo: float funcion (int , float);
 Hasta con nombres, ejemplo: float función (int i, float f);
 Si no se devuelve o no se le pasa nada es void.
 El orden de las funciones en C no está definido pero se
suele poner la función main al principio. Eso nos obliga a
usar prototipos.
 Pueden ser llamadas desde cualquier lugar.
 La función main no se llama (pero nada lo impide).
 No se pueden anidar.
 Una función se puede llamar a sí misma: recursión.
Universidad de Cantabria. Grado de Informática. RMЯ 62
Ejercicio 14: Funciones
 Bájate los programas 17.c, 18.c, 19.c y 20.c
guárdalos en tu directorio.
1. Ábrelos con un editor, examínalos y comprende las
funciones y su uso.
2. Abre el 17 y comenta el prototipo ¿qué pasa?
3. Edita el programa, pasa la función asteriscos antes de main.
¿qué pasa?
4. Comprueba realmente hasta que argumento puedes llegar,
dependiendo del tamaño del dato long en 18.c
5. Entiende la diferencia entre un programa iterativo y uno
recursivo.
6. Observa que el programa 20 no tiene fin.
Universidad de Cantabria. Grado de Informática. RMЯ 63
3. Funciones: Argumentos y punteros
 Los argumentos a una función se pueden pasar de
varias formas:
 Por valor: En la función se copia el valor actual (copia
parámetro actual al formal) del argumento y los cambios no
tienen repercusión fuera de la función.
 Constante: Con la palabra reservada const indicamos explícitamente
que no se debe cambiar.
 Por referencia: Se quiere que la función cambie el argumento
con que se la ha llamado.
 Para ello en C se utiliza un tipo de dato que contiene direcciones
y se llama puntero.
 Existen tantos tipos de puntero como tipos de variables.
 Para declararlos se utiliza “*”:
int *entero;
float *real;
int variable;
Universidad de Cantabria. Grado de Informática. RMЯ 64
3. Punteros
Universidad de Cantabria. Grado de Informática. RMЯ 65
 Para trabajar con punteros existen dos operadores unarios:
 Dirección: &.
 Indirección: *.
 Además los operadores asignación, suma y resta también se
pueden usar (avanzarán o retrocederán posiciones en memoria de
acuerdo al tipo de datos apuntado).
var_entera = 23; /* almacenado en $5000 */
pun_entero = &var_entera; /* almacenado en $5004 */
var_entera = *pun_entero; /* equivalente a la primera */
3. Funciones: Paso por referencia
 Ejemplo de paso por referencia:
void intercambia(int *u, int *v)
{
int temp;
/* lo apuntado por u se pone en temp */
temp = *u;
/* lo apuntado por v se pone en lo apuntado por u */
*u = *v;
/* el valor de temp se pone en la dirección v */
*v = temp;
}
 Dos cosas muy importantes a tener en cuenta con los punteros:
1. Siempre se usan inicializados:
1. Con la dirección de una variable.
2. Con un array.
3. De forma dinámica (malloc y calloc) (equivalente a new).
2. Con suficiente espacio.
Universidad de Cantabria. Grado de Informática. RMЯ 66
Ejercicio 15: Funciones
 Bájate los programas 21.c y guárdalo en tu directorio.
1. Ábrelo con un editor, examínalo y comprende las funciones
y su uso.
2. Observa que el programa 21 no tiene main.
3. Crea uno para que intercambia dos valores de enteros.
4. Cambia la función para que uno de los argumentos sea
constante, compila e indica lo que pasa.
 Usando la palabra reservada const
Universidad de Cantabria. Grado de Informática. RMЯ 67
3. Variables: ámbito (scope)
 Existen varios tipos de ámbito de variables:
 Globales: Se declaran fuera de las funciones y se conocen
después de declararlas.
 Normalmente es una mala práctica de programación hacer uso
intenso de variables globales, ya que siempre pueden ser
cambiadas inadvertidamente desde cualquier función.
 Una forma aceptable de hacerlo es declarándolas de tipo extern
en las funciones, con lo cual se explicita que es global.
extern int varible_global; //por ejemplo una entero
 Locales: Se declaran dentro de las funciones y sólo se
conocen allí. Incluido el main. Pueden ocultar a las globales.
 Locales a un bloque. Sólo se conocerá en el bloque ( { } )
donde se han declarado.
 Además se pueden hacer constantes con const:
const float pi = 3.1416;
Universidad de Cantabria. Grado de Informática. RMЯ 68
3. Variables: Almacenamiento
 Al ser el C de medio nivel, el compilador puede
intentar controlar el modo de almacenamiento de las
variables:
 Automáticas: “auto”. Por defecto. No se suele poner.
 Externas: “extern”. Es una forma explícita de declarar que se
va a usar una variable global. ¡ No se crea !
 Estáticas: “static”. Permanecen durante toda la ejecución del
programa.
 Cuando una variable es local, es almacenada en el stack y cuando esa
función termina desaparece.
 Con static se logra que una variable permanezca durante toda la
ejecución del programa.
 Registros: “register”. Se “intentarán” localizar en algún
registro de la CPU.
Universidad de Cantabria. Grado de Informática. RMЯ 69
Ejercicio 16: Variables
 Bájate los programas 22.c y guárdalo en tu directorio.
1. Ábrelos con un editor, examínalo y comprende las variables,
su ámbito y su almacenamiento.
2. Haz una predicción de los valores que aparecerán en
pantalla.
3. Ejecútalo y comprueba que lo has entendido.
Universidad de Cantabria. Grado de Informática. RMЯ 70
3. Variables
void funcion (int arg1, int arg2) // los argumentos con otros nombres
{
auto char local1; /* no seria necesario el auto */
int local2; /* variable local a funcion */
int global = 54; // oculta la global
local1 = '@';
local2 = 32;
printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global);
{ //bloque
int local2; /* locales al nuevo ambito */
register int local3;
local2 = 15; /* nos referimos a la interior */
local3 = 4;
printf("ttdesde muy dentro valores de 1 2 y 3: %c %d %dn", local1, local2, local3);
}
printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global);
/* local2 valdra 32 y no 15, ya que es la de fuera */
/* Esto no se puede hacer, ya que aqui local3 no existe y daria errores de compilacion*/
// local3 = 232;
arg1 = 345; arg2 = 35; // no cambian fuera
printf("tdesde dentro valores de uno otro global: %d %d %dn", arg1, arg2, global);
}
Universidad de Cantabria. Grado de Informática. RMЯ 71
3. Funciones: main
 En C existen muchas funciones ya realizadas que se
conocen como la librería C estándar. Mira apuntes.
 En C es posible definir funciones con un tipo variable
de argumentos. Ej.: printf.
 A la función main se le pueden pasar tres argumentos
que hasta ahora no hemos usado:
 int argc; // entero con el numero de argumentos pasados
 char ** argv; // array con nombres de los argumentos
 Incluso existe un tercero que nos da las opciones de
la shell dentro del programa:
 char ** opciones;
Observa el ejemplo entorno.c
Universidad de Cantabria. Grado de Informática. RMЯ 72

Más contenido relacionado

La actualidad más candente

Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
Alejandro Leon Cerna
 
Tutorial C
Tutorial CTutorial C
Tutorial C
Idalia Tristan
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
Nana Garces
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
Zalimanunezc
 
Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2
camnav
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
Areli1215
 
Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.
itzel-patricia05
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
ANDRES FELIPE CRUZ ERAZO
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
Jaime David Romero Olivo
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
Idalia Tristan
 
Tutorial C
Tutorial CTutorial C
Tutorial C
Idalia Tristan
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
tacubomx
 
Funcion printf
Funcion printfFuncion printf
ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA
Danny Paredes Cruz
 
C++
C++C++
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
Operaciones Basicas C++
Operaciones Basicas C++Operaciones Basicas C++
Operaciones Basicas C++
yesid19
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
Jose Eamirez
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
yesid19
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
Idalia Tristan
 

La actualidad más candente (20)

Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
 
Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA
 
C++
C++C++
C++
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Operaciones Basicas C++
Operaciones Basicas C++Operaciones Basicas C++
Operaciones Basicas C++
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 

Similar a Sesion 4

Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
charnisch
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
Daniel Carpio Contreras
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
mezano09
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
Angel Perez
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
mezano09
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
Diego Andrés Alvarez Marín
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptx
Errol31
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
starduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
starduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
starduslex
 
Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1
SANTIAGO PABLO ALBERTO
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
Ysaac Ruiz
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
rotflol
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
yuli02
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
yuli02
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
computaciondosunefm
 
Visual c++
Visual c++Visual c++
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
Jennybeatriz1
 
Unidad1
Unidad1Unidad1
Unidad1
JHONNY
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
camnav
 

Similar a Sesion 4 (20)

Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptx
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Visual c++
Visual c++Visual c++
Visual c++
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Unidad1
Unidad1Unidad1
Unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 

Último

AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
sebastianpech108
 
Estructura de un buque, tema de estudios generales de navegación
Estructura de un buque, tema de estudios generales de navegaciónEstructura de un buque, tema de estudios generales de navegación
Estructura de un buque, tema de estudios generales de navegación
AlvaroEduardoConsola1
 
Semana 12 - Ley 29973 de las personas con discapacidad.pdf
Semana 12 - Ley 29973 de las personas con discapacidad.pdfSemana 12 - Ley 29973 de las personas con discapacidad.pdf
Semana 12 - Ley 29973 de las personas con discapacidad.pdf
SandyCuenca
 
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOSSISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
micoltadaniel2024
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
JaimmsArthur
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
hugodennis88
 
SLIDEHARE.docx..........................
SLIDEHARE.docx..........................SLIDEHARE.docx..........................
SLIDEHARE.docx..........................
azulsarase
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
LuisAngelGuarnizoBet
 
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtualSESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
JuanGavidia2
 
Calculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajosCalculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajos
JuanCarlos695207
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
raul958375
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
Carlos Pulido
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
MaraManuelaUrribarri
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
yamilbailonw
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
KeylaArlethTorresOrt
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
angiepalacios6170
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
pipex55
 
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
ANGELJOELSILVAPINZN
 
aplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdfaplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdf
MiguelZapata93
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
DanielMelndez19
 

Último (20)

AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
AE  34 Serie de sobrecargas aisladas_240429_172040.pdfAE  34 Serie de sobrecargas aisladas_240429_172040.pdf
AE 34 Serie de sobrecargas aisladas_240429_172040.pdf
 
Estructura de un buque, tema de estudios generales de navegación
Estructura de un buque, tema de estudios generales de navegaciónEstructura de un buque, tema de estudios generales de navegación
Estructura de un buque, tema de estudios generales de navegación
 
Semana 12 - Ley 29973 de las personas con discapacidad.pdf
Semana 12 - Ley 29973 de las personas con discapacidad.pdfSemana 12 - Ley 29973 de las personas con discapacidad.pdf
Semana 12 - Ley 29973 de las personas con discapacidad.pdf
 
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOSSISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
 
INGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completaINGLES_LISTA_DE_VOCABULARIO una lista completa
INGLES_LISTA_DE_VOCABULARIO una lista completa
 
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdfEXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
EXPOSICIÓN NTP IEC 60364-1 - Orlando Chávez Chacaltana.pdf
 
SLIDEHARE.docx..........................
SLIDEHARE.docx..........................SLIDEHARE.docx..........................
SLIDEHARE.docx..........................
 
DIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicosDIAGRAMA ELECTRICOS y circuito electrónicos
DIAGRAMA ELECTRICOS y circuito electrónicos
 
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtualSESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
 
Calculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajosCalculo-de-Camaras-Frigorificas.pdf para trabajos
Calculo-de-Camaras-Frigorificas.pdf para trabajos
 
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapasexposicion sobre los tipos de cortes de rolas para la produccion de chapas
exposicion sobre los tipos de cortes de rolas para la produccion de chapas
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
 
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptxS09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
S09 PBM-HEMORRAGIAS 2021-I Grabada 1.pptx
 
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptxDIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
DIAPOSITIVA DE LA NORMA ISO 22000 EXPOSICI�N.pptx
 
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptxEquipo 4. Mezclado de Polímeros quimica de polimeros.pptx
Equipo 4. Mezclado de Polímeros quimica de polimeros.pptx
 
Dosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizadaDosificacion de hormigon NCH 170 actualizada
Dosificacion de hormigon NCH 170 actualizada
 
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptxPRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
PRACTICA 2 EDAFOLOGÍA TEXTURA DEL SUELO.pptx
 
aplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdfaplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdf
 
Infografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdfInfografia de operaciones basicas de la construccion.pdf
Infografia de operaciones basicas de la construccion.pdf
 

Sesion 4

  • 1. Sesión 3 Programación Estructurada en ANSI C Rafael Menéndez de Llano Rozas DEPARTAMENTO DE INFORMÁTICA Y ELECTRÓNICA Este material se publica bajo licencia: Creative Commons BY-NC-SA 4.0
  • 2. Índice 1. Introducción. 1. Elementos lexicográficos y estructura. 1. Datos escalares, expresiones y entrada/salida básica. 2. Selección. 2. Iteración. 3. Funciones, punteros y estructuración. 4. Datos estructurados. 5. Otros aspectos. Universidad de Cantabria. Grado de Informática. RMЯ 58
  • 3. 3. Funciones: definición  La programación estructurada se basa en usar solamente sentencias secuenciales (de asignación o E/S), condicionales e iterativas.  Además ese código debe ser dividido en subrutinas construidas con ese principio. En C (ANSI C) estas subrutinas se llaman funciones.  Tres partes importantes: 1. La definición. La función puede tomar una serie de argumentos y devolver un dato (por defecto el tipo es int, pero siempre está bien ponerlo): tipo_ a_devolver nombre_funcion (declaración de argumentos, …) { declaración de variables locales; Sentencias; return(); /* el valor devuelto opcionalmente */ } Universidad de Cantabria. Grado de Informática. RMЯ 59
  • 4. 3. Funciones: uso 2. La declaración. Siempre es conveniente declarar las funciones que se van a usar (llamar) en otra función. Si la definición se hace después además es obligatorio. Recomendación: USA SIEMPRE PROTOTIPOS. La declaración de la función se hace con prototipos de función que son casi la primera línea de la función: tipo_funcion nombre_funcion (tipos de argumentos); 3. El uso. Una vez declarada, se puede llamar asignando el valor que devuelve (a través del return) a una variable del mismo tipo (salvo tipo void): variable = nombre_funcion (argumentos, …); Universidad de Cantabria. Grado de Informática. RMЯ 60
  • 5. 3. Funciones: uso #include <stdio.h> /* definicion de cabecera */ int main () { void asteriscos(void); /* declaracion */ asteriscos (); /* llamada */ printf("Aqui pongo un nombren"); asteriscos (); /* llamada */ return(0); } void asteriscos (void) { /* cuerpo */ int cont; // variable local for (cont = 1; cont < 40; cont ++) putchar('*'); putchar('n'); } Universidad de Cantabria. Grado de Informática. RMЯ 61 Se pueden cambiar de orden
  • 6. 3. Funciones: peculiaridades  Se pueden crear prototipos de tres maneras:  Sólo lo que devuelve, ejemplo: float funcion ();  Con tipos de argumentos, ejemplo: float funcion (int , float);  Hasta con nombres, ejemplo: float función (int i, float f);  Si no se devuelve o no se le pasa nada es void.  El orden de las funciones en C no está definido pero se suele poner la función main al principio. Eso nos obliga a usar prototipos.  Pueden ser llamadas desde cualquier lugar.  La función main no se llama (pero nada lo impide).  No se pueden anidar.  Una función se puede llamar a sí misma: recursión. Universidad de Cantabria. Grado de Informática. RMЯ 62
  • 7. Ejercicio 14: Funciones  Bájate los programas 17.c, 18.c, 19.c y 20.c guárdalos en tu directorio. 1. Ábrelos con un editor, examínalos y comprende las funciones y su uso. 2. Abre el 17 y comenta el prototipo ¿qué pasa? 3. Edita el programa, pasa la función asteriscos antes de main. ¿qué pasa? 4. Comprueba realmente hasta que argumento puedes llegar, dependiendo del tamaño del dato long en 18.c 5. Entiende la diferencia entre un programa iterativo y uno recursivo. 6. Observa que el programa 20 no tiene fin. Universidad de Cantabria. Grado de Informática. RMЯ 63
  • 8. 3. Funciones: Argumentos y punteros  Los argumentos a una función se pueden pasar de varias formas:  Por valor: En la función se copia el valor actual (copia parámetro actual al formal) del argumento y los cambios no tienen repercusión fuera de la función.  Constante: Con la palabra reservada const indicamos explícitamente que no se debe cambiar.  Por referencia: Se quiere que la función cambie el argumento con que se la ha llamado.  Para ello en C se utiliza un tipo de dato que contiene direcciones y se llama puntero.  Existen tantos tipos de puntero como tipos de variables.  Para declararlos se utiliza “*”: int *entero; float *real; int variable; Universidad de Cantabria. Grado de Informática. RMЯ 64
  • 9. 3. Punteros Universidad de Cantabria. Grado de Informática. RMЯ 65  Para trabajar con punteros existen dos operadores unarios:  Dirección: &.  Indirección: *.  Además los operadores asignación, suma y resta también se pueden usar (avanzarán o retrocederán posiciones en memoria de acuerdo al tipo de datos apuntado). var_entera = 23; /* almacenado en $5000 */ pun_entero = &var_entera; /* almacenado en $5004 */ var_entera = *pun_entero; /* equivalente a la primera */
  • 10. 3. Funciones: Paso por referencia  Ejemplo de paso por referencia: void intercambia(int *u, int *v) { int temp; /* lo apuntado por u se pone en temp */ temp = *u; /* lo apuntado por v se pone en lo apuntado por u */ *u = *v; /* el valor de temp se pone en la dirección v */ *v = temp; }  Dos cosas muy importantes a tener en cuenta con los punteros: 1. Siempre se usan inicializados: 1. Con la dirección de una variable. 2. Con un array. 3. De forma dinámica (malloc y calloc) (equivalente a new). 2. Con suficiente espacio. Universidad de Cantabria. Grado de Informática. RMЯ 66
  • 11. Ejercicio 15: Funciones  Bájate los programas 21.c y guárdalo en tu directorio. 1. Ábrelo con un editor, examínalo y comprende las funciones y su uso. 2. Observa que el programa 21 no tiene main. 3. Crea uno para que intercambia dos valores de enteros. 4. Cambia la función para que uno de los argumentos sea constante, compila e indica lo que pasa.  Usando la palabra reservada const Universidad de Cantabria. Grado de Informática. RMЯ 67
  • 12. 3. Variables: ámbito (scope)  Existen varios tipos de ámbito de variables:  Globales: Se declaran fuera de las funciones y se conocen después de declararlas.  Normalmente es una mala práctica de programación hacer uso intenso de variables globales, ya que siempre pueden ser cambiadas inadvertidamente desde cualquier función.  Una forma aceptable de hacerlo es declarándolas de tipo extern en las funciones, con lo cual se explicita que es global. extern int varible_global; //por ejemplo una entero  Locales: Se declaran dentro de las funciones y sólo se conocen allí. Incluido el main. Pueden ocultar a las globales.  Locales a un bloque. Sólo se conocerá en el bloque ( { } ) donde se han declarado.  Además se pueden hacer constantes con const: const float pi = 3.1416; Universidad de Cantabria. Grado de Informática. RMЯ 68
  • 13. 3. Variables: Almacenamiento  Al ser el C de medio nivel, el compilador puede intentar controlar el modo de almacenamiento de las variables:  Automáticas: “auto”. Por defecto. No se suele poner.  Externas: “extern”. Es una forma explícita de declarar que se va a usar una variable global. ¡ No se crea !  Estáticas: “static”. Permanecen durante toda la ejecución del programa.  Cuando una variable es local, es almacenada en el stack y cuando esa función termina desaparece.  Con static se logra que una variable permanezca durante toda la ejecución del programa.  Registros: “register”. Se “intentarán” localizar en algún registro de la CPU. Universidad de Cantabria. Grado de Informática. RMЯ 69
  • 14. Ejercicio 16: Variables  Bájate los programas 22.c y guárdalo en tu directorio. 1. Ábrelos con un editor, examínalo y comprende las variables, su ámbito y su almacenamiento. 2. Haz una predicción de los valores que aparecerán en pantalla. 3. Ejecútalo y comprueba que lo has entendido. Universidad de Cantabria. Grado de Informática. RMЯ 70
  • 15. 3. Variables void funcion (int arg1, int arg2) // los argumentos con otros nombres { auto char local1; /* no seria necesario el auto */ int local2; /* variable local a funcion */ int global = 54; // oculta la global local1 = '@'; local2 = 32; printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global); { //bloque int local2; /* locales al nuevo ambito */ register int local3; local2 = 15; /* nos referimos a la interior */ local3 = 4; printf("ttdesde muy dentro valores de 1 2 y 3: %c %d %dn", local1, local2, local3); } printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global); /* local2 valdra 32 y no 15, ya que es la de fuera */ /* Esto no se puede hacer, ya que aqui local3 no existe y daria errores de compilacion*/ // local3 = 232; arg1 = 345; arg2 = 35; // no cambian fuera printf("tdesde dentro valores de uno otro global: %d %d %dn", arg1, arg2, global); } Universidad de Cantabria. Grado de Informática. RMЯ 71
  • 16. 3. Funciones: main  En C existen muchas funciones ya realizadas que se conocen como la librería C estándar. Mira apuntes.  En C es posible definir funciones con un tipo variable de argumentos. Ej.: printf.  A la función main se le pueden pasar tres argumentos que hasta ahora no hemos usado:  int argc; // entero con el numero de argumentos pasados  char ** argv; // array con nombres de los argumentos  Incluso existe un tercero que nos da las opciones de la shell dentro del programa:  char ** opciones; Observa el ejemplo entorno.c Universidad de Cantabria. Grado de Informática. RMЯ 72