Informática I: UT3 y UT4

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014. 1/22. 1. ... El Lenguaje de Programación C, entonces, se convierte en un medio de ...
215KB Größe 15 Downloads 21 vistas
UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 1.- Introducción al Lenguaje de Programación “ C ” La manera habitual de aprender a programar en cualquier Lenguaje de Programación, a los que el C o C++ , no están exentos es la de formular una Metodología de Trabajo , como se ha visto en puntos anteriores , que permita efectuar el Análisis del Problema dado , Elaborar Algoritmos con Diagramas de Flujos y/o Seudocódigo y por último Codificar el Algoritmo para su prueba y validación en una Computadora. La Codificación es el pasaje de toda la lógica desarrollada en los respectivos algoritmos a un Lenguaje de Programación reconocido por el Computador y por el Programador. Para esto es indispensable conocer las Reglas de Escritura o Sintáxis de un Lenguaje de Programación que servirán para todas las aplicaciones y desarrollos, desde programas simples a programas de cualquier grado de complejidad. El Lenguaje de Programación C, entonces, se convierte en un medio de comunicación común entre el usuario programador y la Computadora a los fines que la misma haga lo que el usuario necesita en relación con la solución de un problema planteado. Conocidas las Estructuras Básicas como las Instrucciones Secuenciales, Selectivas o Condicionales y las Repetitivas vistas en Unidad Temática 4 así como los conceptos de Acumulador, Contador, Asignación y Bandera o Palabra Clave, corresponde por una cuestión de practicidad analizar los problemas resueltos con Diagrama de Flujo y Seudocódigo desde el punto de vista de la Lógica a la que deben responder , y traducirlos o pasarlos al Lenguaje C para que la Computadora efectúe el procesamiento según las instrucciones que forman parte de un programa y presente los resultados de acuerdo a lo requerido en cada caso particular. Esto quiere decir que usaremos los mismos Ejemplos para introducirnos en forma gradual en el conocimiento del Lenguaje de Programación C o C++. La mejor manera de aprender a programar en cualquier lenguaje es editar, compilar, linkear, corregir y ejecutar pequeños programas descriptivos. El primer ejemplo básico es el siguiente: - Realizar un programa en C que imprima por pantalla la leyenda “PRIMER PROGRAMA EN C “. Programa N° 1: # include main ( ) { /* Primer Programa escrito en C */ printf ( “ PRIMER PROGRAMA EN C \n “ ) ; return 0; } EXPLICACIÓN: Lo que hace este programa elemental es imprimir o escribir por pantalla de la Computadora el texto “ PRIMER PROGRAMA EN C “.

1/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 La forma general de un programa en C es: # include main ( ) Función main ( ) o Función Principal { Cuerpo del programa o programa con las instrucciones a ejecutar. Siempre está entre dos llaves que significan Inicio y Fin de Ejecución del Programa respectivamente. } El significado de cada parte es el siguiente:

# include < stdio.h>

 # include

Corresponde al Preprocesador del C++ y consiste en un procesador de Texto que realiza inclusión de Ficheros llamados Archivos de Cabecera ( Header ) , de ahí la extensión . h . Con esta directiva se ponen a nuestra disposición las funciones existentes en el Archivo de Cabecera identificado con el nombre stdio.h. # include es una directiva de inclusión de un archivo de cabecera ( header) ú orden de Leer un Archivo de Texto especificado en el nombre que sigue a la misma. , en este caso , y reemplazar esta línea por el contenido de dicho archivo en la medida que se necesita durante la ejecución del programa. El ejemplo tiene la función printf, la cual es posible utilizar porque previamente se ha incluido dentro del programa el contenido del Archivo de Cabecera de entrada-salida (input – output) < stdio.h >. De idéntica manera se procede con cualquier otra función estándar de biblioteca o funciones creadas por el usuario e incorporadas al archivo de cabecera que corresponda según el tema. Algunos ejemplos de Archivos de Cabecera son: - #include  incluye los prototipos de las funciones estándar de Input - Output como scanf, printf, etc. - # include  incluye las funciones clrscr ( ), getch ( ), etc. - # include < math.h >  incluye las funciones de matemáticas sqrt ( ), sin ( ), tan ( ), etc. Existen otros archivos de cabecera como ctype.h, graphics.h, etc., que se utilizarán progresivamente. La totalidad de dichos archivos se encuentran disponibles en el Manual de C++ y en la ayuda Help, de manera que se pueden consultar las funciones disponibles por cada versión o fabricante de C++. La directiva # include tiene algunas características importantes: - No es una sentencia de programa sino una orden que se copie literalmente un archivo de texto ubicado en el directorio INCLUDE, en el lugar en que ella está ubicada, razón por la que no es necesario terminarla con ; como es exigible por el C para sus instrucciones. - Cuando se pone < > se realiza la búsqueda en el directorio estándar donde se encuentra el fichero INCLUDE .Caso contrario si se pone “stdio.h”, por ejemplo ,el compilador lo buscará en el directorio activo en el momento de compilar. 2/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 - La existencia de estos archivos es evitar la repetición de la escritura de largas definiciones en cada programa.

