MAITRISE EN SISTEMAS DE POTENCIA Y CONTROL ELECTRONICO − INTRODUCCIÓN. 1.1.− HISTORIA.

Anuncio
MAITRISE EN SISTEMAS DE POTENCIA Y CONTROL ELECTRONICO
− INTRODUCCIÓN.
1.1.− HISTORIA.
• Creado por Denis Ritchie, de los laboratorios Bell, en 1972.
• Muy ligado con el sistema UNIX.
• Se deriva del lenguaje B de Thompson.
• Se trata de un lenguaje de Medio Nivel. Está entre los de Bajo Nivel (L. Ensambladores) y los de Alto
Nivel (L. Pascal, L. Basic...)
• El C se ha utilizado para desarrollar programas como:
− Sistemas Operativos.
− Compiladores
− Ensambladores.
− Editores de texto.
− Programas Comunicaciones
− Bases de datos.
− Utilidades...
Virtudes del C:
− Es PORTATIL
− Es FLEXIBLE.
− Es POTENTE.
• C dispone de pocos tipos de datos en comparación con otros lenguajes (Ej: Pascal)
• En ejecución no hace chequeo de errores, es responsabilidad del programador.
• C permite la manipulación directa de bits, bytes, palabras y punteros.
• Sólo tiene 28 palabras clave.
1.2.− COMPILADORES, ENSAMBLADORES E INTÉRPRETES.
Alto Nivel.
Medio Nivel.
Bajo Nivel
Bajo Nivel.
1
HARDWARE
COMPILADORES.
• Traducen un texto, expresado en un Lenguaje de Alto (Medio) Nivel, antes de permitir la ejecución.
• La traducción se realiza de todo el texto.
• Se traduce a Lenguaje Máquina.
• Al texto origen se le llama Código Fuente.
• Al texto traducido se le llama Código Objeto.
ENSAMBLADORES.
• Traducen todo un texto escrito en Lenguaje Ensamblador en su equivalente en Lenguaje Máquina.
INTÉRPRETES.
• Traducen y Ejecutan una a una las instrucciones de un programa escrito en un Lenguaje de Alto
Nivel.
• Requiere el paso previo de traducción de cada instrucción a lenguaje máquina pero sin producir un
código objeto.
1.3.− MONTADOR, CARGADOR.
PROGRAMA MONTADOR.
• Convierte uno o varios módulos objeto en un único módulo ejecutable.
• Se le asignan las funciones siguientes:
• Reubicar módulos a su zona de ejecución.
• Resolver las referencias externas de los módulos.
• Desde el punto de vista de la programación es muy interesante la utilización de librerías de
programas (pueden ser de uso general, operaciones aritméticas en coma flotante, operaciones
trigonométricas,...)
PROGRAMA CARGADOR.
• Lee un fichero ejecutable de un medio de almacenamiento externo y lo traspasa a memoria principal,
para proceder a su ejecución.
• Debe trabajar con el formato de salida del montador.
• En muchas aplicaciones interesa que el cargador sea reubicador para que pueda posicionar el
programa en la zona de memoria deseada.
• El Programa Cargador también debe tener un sistema de detección / corrección de errores para
asegurar que el traspaso se produzca sin alteración de la información.
• Los pasos que daremos para trabajar en C:
• Utilizar un editor ASCII para escribir el programa C.
El nombre del fichero terminará en ____ . c.
Ejemplo: xxxx . c
• Compilar el programa. En UNIX se tecleará.
2
$ cc xxxx . c (nombre del fichero que contiene el programa)
Se genera un programa ejecutable llamado: a . out
Sobre DOS el proceso de compilación va en función del compilador utilizado: Turbo C, Microsoft C, Borland
C, C++, ...
CONSTANTES, VARIABLES Y TIPOS.
2.1. IDENTIFICADORES.
• Las variables y constantes son los objetos básicos que se manipulan en un programa.
• Las variables y constantes se denominan por nombres. Estos se construyen con letras y dígitos. El
carácter de subrayado − se considera igual que una letra.
• El primer carácter de un nombre debe ser una letra.
• Las letras mayúsculas y minúsculas son diferentes.
• En la práctica se utilizan:
• Mayúsculas para nombres de constantes.
• Minúsculas para nombres de variables.
• Dependiendo del compilador admite más o menos caracteres para los nombres, lo habitual es 8.
• Los nombres se seleccionan de forma que sean significativos para atender el sentido de la variable o
constante.
• Los nombres no deben coincidir con las palabras reservadas. Estas son:
auto
break
case
char
continue
Default
do
2.2. TIPOS DE DATOS.
Double
Else
Entry
Extern
Float
For
goto
If
Int
Long
Register
Return
Short
sizeef
Static
Struct
Switch
Typedef
Union
Unsigned
While
• Los básicos son:
Char: Un byte (octeto) capaz de contener un carácter.
Int: Un entero, normalmente de 16 bits.
Float: Un número en coma flotante, normalmente de 32 bits.
Double: Un número en coma flotante de doble precisión, normalmente de 64 bits.
• Además hay 3 calificadores que se aplican sobre enteros:
Short: Entero corto, se representa sobre 8 bits; Short int.
Long: Entero largo, se representa sobre 32 bits; long int.
3
Unsigned: Entero sin signo. Son siempre positivos que se gobiernan por las leyes de la aritmética de módulo
2n; unsigned int.
• Aunque la resolución depende de la máquina, en general:
Tipo
Nº bits
Rango
Char
8
0 a 255 (28 = 256)
Int
16
−32.768 a 32.767
Short int
8
−128 a 127
Unsigned int
16
0 a 65.535
Long int
32
− 4.294.967.296 a 4.294.967.295
Float
32
6 o 7 cifras decimales y un rango de ±(10−37 a 1038) **
Double
64
4
" 12 cifras decimales y un rango de ±(10−37 a 1038) **
(**) Puede ser mayor en función del ensamblador.
2.3. CONSTANTES.
TIPO CHAR
• Ejemplo: Asignar a la constante LETRA el valor A:
Char LETRA = 65;
Char LETRA = `A';
TIPO INT (SHORT, LONG, UNSIGNED)
• Ejemplos de definiciones:
Int COLOR = 7;
Int MESES = 12, DIAS =7, HORAS = 24;
Short int COLOR = 7;
Short COLOR = 7;
Long int DATO = −41728;
Long DATO = −41728;
Unsigned int MAXIMO = 10000;
Unsigned MAXIMO = 10000;
• Si el valor de un constante int se sale de rango automáticamente el compilador la pasará a long.
• Si el valor de una constante long se puede representar como int automáticamente lo hará el
compilador. Para evitarlo se añade L. Ejemplo:
Long DATO = 33L
• Los números se pueden representar en otras bases:
Hexadecimal 0x10000 o bien 0X10000
Octal 074
• Las siguientes definiciones son similares:
Int DATO = 16;
Int DATO = 0x10;
5
Int DATO = 020;
TIPOS FLOAT Y DOUBLE.
• Algunos casos de representaciones válidas:
3,14159 .2 4e16 .8e−5 100
• Ejemplos de definiciones:
Float VALOR = 32000.0;
Double VALOR = 32000.0;
• ¿Qué ocurre si al realizar alguna operación nos salimos de rango?. Depende del compilador, en
general:
− En exceso: detiene el programa generándose código de error.
− Por defecto: Se sustituye por 0.
2.4. DECLARACIONES.
• Todas las variables deben de ser declaradas antes de utilizarlas.
• Una declaración específica un tipo, y le sigue una lista de una o más variables de ese tipo. Ejemplos
de definiciones:
Int SUPERIOR, INFERIOR, PASO =
Char LETRA, INDICE; =
Float VALOR, CANTIDAD =
Int SUPERIOR;
Int INFERIOR;
Int PASO;
Char LETRA;
Char INDICE;
Float VALOR;
Float CANTIDAD;
Nota: Aunque ocupa más líneas es más conveniente
porque permite añadir un comentario a cada
declaración y porque es más fácil realizar
modificaciones posteriores:
• La forma de indicar comentarios es:
/* aquí viene el comentario */
• Las variables se pueden inicializar a un valor (igual que la definición de constantes). Ejemplo:
Int SUPERIOR = 40;
• Las variables no inicializadas toman valores indefinidos.
EJERCICIOS
6
1.− ¿Qué tipo de dato se utilizaría para expresar las cantidades siguientes?
La población de Mislata.
El peso de una pintura de Rembrandt.
La inicial de un nombre.
El nº de veces que aparece esa inicial en un capítulo de libro.
2.− Seguidamente se presentan unos valores para constantes. Asignar el valor y dar nombre; seguir el
criterio de ahorrar memoria:
−12
ABC
DECIMAL HEXAD
C
LETRA
2.347x107
37
3.34
OCTAL
6
65530
FORMATO
32 BITS
3.− Dadas las definiciones siguientes, indicar las que son correctas e incorrectas, para estas últimas indicar
cuál es el error.
Unsigned int = 28000;
Int nom1 = 33.24;
Char nom2 = M;
Double nom3 = −34e−7; /*definición de constantes/*
Short int nom4 = 128;
4.− Comentar si existe alguna diferencia entre las variables nom1 y nom2 cuando se ejecute la sentencia
siguiente:
int nom1, nom2 = 1000;
2.5. OPERADORES: ARITMÉTICOS, RELACIONALES Y LÓGICOS.
OPERADORES ARITMÉTICOS.
• Son los siguientes:
Operador
Acción
−
Resta y menos unitario.
+
7
Suma
*
Multiplicación
/
División
%
Módulo división (resto división)
• La división entera trunca cualquier parte fraccionaria. Ejemplo:
Int num1 = 7;
Int num2 = 3;
Int num3 = 6;
7
1
3
2
El resultado de num1 / num2 es 2.
El resultado de num1 % num2 es 1.
6
0
3
2
El resultado de num3 / num2 es 2.
El resultado de num3 % num2 es 0.
• El operador % no puede utilizarse con operadores del tipo float o double.
• Las acciones que se aplican en caso de desbordamiento (overflow) o underflow varían en cada
compilador.
OPERADORES RELACIONALES.
• Son los siguientes:
Operador
Acción
>
Mayor que
>=
Mayor o igual que
<
8
Menor que
<=
Menor o igual que
==
Igual
!=
Distinto
• Al evaluarse una expresión relacional se devuelve:
1 : si la relación se cumple, es CIERTA.
0 : si la relación NO se cumple, es FALSA.
• Ejemplo:
Int num1 = 7;
Int num2 = 3;
El resultado de num1 > num2 es 2 es.
El resultado de num1 >= num2 es 1 es.
El resultado de num1 < num2 es 2 es.
El resultado de num1 <= num2 es 0 es.
El resultado de num1 == num2 es 2 es.
El resultado de num1 = num2 es 0 es.
1
1
0
0
0
1
NOTA: En C cualquier valor " 0 se considera como VERDADERO (true), aunque lo habitual es asignar a
VERDADERO el 1.
OPERADORES LÓGICOS.
• Son los siguientes:
Operador
Acción
&&
AND
||
9
OR
!
NOT
• Al evaluarse una expresión lógica se devuelve:
1 : VERDADERO.
0 : FALSO.
Op1
&&
Op2
Resultado
Op1
||
Op2
Resultado
!Op1
10
Descargar