0% encontró este documento útil (0 votos)
100 vistas15 páginas

Lenguaje C

El documento presenta una introducción al lenguaje de programación C. Explica que C es un lenguaje de propósito general pero que se usa comúnmente para sistemas. Describe algunas características básicas como tipos de datos, variables, funciones y estructura básica de un programa C. Finalmente, cubre temas como expresiones, operadores y control de flujo.

Cargado por

Daniel Castillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
100 vistas15 páginas

Lenguaje C

El documento presenta una introducción al lenguaje de programación C. Explica que C es un lenguaje de propósito general pero que se usa comúnmente para sistemas. Describe algunas características básicas como tipos de datos, variables, funciones y estructura básica de un programa C. Finalmente, cubre temas como expresiones, operadores y control de flujo.

Cargado por

Daniel Castillo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

ESCUELA SUPERIOR DE TIZAYUCA

Programa Académico: Ingeniería en Tecnologías de


Automatización

6° SEMESTRE
Asignatura: Lenguaje C para PLC

Docente:

Dr. José Carlos Quezada Quezada

Investigación: Lenguaje de Programación C

Autor:
Erick Daniel Castillo Valdez

Febrero del 2017


Introducción
C es un lenguaje de programación que ofrece control de flujo
y estructuras sencillas además de un buen conjunto de operadores. No es un
lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está
especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con
un campo de aplicación ilimitado.

Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que


fueron desarrollados conjuntamente. Sin embargo, no está ligado a
ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar
lenguaje de programación de sistemas debido a su utilidad para
escribir compiladores y sistemas operativos, aunque de igual forma se puede
desarrollar cualquier tipo de aplicación.

Antecedentes

La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por
Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos
son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de
datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante,
de varios tamaños. Además se pueden crear tipos derivados mediante la
utilización de punteros, vectores, registros y uniones. El primer compilador de C
fue escrito por Dennis Ritchie para un DEC PDP-11 y escribió el propio sistema
operativo en C.

C trabaja con tipos de datos que son directamente tratables por el hardware de la
mayoría de computadoras actuales, como son los caracteres, números y
direcciones. Estos tipos de datos pueden ser manipulados por
las operaciones aritméticas que proporcionan las computadoras. Esto permite que
el código generado sea muy eficiente y de ahí el éxito que ha tenido como
lenguaje de desarrollo de sistemas. No proporciona otros mecanismos
de almacenamiento de datos que no sea el estático y no proporciona mecanismos
de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores
de fácil implementación en distintos sistemas. Por contra, estas carencias se
compensan mediante la inclusión de funciones de librería para realizar todas estas
tareas, que normalmente dependen del sistema operativo.

Originariamente, el manual de referencia del lenguaje para el gran público fue


el libro de Kernighan y Ritchie, escrito en 1977. Es un libro que explica y justifica
totalmente el desarrollo de aplicaciones en C, aunque en él se utilizaban
construcciones, en la definición de funciones, que podían provocar confusión y
errores de programación que no eran detectados por el compilador. Como los
tiempos cambian y las necesidades también, en 1983 ANSI establece el comité
X3J11 para que desarrolle una definición moderna y comprensible del C.

Estructura Básica en un Código C

La mejor forma de aprender un lenguaje es programando con él. El programa más


sencillo que se puede escribir en C es el siguiente:

main( )

Como nos podemos imaginar, este programa no hace nada, pero contiene la parte
más importante de cualquier programa C y además, es el más pequeño que se
puede escribir y que se compile correctamente. En él se define la función main,
que es la que ejecuta el sistema operativo al llamar a un programa C. El nombre
de una función C siempre va seguida de paréntesis, tanto si tiene argumentos
como si no. La definición de la función está formada por un bloque de sentencias,
que está encerrado entre llaves { }.

Un programa algo más complicado es el siguiente:

#include <stdio.h>

main( )