main ( ) o Función Principal Indica donde comienza el programa, cuyo núcleo es un conjunto de sentencias que están delimitadas o encerradas por llaves { } llamada “ Cuerpo Principal del Programa “. Entre estas dos llaves , {  llave abierta significa Inicio de Ejecución del Programa , y }  llave cerrada Fin de Ejecución del Programa , se encuentran todas las instrucciones necesarias para solucionar un problema planteado. Para el caso del ejemplo main ( ) es la encargada de llamar a la función de biblioteca printf ( ) y en general es la que posibilita la ejecución y compilación del programa. Su ausencia da un inmediato mensaje de error evitando la compilación y ejecución del programa, por lo tanto impide continuar trabajando con el programa hasta tanto se la coloque. main ( ) puede llamar a dos clases de funciones : las funciones propias o creadas por el usuario y las funciones residentes en la Biblioteca estándar escritas para el C por el fabricante de Software. Ejecutada la instrucción printf ( “.......\n”) ; la finalización con ; indica al compilador el fin de la misma. El símbolo \n indica que después de imprimir el mensaje se pase a la línea siguiente o se transfiera el control de la ejecución del programa a la línea siguiente. La segunda sentencia del Ejemplo es return 0 ; termina el programa y devuelve un Valor 0 (cero) al argumento de main ( ) para indicar a quién la invoca, main ( ) , que ha finalizado la ejecución del programa. Con el transcurrir de los ejemplos y uso de otros tipos de instrucciones se irá completando la forma de escribir un programa en C.

Comentarios Las inclusiones de comentarios son útiles para aclarar lo que realiza el programa o partes de él. No son Ejecutables y No Intervienen en la lógica de actuación del programa por lo que no influyen en el funcionamiento del mismo. Se los indica de la forma / * ....*/ y para el caso del ejemplo es : /* Primer Programa escrito en C */

3/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 Programa N° 2: # include main ( ) { /* Segundo Programa escrito en C */ printf ( “ Buenas\ “ ) ; printf ( “ Noches\ “ ) ; printf ( “ \n “ ) ; return 0; }

Algunas Funciones incorporadas por el C:

Probar con: \+ para tabular \b retroceso \” comillas \\ diagonal invertida

printf - escribe o imprime datos por pantalla scanf - introduce datos por teclado getchar - lee un carácter putchar - visualiza o escribe un caracter cada vez que se invoca n power (m,n) - m entero m elevado a la potencia de n ----------------

4/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

2.- Tipos de Datos En el Lenguaje de Programación C existen distintos tipos de datos cada uno de los cuales se pueden representar en forma diferente en la memoria del computador. En los Tipos de Datos Básicos el requerimiento de memoria determina el Rango de Valores que se permiten para cada tipo, lo cual varía de un compilador de C a otro o con las versiones del C. Una clasificación general de Datos es la siguiente: Enteros Numéricos

Decimales Reales

Exponenciales: +/- x.xxxx E

E+/- n

+/- n

Con 10-38 < n > 1038

Ejemplo: 15,67.103   15.67 E+/-3 Mantiza Base

Datos Básicos

Exponente

SI Lógicos NO Alfabéticos: ( A….Z) No Numéricos

Carácter (char)

Numéricos: (0….9) Especiales: (+, - ,* ,= ,> ,< , %, etc.)

Cadena de caracteres – conjunto de caracteres encerrados entre doble comillas: “- - - - - - - - - -“

