You are on page 1of 10

Universidad Bolivariana de Venezuela

PFG Informtica para la Gestin Social


Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
Lenguaje C: Principios
%n este captulo se ofrece una &reve 'istoria del desarrollo del len#ua$e C ( se
consideran tam&i)n sus caractersticas*
%n el resto del captulo se ven los aspectos &sicos de los pro#ramas de C+ tales
como su estructura+ la declaracin de varia&les+ tipos de datos ( operadores*
Lenguaje C: Orgenes
%l proceso de desarrollo del len#ua$e C se ori#ina con la creacin de un len#ua$e
llamado BCP"+ ,ue fue desarrollado por -artin .ic'ards* %l BCP" tuvo influencia en
un len#ua$e llamado B+ el cual se us en !/01 ( fue inventado por 2en 3'ompson (
,ue permiti el desarrollo de C en !/0!+ el cual lo invent e implement 4ennis
.itc'ie* Para !/05 el sistema operativo U6I7 esta&a casi totalmente escrito en C*
4urante muc'os a8os el estndar para C fue la versin 9 del sistema operativo
U6I7+ documentada en ::3'e C Pro#rammin# "an#ua#e;; escrito por Brian <*
2erni#'an and 4ennis -* .itc'ie in !/0= com>nmente referido como 2?.*
Posteriormente se 'icieron varias implementaciones las cuales mostra&an las
si#uientes tendencias:
6uevas caractersticas
4iferencias de m,uinas
4iferencias de productos
%rrores en los compiladores
-alas implementaciones
%sto ori#in ,ue en el verano de !/=5 se esta&leciera un comit) para resolver estas
discrepancias+ el cual empez a tra&a$ar en un estndar @6SI C+ la cual fue
completada en !/==*
Lenguaje C: Caractersticas
@l#unas de las caractersticas ms importantes ,ue definen el len#ua$e ( ,ue 'an
permitido ,ue sea tan popular+ como len#ua$e de pro#ramacin son:
3ama8o pe,ue8o*
Uso eAtensivo de llamadas a funciones*
Comandos &reves Bpoco tecleoC*
"en#ua$e estructurado*
Pro#ramacin de &a$o nivel Bnivel &itC
Implementacin de apuntadores D uso eAtensivo de apuntadores para la
memoria+ arre#los+ estructuras ( funciones
"as diversas razones por la cual se 'a convertido en un len#ua$e de uso profesional
son:
%l uso de constructores de alto nivel*
%l poder mane$ar actividades de &a$oDnivel*

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
%l #enerar pro#ramas eficientes*
"a posi&ilidad de poder ser compilado en una variedad de computadoras+
con pocos cam&ios Bporta&ilidadC*
Un punto en contra es ,ue tiene una deteccin po&re de errores+ lo cual en
ocasiones es pro&lemtico para los principiantes*
Lenguaje C: Estructura de un programa en C
Un pro#rama de C tiene &sicamente la si#uiente forma:
Comandos del preprocesador*
4efiniciones de tipos*
Prototipos de funciones D declara el tipo de funcin ( las varia&les pasadas a
la misma*
Varia&les
Funciones
Para un pro#rama se de&e tener una funcin main()*
Una funcin tiene la forma:
Si la definicin del tipo es omitida+ C asume ,ue la funcin re#resa un tipo entero*
Nota: "o anterior puede ser una fuente de pro&lemas en un pro#rama*
@ continuacin se muestra un primer pro#rama:
6E3@S:
C re,uiere un punto ( coma al final de cada sentencia*
printf es una funcin estndar de C+ la cual es llamada en la funcin
main()*
\n si#nifica salto de lnea* Salida formateada*
tipo nombre_de_la_funcion (parmetros)
{
variables locales

sentencias de C

}
/* Programa ejemplo */
main()
{

printf( "ienvenido al primer taller de !enguaje
C"n" )#
e$it (%)#

}

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
exit() es tam&i)n una funcin estndar ,ue 'ace ,ue el pro#rama termine*
%n el sentido estricto no es necesario (a ,ue es la >ltima lnea de main() (
de cual,uier forma terminar el pro#rama*
%n caso de ,ue se 'u&iera llamado a la funcin printf de la si#uiente forma:
printfBF*Gn*!Gn**HGn***5GnFCI
"a salida tendra la si#uiente forma:
*!
**H
***5
Lenguaje C: Variables
C tiene los si#uientes tipos de datos simples:
Tabla 2.1: 3ipos de C
Tipo Tamao (bytes) Lmite inferior Lmite superior
c'ar ! DD DD
unsi#ned c'ar !
s'ort int H
unsi#ned s'ort int H
Blon#C int J
float J
dou&le =
"os tipos de datos &sicos tienen varios modificadores ,ue les preceden* Se usa un
modificador para alterar el si#nificado de un tipo &ase para ,ue enca$e con las
diversas necesidades o situaciones* "os modificadores son: signed+ unsigned+
long ( short*
%n los sistemas U6I7 todos los tipos int son long int+ a menos ,ue se especifi,ue
eAplcitamente short int*
Nota: no 'a( un tipo &ooleano en C DD se de&er usar char+ int o a>n me$or
unsigned char*
signed+ unsigned+ long ( short pueden ser usados con los tipos char e int*
@un,ue es permitido el uso de signed en enteros+ es redundante por,ue la
declaracin de entero por defecto asume un n>mero con si#no*

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
Para declarar una varia&le en C+ se de&e se#uir el si#uiente formato:
tipo lista_variables;
tipo es un tipo vlido de C ( lista_variables puede consistir en uno o ms
indentificadores separados por una coma* Un identificador de&e comenzar con una
letra o un #uin &a$o*
%$emplo:
Lenguaje C: Variables !e"inici#n de Variables $lobales
Una vari&le #lo&al se declara fuera de todas las funciones+ inclu(endo a la funcin
main()* Una varia&le #lo&al puede ser utilizada en cual,uier parte del pro#rama*
Por e$emplo:
%s tam&i)n posi&le preinicializar varia&les #lo&ales usando el operador de
asi#nacin + por e$emplo:
Kue es lo mismo ,ue:
int i& j& '#
float $&(&)#
c*ar c*#
s*ort numero& suma#
int numerogr& sumagr#
c*ar letra#
main()
{
+++
}
float suma, %+%#
int sumagr, %#
c*ar letra, -.-#
main()
{
+++
}
float suma#
int sumagr#
c*ar letra#
main()
{
suma , %+%#
sumagr, %#
letra , -.-#
+++
}

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
4entro de C tam&i)n se permite la asi#nacin m>ltiple usando el operador + por
e$emplo:
a L & L c L d L 5I
***,ue es lo mismo+ pero ms eficiente ,ue:
a L 5I
& L 5I
c L 5I
d L 5I
"a asi#nacin m>ltiple se puede llevar a ca&o+ si todos los tipos de las varia&les son
i#uales*
Se pueden redefinir los tipos de C usando typedef* Como un e$emplo de un simple
uso se considera como se crean dos nuevos tipos real ( letra* %stos nuevos tipos
pueden ser usados de i#ual forma como los tipos predefinidos de C*
Lenguaje C: Variables Lectura % Escritura de &ariables
%l len#ua$e C usa salida formateada* "a funcin printf tiene un caracter especial
para formatear BMC DD un caracter ense#uida define un cierto tipo de formato para
una varia&le*
!c caracteres
!s cadena de aracteres
!d enteros
!f flotantes
Por e$emplo:
printfBFMc Md MfF+c'+i+ACI
"a sentencia de formato se encierra entre " "+ ( ense#uida las varia&les*
@se#urarse ,ue el orden de formateo ( los tipos de datos de las varia&les coincidan*
scanf() es la funcin para entrar valores a varia&les* Su formato es similar a
printf* Por e$emplo:
scanfBFMc Md Mf MsF+?c'+ ?i+ ?A+ cadCI
t(pedef float real#
t(pedef c*ar letra#
/* /eclaracion de variables usando el nuevo
tipo */
real suma,%+%#
letra sig_letra#

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
E&servar ,ue se antepone # a los nom&res de las vari&les+ eAcepto a la cadena de
caracteres* %n la proAima prctica ,ue trata so&re apuntadores se revisar ms a
fondo el uso de este operador*
Lenguaje C: Constantes
@6SI C permite declarar constantes* Cuando se declara una constante es un poco
parecido a declarar una varia&le+ eAcepto ,ue el valor no puede ser cam&iado*
"a pala&ra clave const se usa para declarar una constante+ como se muestra a
continuacin:
const a L !I
int a L HI
Notas:
Se puede usar const antes o despu)s del tipo*
%s usual inicializar una constante con un valor+ (a ,ue no puede ser
cam&iada de alguna otra forma*
"a directiva del preprocesador $define es un m)todo ms fleAi&le para definir
constantes en un pro#rama*
Frecuentemente se ve la declaracin const en los parmetros de la funcin* "o
anterior simplemente indica ,ue la funcin no cam&iara el valor del parmetro* Por
e$emplo+ la si#uiente funcin usa este concepto:
char %strcpy(char %dest& const char %orig);
%l se#undo ar#umento orig es una cadena de C ,ue no ser alterada+ cuando se
use la funcin de la &i&lioteca para copiar cadenas*
Lenguaje C: Operadores 'ritm(ticos
"o mismo ,ue en otros len#ua$es de pro#ramacin+ en C se tienen los operadores
aritm)ticos ms usuales B' suma+ ( resta+ % multiplicacin+ ) divisin ( !
mduloC*
%l operador de asi#nacin es + por e$emplo: i*; ch+y+;
Incremento '' ( decremento (( unario* "os cuales son ms eficientes ,ue las
respectivas asi#naciones* Por e$emplo: x'' es ms rpido ,ue xx',*
"os operadores '' ( (( pueden ser prefi$os o postfi$os* Cuando son prefi$os+ el
valor es calculado antes de ,ue la eApresin sea evaluada+ ( cuando es postfi$o el
valor es calculado despu)s ,ue la eApresin es evaluada*
%n el si#uiente e$emplo+ ''- es prefi$o ( (( es postfi$o:
int A+(+zI

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
mainBC
N
ALB B OOz C D B (DD C C M !11I
P
Kue es e,uivalente a:
int A+(+zI
mainBC
N
zOOI
A L B zD( C M !11I
(DDI
P
%l operador ! Bmdulo o residuoC solamente tra&a$a con enteros+ aun,ue eAiste
una funcin para flotantes B!9*! fmod() C de la &i&lioteca matemtica*
%l operador divisin ) es para divisin entera ( flotantes* Por lo tanto 'a( ,ue tener
cuidado* %l resultado de x . ) /; es uno+ a>n si x es declarado como float* "a
re#la es: si am&os ar#umentos en una divisin son enteros+ entoces el resultado es
entero* Si se desea o&tener la divisin con la fraccin+ entonces escri&irlo como: x
.01 ) /; o x . ) /01 ( a>n me$or x .01 ) /01*
Por otra parte+ eAiste una forma ms corta para eApresar clculos en C* Por
e$emplo+ si se tienen eApresiones como: i i ' .; o x x % (y ' /); + pueden ser
reescritas como:
"o cual es e,uivalente+ pero menos eficiente ,ue:
Por lo ,ue podemos reescri&ir las eApresiones anteriores como: i ' .; ( x % y '
/; respectivamente*
Lenguaje C: Operadores de Comparaci#n
%l operador para pro&ar la i#ualdad es + por lo ,ue se de&er tener cuidado de
no escri&ir accidentalmente slo + (a ,ue:
if ( i 2 ) 000
%s una sentencia le#al de C Bsintcticamente 'a&lando aun,ue el compilador avisa
cuando se empleaC+ la cual copia el valor de ::2;; en ::i;;+ lo cual ser interpretado
como V%.4@4%.E+ si 2 es diferente de cero*

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
4iferente es 3+ otros operadores son: 4 menor ,ue+ 5 ma(or ,ue+ 4 menor ,ue
o i#ual a ( 5 Bma(or ,ue o i#ual aC*
Lenguaje C: Operadores L#gicos
"os operadores l#icos son usualmente usados con sentencias condicionales o
relacionales+ los operadores &scios l#icos son:
## Q l#ico+ 66 E l#ico ( 3 ne#acin*
Lenguaje C: Orden de Precedencia
%s necesario ser cuidadosos con el si#nificado de eApresiones tales como a ' b % c+
dependiendo de lo ,ue se desee 'acer
(a ' b) % c
o
a ' (b % c)
3odos los operadores tienen una prioridad+ los operadores de ma(or prioridad son
evaluados antes ,ue los ,ue tienen menor prioridad* "os operadores ,ue tienen la
misma prioridad son evaluados de iz,uierda a derec'a+ por lo ,ue:
a ( b ( c
es evaluado como
(a ( b) ( c
7rioridad 8perador(es)
-s alta ( ) 9 : (5
3 ; '' (( ( BtipoC % # sizeof
% ) !
' (
44 55
4 4 5 5
3
#
<
6
##
66
=
' ( % )
-s &a$a &
4e acuerdo a lo anterior+ la si#uiente eApresin:
a 4 ,1 ## / % b 4 c

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C
%s interpretada como:
(a 4 ,1) ## ( (/ % b) 4 c )
(
a L
& L
!1 R 9
O HI
como
a L
B & L
B !1 R 9 C
O H CI
Ejercicios Proupuestos.
%scri&ir pro#ramas en C para 'acer las si#uientes tareas:
!*"eer la entrada de dos n>meros ( mostrar el do&le producto del primero
menos la mitad del se#undo*
H*"ea ( escri&a su nom&re+ apellido paterno+ apellido materno ( matricula en
un formato adecuado*
5*%scri&ir un pro#rama para leer un ::flotante;; ,ue representa un n>mero de
#rados Celsius+ e imprime como un ::flotante;; la temperatura e,uivalente
en #rados Fa'ren'eit* "a salida puede ser de la si#uiente forma: ,1101
grados >elsius son /,/01 grados ?ahrenheit0
J*%scri&ir un pro#rama para imprimir varias veces el e$ercicio H* Puede usar
varias instrucciones printf+ con un caracter de nueva lnea en cada una+ o
una instruccin con varios caracteres nueva lnea en la cadena de
formateo*
9*%scri&ir un pro#rama ,ue lea el radio de un crculo como un n>mero flotante
( muestre el rea ( el permetro del crculo*
S*4ados ciertos centmetros como entrada de tipo flotante+ imprimir su
e,uivalencia a pies BenterosC ( pul#adas Bflotante+ ! decimalC+ dando las
pul#adas con una precisin de un lu#ar decimal Suponer 2.54 centmetros
por pul#ada+ ( 12 pul#adas por pie*
Si la entrada es 555*5+ el formato de la salida de&er ser:
555*5 centmetros son !1 pies !!*H pul#adas*

Universidad Bolivariana de Venezuela
PFG Informtica para la Gestin Social
Unidad Curricular: Estructuras Dinmicas
Gua !:Introduccin a "en#ua$e C

You might also like