{
printf("Hola amigos!\n");

Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera línea


indica que se tengan en cuenta las funciones y tipos definidos en la librería stdio
(standard input/output). Estas definiciones se encuentran en el fichero header
stdio.h. Ahora, en la función main se incluye una única sentencia que llama a la
función printf. Esta toma como argumento una cadena de caracteres, que se
imprimen van encerradas entre dobles comillas " ". El símbolo \n indica
un cambio de línea.

Tipos Básicos y Variables

Los tipos de datos básicos definidos por C son caracteres, números enteros y
números en coma flotante. Los caracteres son representados por char, los enteros
por short, int, long y los números en coma flotante por float y double. Los tipos
básicos disponibles y su tamaño son:

Char Carácter (normalmente 8 bits)

Short Entero corto con signo (normalmente 16 bits)

Int Entero con signo (depende de la implementación)

Unsigned Entero sin signo (depende de la implementación)

Long Entero largo con signo (normalmente 32 bits)

Float Flotante simple (normalmente 32 bits)

Double Flotante doble (normalmente 64 bits)

La palabra unsigned en realidad es un modificador aplicable a tipos enteros,


aunque si no se especifica un tipo se supone int. Un modificador es una palabra
clave de C que indica que una variable, o función, no se comporta de la forma
normal. Hay también un modificador signed, pero como los tipos son por defecto
con signo, casi no se utiliza.
Las variables son definidas utilizando un identificador de tipo seguido del nombre
de la variable. Veamos el siguiente programa:

#include <stdio.h>

main()

float cels, farh;

farh = 35.0;

cels = 5.0 * ( farh - 32.0 ) / 9.0;

printf("-> %f F son %f C\n", farh, cels );

En el programa anterior se definen dos variables float, se asigna un valor a la


primera y se calcula la segunda mediante una expresión aritmética. Las
asignaciones en C también son una expresión, por lo que se pueden utilizar como
parte de otra expresión, pero según que prácticas de este tipo no son muy
recomendables ya que reducen la legibilidad del programa. En la instrucción
printf, el símbolo %f indica que se imprime un número en coma flotante.

Funciones

Un programa C está formado por un conjunto de funciones que al menos contiene


la función main. Una función se declara con el nombre de la función precedido del
tipo de valor que retorna y una lista de argumentos encerrados entre paréntesis. El
cuerpo de la función está formado por un conjunto de declaraciones y de
sentencias comprendidas entre llaves. Por ejemplo:

#include <stdio.h>

#define VALOR 5

#define FACT 120


int fact_i ( int v )

int r = 1, i = 0;

while ( i <= v )

r = r * i;

i = i + 1;

return r;

int fact_r ( int v )

if ( v == 0 ) return 1;

else return v * fact_r(v-1);

main() {

int r, valor = VALOR;

if ( (r = fact_i(valor)) != fact_r(valor) ) printf("Codificación errónea!!.\n");

else if ( r == FACT ) printf("Codificación correcta.\n");

else printf("Algo falla!!.\n");

Se definen dos funciones, fact_i y fact_r, además de la función main. Ambas


toman como parámetro un valor entero y devuelven otro entero. La primera calcula
la factorial de un número de forma iterativa, mientras que la segunda hace lo
mismo de forma recursiva.

Todas las líneas que comienzan con el símbolo # indican una directiva del pre-
compilador. Antes de realizar la compilación en C se llama a un pre compilador
cuya misión es procesar el texto y realizar ciertas sustituciones textuales.

Expresiones y Operadores

Los distintos operadores permiten formar expresiones tanto aritméticas como


lógicas. Los operadores aritméticos y lógicos son:

+, - suma, resta

++, -- incremento, decremento

*, /, % multiplicación, división, módulo

>>, << rotación de bits a la derecha, izquierda.

& AND booleano

| OR booleano

^ EXOR booleano

~ complemento a 1

! complemento a 2, NOT lógico

==, != igualdad, desigualdad

&&, || AND, OR lógico

<, <= menor, menor o igual

>, >= mayor, mayor o igual

En estos operadores deben tenerse en cuenta la precedencia de operadores y las


reglas de asociación, que son las normales en la mayoría de lenguajes. Se debe
consultar el manual de referencia para obtener una explicación detallada. Además
hay toda una serie de operadores aritméticos con asignación, como pueden ser +=
y ^=.
En la evaluación de expresiones lógicas, los compiladores normalmente
utilizan técnicas de evaluación rápida. Para decidir si una expresión lógica es
cierta o falsa muchas veces no es necesario evaluarla completamente. Por
ejemplo una expresión formada <exp1> || <exp2>, el compilador evalúa primero
<exp1> y si es cierta, no evalúa <exp2>. Por ello se deben evitar construcciones
en las que se modifiquen valores de datos en la propia expresión, pues su
comportamiento puede depender de la implementación del compilador o de la
optimización utilizada en una compilación o en otra. Estos son errores que se
pueden cometer fácilmente en C ya que una asignación es también una expresión.

Debemos evitar: if (( x++ > 3 ) || ( x < y ))

y escribir en su lugar: x++; if (( x > 3 ) || ( x < y ))

Hay un tipo especial de expresión en C que se denomina expresión condicional y


está representada por los operadores ? : . Su utilización es como sigue: <e> ? <x>
: <y>. Se evalúa si e entonces x; si no, y.

int mayor ( int a, int b ) {

return ( a > b ) ? TRUE : FALSE;

waste_time () {

float a, b = 0.0;

( b > 0.0 ) ? sin(M_PI / 8) : cos(M_PI / 4); }

Control de flujo

Sentencia if

La sentencia de control básica es if (<e>) then <s> else <t>. En ella se evalúa una
expresión condicional y si se cumple, se ejecuta la sentencia s; si no, se ejecuta la
sentencia t. La segunda parte de la condición, else <t>, es opcional.

int cero ( double a )


{

if ( a == 0.0 )

return (TRUE);

else

return (FALSE);

En el caso que <e> no sea una expresión condicional y sea aritmética, se


considera falso si vale 0; y si no, verdadero. Hay casos en los que se deben
evaluar múltiples condiciones y únicamente se debe evaluar una de ellas.

Sentencia switch

Se puede programar con un grupo de sentencias if then else anidadas, aunque


ello puede ser farragoso y de complicada lectura. Para evitarlo nos puede ayudar
la sentencia switch.

Su utilización es:

switch (valor) {

case valor1: <sentencias>

case valor2: <sentencias>

...

default: <sentencias>

Cuando se encuentra una sentencia case que concuerda con el valor del switch se
ejecutan las sentencias que le siguen y todas las demás a partir de ahí, a no ser
que se introduzca una sentencia break para salir de la sentencia switch. Por
ejemplo:

{
switch(c){

case 'a': printf("Op A\n");

break;

case 'b': printf("Op B\n");

break;

case 'c':

case 'd': printf("Op C o D\n");

break;

default: printf("Op ?\n");

Setencia while

Otras sentencias de control de flujo son las que nos permiten realizar iteraciones
sobre un conjunto de sentencias. En C tenemos tres formas principales de realizar
iteraciones. La sentencia while (<e>) <s> es seguramente la más utilizada. La
sentencia, o grupo de sentencias <s> se ejecuta mientras la evaluación de la
expresión <e> sea verdadera.

long raiz ( long valor )

long r = 1;

while ( r * r <= valor )

r++;

return r;

}
Una variación de la sentencia while es: do <s> while ( <e> ); En ella la sentencia
se ejecuta al menos una vez, antes de que se evalúe la expresión condicional.

Setencia for

Otra sentencia iterativa, que permite inicializar los controles del bucle es la
sentencia for ( <i>; <e>; <p> ) <s>. La sentencia for se puede escribir también
como:

<i>;

while ( <e> ) {

<s>;

<p>;

El ejemplo anterior se podría escribir como:

long raiz ( long valor )

long r;

for ( r = 1; r * r <= valor; r++ )

return r;

Break y Continue

Otras sentencias interesantes, aunque menos utilizadas son break y continue.


Break provoca que se termine la ejecución de una iteración o para salir de la
sentencia switch, como ya hemos visto. En cambio, continue provoca que se
comience una nueva iteración, evaluándose la expresión de control. Veamos dos
ejemplos:
void final_countdown (void)

int count = 10;

while ( count--> 1 )

if ( count == 4 )

start_engines();

if ( status() == WARNING )

break;

printf("%d ", count );

if ( count == 0 ){

launch();

printf("Shuttle launched\n");

else

printf("WARNING condition received.\n");

printf("Count held at T - %d\n", count );

d2 ()

{
int f;

for ( f = 1; f <= 50; f++ ) {

if ( f % 2 == 0 )

continue;

printf("%d",f );

PLC con protocolo Modbus y programación en lenguaje C

Unidad esclavo de E/S programable con protocol Modbus 

Modbus es un protocolo ampliamente conocido en el campo de manufactura


industrial y monitoreo ambiental. Es útil para aplicaciones de E/S distribuiidas
de maestro-esclavo. La unidad es tiene pre-instalado un firmware Modbus. Por
lo tanto, la PC, HMI o PLC puede usar Modbus/TCP y Modbus/RTU para
comunicarse con módulos de E/S en la unidad por medio de la interfaz RS-
232/485 o de Ethernet.
Además de la funcionalidad de esclavo E/S, también es un controlador
programablebasado en lenguaje C que tiene equipado un sistema operativo
MiniOS7. Los usuarios pueden usar compiladores C que pueden crear archivos
ejecutables (*.exe) de 16 bits para desarrollar un programa y después
descargarlo al controlador. Estp deja que el controlador funciones de manera
autónoma. Existen 2 versiones de compilador sin cargo (Turbo C 2.0 y Turbo
C++ 1.01), se sugiere a los usuarios usar el Turbo C++ 1.01 

Usando las herramientas de desarrollo del software proporcionamos, se puede


configurar el firmware. El SDK proporciona ricas funciones para
comunicaciones Modbus, como Modbus/maestro/esclavo TCP, Modbus/RTU
maestro/esclavo, Modbus/ASCII maestro, etc. 

Nota 1: RS-232: RXD, TXD, GND


Las líneas de señal son RXD, TXD y GND
Puerto de descarga de programa 
Nota 2: RS-485: Data+, Data-; Self-tuner 
Nota 3: RS RS-232: RXD, TXD, CTS, RTS, GND or RS-485: Data+, Data-;
Self-tuner.
Nota 4:RS-232: RXD, TXD, CTS, RTS, DSR, DTR, DCD, RI, GND
Conclusión

El lenguaje de programación C consiste en:

* Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como


funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.

* Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de
los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas
licencias de ruptura).

* Un sistema de tipos que impide operaciones sin sentido.

* Usa un lenguaje de pre procesado, el preprocesador de C, para tareas como


definir macros e incluir múltiples archivos de código fuente.

* Acceso a memoria de bajo nivel mediante el uso de punteros.

* Interrupciones al procesador con uniones.

* Un conjunto reducido de palabras clave.

Bibliografía:

 http://lenguajedeprogramacion21.blogspot.mx/
 http://teoria-de-programacion.globered.com/categoria.asp?idcat=34
 http://www.dc.fi.udc.es/~so-grado/current/Varios/CursoC.pdf

También podría gustarte