3.- Identificadores Los identificadores son nombres que se dan a diversos elementos que intervienen en un programa como constantes, variables, funciones y arrays ( arreglos). Están formados por letras y dígitos, en cualquier orden excepto el primer carácter que debe ser una letra. Se pueden utilizar mayúsculas y minúsculas no acentuadas para la mayoría de los compiladores, recordando que en Informática una letra mayúscula no es lo mismo que una minúscula. La longitud de los identificadores no está limitada, pero el compilador acepta los primeros 31 caracteres. Es costumbre utilizar minúsculas para la mayoría de los identificadores a excepción de Constantes Simbólicas que son mayúsculas.

5/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

4.- Palabras Claves Son palabras reservadas que tienen un significado preestablecido en C y en cualquier lenguaje de programación, debido a lo cual no se pueden utilizar como Identificadores dentro de un programa. Ejemplo: break, case, char, default, double, if, else, while, continue, do, float, for, goto, int, long, register, static, struct, etc.

5.- Constantes Se designa con este nombre a un " Valor " numérico o string (alfa numérico) cualquiera y son iguales a los datos ya definidos. Se caracterizan porque no cambian durante la ejecución del programa. Ejemplo: para el cálculo del área de un círculo s = PI x r^2, el valor de PI = 3,14159 es fijo e inalterable cualquiera sea el valor del radio r. En C se pueden colocar los valores directamente o representarlos mediante identificadores que son nombres que se asignan a cada constante. Para este último caso estamos en presencia de constantes simbólicas. Una constante simbólica es una cadena de caracteres especiales y el nombre se escribe con mayúsculas. La sintaxis de una constante simbólica es:

# define

NOMBRE

Valor

7.- Operadores Son signos especiales que indican determinadas operaciones a realizar con las variables y constantes. Los operadores pueden ser de tipo aritméticos, lógicos, relacionales, de incremento y decremento, asignación, como se indica en las Tablas siguientes.

8.- Variables Del ejemplo anterior, Punto 5), surge que PI es constante y el radio r puede tener diferentes valores. A elementos con las características del radio r se conoce como variable. Una Variable es un objeto o dato cuyos valores pueden cambiar durante la ejecución de un programa. Las variables pueden ser numéricas, lógicas y alfanuméricas. Para el caso del ejemplo " Calcular el área de un círculo " la variable es r, es del tipo numérica y puede tener distintos valores. Área  s = PI x r^2 = 3,14159 x r x r Un programa en C que calcula el área de un círculo para un determinado valor de r se muestra a continuación:

6/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 Programa N° 3: # include < stdio.h > # include main ()

/* programa que calcula el área de un círculo */ /* biblioteca que permte usar clrscr = borrar pantalla y */ /* getch () =.... */

float r , área ; /* se declaran como float a las variables r y área */ clrscr ( ); printf ( " Introducir valor de radio =\n "); scanf ( " % f " , & r ); /* ingreso de valores de r con punto decimal por teclado */ área = 3.14159 * r * r ; printf (" Area = %f \n ",area); printf ( " Fin del programa "); getch (); return 0 ;

Este programa simple se puede generalizar para varios valores de r y es donde se nota la potencialidad o ventaja de realizar este cálculo en C. Como nuevo problema se puede considerar " calcular el área de un círculo para 100 radios distintos". Como existe una multiplicación de un valor fijo o constante como es PI se puede poner de la forma Indicada como Constante Simbólica y el programa sería: Programa N° 4 : # include < stdio.h > /* programa que calcula el área de un círculo */ # include # define PI 3.14159 main()  float r , área; printf ( " Introducir valor de radio =\n "); scanf ( " % f " , & r ); /* ingreso de valores de r con punto decimal por teclado */ área = PI * r * r ; / * cambio de 3.14159 por PI */ printf (" Area = %f \n ",area); printf ( " Fin del programa "); getch (); return 0 ;  Este Programa N° 4 sirve de ejemplo ilustrativo de Constantes Simbólicas.

7/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 Recordar que se deben declarar todas las variables antes que aparezcan sentencias ejecutables que hagan uso de ellas.

9.- Expresiones Es un Símbolo o grupos de Símbolos que un Lenguaje de Programación puede evaluar, y pueden ser combinaciones de constantes, variables, funciones, arrays, símbolos de operaciones, paréntesis, clasificados de la forma siguiente:

10.- Tablas de Variables, Constantes y Operadores TABLA 1: CANTIDAD DE CARACTERES TIPO

BYTES VALOR MINIMO

VALOR MAXIMO (8-1)

Signed char

1

-128

127

[2

Unsigned char

1

0

255

[2 ]

Signed short int Unsigned short int

2 2

-32.768 0

+32.767 +65.535

Signed int Unsigned int Signed long int Unsigned long int

2 2 4 4

-32.768 0

4

3.4E

Double ( 64 bits)

8

1.7E-308

Long Double (80 bits)

+32.767

(16-1)

[2 ] 16 [2 ] [2

10 3.4E-4932

3.4E

+38

1.7E+308 3.4E+4932

8/22

5

(16-1)

5

]

16

5

[2 ]

-2.147.483.648 +2.147.483.647 0 +4.294.967.295

Float ( 32 bits)

1 carácter de ASCII (American Standard Code for Interchange Information) 1 carácter. El código ASCII da equivalencia entre cada carácter y el el número correspondiente 5

]

8

+65.535

-38

CIFRAS/ CANT. CARACTERES

[2

(32-1)

]

10

32

[2 ] 11 espacios: 7 enteros, 1 punto,3 decimales hasta un máximo de 6. 17 espacios: 10 enteros, 1 punto,6 decimales.

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 TABLA 2: OPERADORES ARITMETICOS ( BINARIOS) SIMBOLO

DESCRIPCION

EJEMPLO

+ * / % -

Suma Resta Multiplicación División Módulo ( Resto) CAMBIO DE SIGNO

ORDEN DE EVALUACION

a+b a–b a*b a/b a%b -a

3 3 2 2 2 2

TABLA 3: OPERADORES RELACIONALES SIMBOLO < > = == !=

DESCRIPCION Menor que Mayor que Menor o igual que Mayor o igual que Igual que Distinto que

EJEMPLO

ORDEN DE EVALUACION

(a < b) (a > b) (a = b) (a == b) (a != b)

5 5 5 5 6 6

TABLA 4: OPERADORES LOGICOS SIMBOLO && || !

DESCRIPCION

EJEMPLO

ORDEN DE EVALUACION

Y (AND) (a < b) && (c < d) O (OR) (a > b) || (c < d) NEGACION (NOT) ! (a > b)

10 11 1

TABLA 5: OPERADORES DE INCREMENTO Y DECREMENTO ( UNARIOS) SIMBOLO

DESCRIPCION

++ --

Incremento Decremento

EJEMPLO ORDEN DE EVALUACION ++i ó i++ --i ó i--

1 1

TABLA 6: OPERADORES DE ASIGNACION SIMBOLO

DESCRIPCION

EJEMPLO

= op= =?:

Igual a Pseudocódigo Asig. Condicional

a=b a += b a = (c > b)?d:e

9/22

ORDEN DE EVALUACION 13 13 12

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 TABLA 7: PRECEDENCIA DE LOS OPERADORES PRECEDENCIA

OPERADORES

ASOCIATIVIDAD

0 () [] Izq. A derecha 1 sizeof(tipo) ! ~ ++ -- signo*& Derecha a izq. 2 */% Izq. A derecha 3 +Izq. A derecha 4 > Izq. A derecha 5 >= Izq. A derecha 6 == != Izq. A derecha 7 & Izq. A derecha 8 ^ Izq. A derecha 9 | Izq. A derecha 10 && Izq. A derecha 11 || Izq. A derecha 12 ?: Derecha a izq. 13 =+=-=*= etc Derecha a izq. Si en una operación hay signos del mismo nivel de precedencia, la operación se realiza de izquierda a derecha. TABLA 8: VALORES DE LOS CODIGOS DE CONTROL DE FORMATO EN C Función

scanf

printf

%hd %ld %lf %Lf

%ld %lf %Lf

Tamaño del valor (modifica el tipo de dato): Especifica entero corto Especifica entero largo Especifica real doble Uso con real para indicar longitud doble Tipo de dato para ser leído o escrito: Carácter simple Entero con signo Real o real de doble precisión con signo en formato exponencial Real o real de doble precisión con signo en formato decimal Octal (letra “O” no 0) Cadena de caracteres Entero decimal sin signo Hexadecimal (%X para letras mayúsculas) Escribe el símbolo de porcentaje Entero decimal de seis dígitos Punto flotante de seis dígitos Punto flotante con dos dígitos tras el punto decimal 10/22

%c %d %e %f %O %s %u %x

%c %d %e %f %O %s %u %x %% %6d %6f %.2f

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 Punto flotante con seis dígitos, dos tras el punto

%6.2f

Ejemplos: Ejemplo 1: If ( c>=’0’ && c< ‘9’);

si c está entre 0 y 9 c es un dígito// determina si c es un dígito

else if ( c == ‘ ‘ || c == ‘\ n’ || c == ‘ \t’); Ejemplo 2: fprintf (stdprn,”--\n”);

evalúa si c es blanco, línea o tabulador

// fprintf (stdprn,”BUENAS NOCHES\n”); salida por impresora

Ejemplo 3: s = s+a c = c+1

s+ = a; c++;

Programa N° 5: # include < stdio.h > # include main ()

/* programa que imprime un carácter */

 char c; c=`A´; printf ( " c es % c\n”,c); printf (" c es % d\n”, c); printf ( " Fin del programa "); getch (); return 0 ; 

11/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

11.- Control de Flujo en Lenguaje de Programación C ++ Las principales Estructuras de algoritmos desarrollados con diagrama de Flujos y Seudocódigo son generales y válidas para cualquier clase de Lenguaje de Programación a utilizar. Sin embargo, como nuestro propósito es el de estudiar el C++, veremos las Estructuras específicas de este lenguaje. Las estructuras básicas del C++ se clasifican en: Simples Secuenciales

If – else Selectivas ó Condicionales

Estructuras en C++ Control

Repetitivas (Ciclos)

Usos de Proposiciones : - break (*) - continue (*) - goto - operador condicional: ? (*)

switch ó switch – case)

Dobles - Triples Múltiples

while for do - while

( (*) Son de uso exclusivo del C

11.1.- Estructuras Condicionales Estas estructuras permiten ejecutar una o varios procedimientos condicionados por el resultado de una Expresión ó el valor de una Variable.

11.2.- if - else La sentencia if - else se utiliza para tomar o expresar decisiones (ó ejecutar acciones) a partir de la evaluación de una condición lógica o aritmética de una expresión determinada. En su forma simple la sentencia if permite la ejecución de una Sentencia solo en el caso que la respuesta a la Condición Lógica sea Verdadera ( SI ) , caso contrario si la Condición Lógica es Falsa (NO), NO SE EJECUTA ninguna Instrucción y se continúa con la ejecución Normal del Programa. La forma más general de una Estructura de Control if - else con inclusión de la Cláusula else es: if Simple if ( expresión ) Sentencia 1 ; ejecuta la Sentencia 1.

si la respuesta a la evaluación de la expresión es SI se

----------------------------------------------------------

si la respuesta es NO se continúa con la ejecución normal del programa, sin generar ninguna acción específica por dicha respuesta. 12/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

if Doble if ( expresión ) proposición 1 ; else proposición 2 ;

si la respuesta a la evaluación de la expresión es positiva o por SI se ejecuta la proposición 1. caso contrario si la respuesta es NO se ejecuta la proposición 2. Cualquiera sea la respuesta se generan acciones.

---------------------------------------

Terminada la evaluación de la expresión por SI o por NO se continúa con la ejecución del programa.

Ejemplo: If ( c>=’0’ && c< ‘9’); -----

si c está entre 0 y 9 c es un dígito// Expresión que determina si c es un dígito

else if ( c == ‘ ‘ || c == ‘\ n’ || c == ‘ \t’); - - - - - - - - - - - - - - - -- - - --------------------

Expresión que evalúa si c es blanco, línea o tabulador

Hay que tener cuidado con la parte else de una estructura condicional puesto que para evitar confusiones o ambiguedades es conveniente hacer lo siguiente: - descendencia - colocar else - colocar { }

 con lo cual le damos claridad.  se evitan confusiones.  en general se recomienda el uso de llaves como práctica de programación puesto que permite identificar las distintas alternativas de ejecución de un if con claridad.

Ejemplos de Sintáxis. Los casos anteriores quedarían de la forma siguiente: if Simple if (expresión ) { Sentencia 1; Sentencia 2; } else Sentencia 3; Sentencia 4; Sentencia 5;

if Doble if ( expresión) { Sentencia 1; Sentencia 2; } { Sentencia 3; Sentencia 4; } Sentencia 5;

La proposición else queda siempre asociada al if más cercano o inmediatamente arriba de él. 13/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

If multiple if ( expresión 1) Sentencia 1; else if (expresión 2) Sentencia 2; else if ( expresión 3) Sentencia 3; else Sentencia 4;

Recordar: si hay más de una instrucción a ejecutar por cada alternativa , se debe poner { } , a pesar que el último else es optativo

Programa 6: Realizar un programa en C que seleccione números positivos (+) y negativos (-) # include < stdio.h > /* programa que selecciona números (+) y (-) */ # include main ()  int num; clrscr (); printf ( “ Selección de Números + y - \n”); printf ( “ Ingresar Números\n”); if ( num >= 0) printf ( “ El Número es Positivo: %d”, num); else printf ( “ El Número es Negativo:%d”, num); getch (); return 0 ;  Programa 7: Hacer un programa en C que indique la lógica de actuación de un sistema de alarmas de temperatura ambiente, produciendo la actuación automática de un electroventilador, generar reportes en casos críticos y guardar los eventos en una Base de Datos (BD). # include < stdio.h > # include main ()  int temp; clrscr (); printf ( “ LOGICA DE ACTUACIÓN DE ALARMAS \n”); printf ( “ La Temperatura medida es :” ); scanf ( “ %d”, & temp); if ( temp >= 25 && temp < 45)  14/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 printf ( “ Temperatura Normal\n”); printf ( “ Guardar en BD Estado Normal”);  else if ( temp < 25)  printf ( “ Alarma de Temperatura Mínima\n”); printf ( “ Comunicar ATMiníma a Centro de Control\n”); printf ( “ Guardar ATMínima en BD\n”);  else if ( temp > 45)  printf ( “ Alarma de Temperatura Máxima\n”); printf ( “Hacer actuar Electroventilador\n”); printf ( “ Comunicar ATMáxima a Centro de Control\n”); printf ( “ Guardar ATMáxima en BD\n”);  printf ( “ Fin de Ejecución del Programa\n”); getch (); return 0 ;  Que sucede si se utiliza void main (void) en lugar de main () y suprime return 0 ?

11.3.- switch ( ó switch – case) Es habitual necesitar comprobar o comparar una variable o una expresión con un conjunto de valores o constantes. Si hay una constante que sea igual a la variable, entonces ejecuta el procedimiento asociado con esa constante. Esto se puede realizar con instrucciones if – else anidadas o por razones de simplicidad utilizar una instrucción que está disponible para estas aplicaciones como es la switch. Switch es una proposición con decisión múltiple que prueba si una expresión coincide o es igual con una de un conjunto de valores constantes anteriores, indicando en etiqueta case y traslada el control adecuadamente en función del valor. La sintáxis es:

switch ( expresión) sentencia

Switch (expresión) el valor de la expresión puede ser entero o char { case exp. constante 1: proposición 1; break; la proposición 1 o 2 pueden ser una o varias case exp.constante 2: proposición 2; break; proposiciones default: proposicones; } Para evaluar el valor de la proposición se procede la siguiente manera: 15/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

Si la expresión = expresión constante 1, se ejecutan las proposiciones correspondientes o proposición 1 y con break se sale inmediatamente del switch. Por lo tanto evita que la ejecución del programa caiga en la siguiente “case”. Si expresión = expresión constante 2, se procede de manera idéntica al caso anterior, pero ejecutando la proposición 2 o proposiciones correspondientes a esta línea de programa. Si la expresión tiene un valor que no existe dentro de los valores establecidos en las expresiones en las expresiones constantes se ejecutan por default las proposiciones que correspondan a esta línea de programa. Por lo tanto, se ejecuta si ninguna de las otras se satisface o no hay ninguna correspondencia con el switch. [Las cláusulas break y default pueden ocurrir en cualquier orden] break Esta instrucción produce una salida inmediata del switch o de un bucle for, do – while o while, al margen de la condición que lo pueda producir. Un uso común es cuando se produce un error durante la ejecución de un programa o de un conjunto de instrucciones para salir de esa situación. En consecuencia, es necesario utilizar la instrucción de salida break para que el compilador “abandone” la estructura switch. Si se omite, el C++ no lo reporta como error, pero el programa, una vez ejecutadas las instrucciones asociadas con una constante, continuaría con las instrucciones asociadas con la siguiente constante en la lista. default Esta instrucción es opcional y se utiliza para establecer un procedimiento por defecto, para cuando la variable no coincida con ninguna de las constantes o valores. En síntesis la sentencia switch se puede concebir como una alternativa al uso de sentencias if – else anidades, aunque solo puede sustituir a sentencias if – else que comprueban igualdades. Tal es el caso de Menú. Programa 8: Elaborar un Menú principal de un programa que realiza el cálculo de circuitos resistivos elementales: serie, paralelo y mixto. #include #include #include void main ( void) { char opcion; clrscr ();

ctype es u archivo de cabecear que tiene funciones como toupper , tolower, etc.

16/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 printf ( “ Opciones Serie, Paralelo, Mixto, Fin del Programa\n”); printf ( “Ingresar la inicial elegida\n”); opción = toupper ( getch ()); toupper, convierte un carácter de minúscula a mayúscula printf (“\n”); para cualquier carácter seleccionado desde el teclado. Es como si fuera un scanf. switch (opción) . { case ‘S’: printf ( “ Circuito Serie\n”); break; case ‘P’: printf ( “ Circuito Paralelo\n”);break; case ‘M’: printf ( “ Circuito Mixto\n”);break; case ‘F’: printf ( “ Fin del Programa\n”);break; default: printf ( “” === CARÁCTER NO VALIDO ===\n”); } getch (); }

11.4.- Estructuras Repetitivas ( Ciclos de Iteración) También llamadas estructuras iterativas o bucles. Se ejecuta varias veces un grupo de instrucciones y para cada iteración, evalúa el valor de una expresión para decidir si repite o no el procedimiento. Por lo tanto, controlan y hacen ejecutar una tarea tantas veces como el programa lo requiera. Posee un bloque de decisión que controla el número de veces que debe ejecutarse un ciclo de trabajo o bucle, razón por la que cumplido el mismo se produce el llamado corte de control. Hay tres estructuras repetitivas, While, for, y do – While, cuyas características particulares veremos a continuación.

While – Mientras - Hacer En este bucle se verifica una condición al comienzo de la ejecución de un programa y si se cumple, se ejecuta un procedimiento. Terminado un procedimiento, se vuelve y se confirma el cumplimiento de la condición. Dicho bucle se repite hasta que la condición sea FALSA o bien, mientras la condición sea VERDADERA. Este bucle se considera de verificación preliminar porque la condición se evalúa antes de entrar a ejecutar el procedimiento o algoritmo principal. Enfocado de otra manera, la evaluación de la condición lógica va al comienzo del ciclo. En la sintaxis siguiente, si el resultado de la evaluación lógica es Positivo se realizan acciones o se ejecutan las instrucciones del Módulo A. Mientras e cumpla con la condición se continúa ejecutando dicho Módulo. El Módulo A puede tener una o un conjunto de instrucciones. La ejecución del Módulo A produce la modificación de la condición lógica. Cuando la misma se modifica, se devuelve el control del programa y se continúa con la ejecución normal de mismo. Si en la primera evaluación lógica de la condición, el resultado es Negativo, NO se ejecutan acciones, continuando con la ejecución normal del programa. 17/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 La sintaxis de la instrucción en seudocódigo es: MIENTRAS

( Condición) HACER Modulo A

Modulo B

una o varias instrucciones corresponde a Ejecución Normal del Programa

La sintaxis de la instrucción en C es: While ( condición – expresión lógica)

Ejecución de sentencias o Módulo A

Programa 9: Realizar un programa en C que suma Números positivos (+). # include < stdio.h > # include main ()

/* programa con aplicación de while */ /* Programa que suma números positivos */

int a, s = 0, cant = 0; clrscr(); printf ( "Ingresar valores de a:\n”); scanf ( “ %d”, & a); while ( a > = 0) se detiene cuando se ingresa un Número negativo (-) s+ = a; s=s+a cant++; cant = cant +1 printf ( "Ingresar valores de a:\n”); scanf ( “ %d”, & a); printf (" La suma S es = %3d\n”, s); printsf ( “ La cantidad de números sumados es:%3d”, cant); printf ( " Fin del programa "); getch (); return 0 ;

18/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

Do - while En este bucle se realiza un procedimiento o se ejecuta una instrucción primero y después se verifica la condición lógica para repetir o No el procedimiento. Ejecutado el ciclo una vez, se evalúa la condición lógica. Si dicha condición es verdadera se itera nuevamente. Este bucle se repite hasta que la condición sea Falsa o mientras la condición sea Verdadera. Es idéntico a REPEAT / UNTIL o Repetir ….. hasta que ( ). Verifica o prueba la condición lógica al Final del Ciclo, con lo cual realiza un ciclo de más que el while, porque se ejecuta por lo menos una vez .Por esta razón es menos utilizado. Su uso debe hacerse con cuidado. Sintáxis: do

(proposiciones )

While ( expresión lógica) Programa 10 Para ver la relación con while se realiza el mismo programa que es sumar números positivos (+) con do while # include < stdio.h > # include main ()

/* programa con aplicación de do while */ /* Programa que suma números positivos */

int num, sum = 0; clrscr(); printf (“Sumar números positivos\n”); do printf ( "Ingresar valores de num:\n”); scanf ( “ %d”, & num); sum+ = num;

sum = sum + num

while ( num > = 0); printf (" La suma S es = %d\n”, sum); printf ( “\n”); printf ( “ Fin del Programa\n”); 19/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 getch (); return 0 ;

La dificultad del Programa 10, dado como ejemplo es que realiza siempre un ciclo de más, porque la condición se evalúa a final del ciclo. Si ingresamos un número negativo al comienzo de la ejecución, el programa lo toma al número (-) , los lo suma y recién evalúa su condición de negativo para detener el programa. Este programa sería mas apropiado para sumar números positivos (+) y negativos (-) y detenerlo cuando se ingresa un cero (0) Programa 11 Un programa más ilustrativo es Sumar números y detener el programa cuando la suma sea # include void main (void)

/* Aplicación de do while */ /* Programa que suma números hasta que la suma sea < 90 */

int num, sum = 0; clrscr(); printf ( “Sumar números hasta que la suma sea menor que 90\n”); do scanf ( “ %d”, & num); sum+ = num;

sum = sum + num

while ( sum < 90); printf (" La suma S es = %d\n”, sum); printf ( “\n”); printf ( “ Fin del Programa\n”); getch ();

20/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014

for Es una forma generalizada de while, tiene tres secciones separadas por ; La sintaxis es: for ( exp.1; exp.2;exp.3)

proposición 1; proposición 2;

Hay que tener cuidado con los anidamientos en for

Ejemplo: for ( i = 0; i < n; i++)

1era. Sección Inicialización

2da. Sección Condiciona o prueba, que controla el ciclo for. Si la condición es Verdadera el cuerpo del ciclo for se ejecuta.

3era. Sección Determina el incremento o avance por pasos de i = i + 1 ó i++. Se ejecuta y se repite la ejecución del ciclo.

Un procedimiento repetitivo puede implementarse usando cualquiera de las estructuras vistas while, do – while, pero es común utilizar la estructura for cuando se conoce de antemano la cantidad de veces a repetir y no existe una condición de salida diferente a la de haber cumplido la cantidad de veces de ejecución. Programa 12 Programa que suma 3 números y realiza el promedio . # include < stdio.h > # include void main (void)

/* programa con aplicación de for */

int num, s = 0, cont = 0 ; clrscr(); printf ( “ Efectuar la Suma y el Promedio de 3 números\n”); for ( cont =1; cont < 3; cont ++) printf ( Ingresar un Número=\n”); 21/22

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN

Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 – Año 2014 scanf ( “ %d”, & num); s+ = num;

s = s + num

printf (" La suma S es = %d\n”, s); printf ( “Promedio = %d”, s/cont); printf ( “ Fin del Programa\n”); getch ();

12.- Bibliografía Recomendada - " Fundamentos de Programación: Algoritmo y Estructura de Datos". México. Editorial McGraw – Hill. Luis Goyanes Aguilar: - " El Lenguaje de Programación C ".México. Editorial Prentice – Hall Hispanoamericana. Brian W. Kernighan - Dennis M. Ritchie: - " Programación en C ". México. Serie Schaum – McGraw – Hill. Byron S. Gottfried - " Manual de Borland C++ “.México. Editorial McGraw – Hill. Chris H. Pappas / William H. Murray III. -

C- Guía de Autoenseñanza. Serie McGraw – Hill de Informática. Herbert Schildt.

Mg.Ing. Juan C. Colombo 13/04/14

22/22