Está en la página 1de 42

{ Capitulo 2

Iniciacin a la Programacin
con Lenguaje C

Los programadores requerimos de lenguajes comprensibles y


accesibles para poder desarrollar los sistemas y las aplicaciones
que ejecutan las computadoras (programas.exe)

Objetivos:
Iniciarse en el anlisis de problemas, en el diseo de soluciones y la codificacin de
programas bsicos en lenguaje C.
Debes comprender las estructuras y procesos elementales de la programacin en general,
lo que te permitir ir avanzando no solo como programador de aplicaciones, si no en la
comprensin del cmputo y su funcionamiento en general. Al programar una computadora
comprendes la lgica de los sistemas computacionales, por lo que eres capaz de
comprender su uso adecuado en distintas circunstancias de aplicacin, adems de tener la
facilidad de aprender otros lenguajes.

2.1

La Programacin

La palabra programacin o el efecto de programar, se refiere al hecho mental de idear y ordenar una
secuencia de acciones de computadora y que son necesarios para satisfacer una necesidad o propsito a
travs de un programa de software.
La programacin es un proceso abstracto, que se basa en la formacin de imgenes en el cerebro que te
permiten idear y visualizar los elementos que contendr un programa

Escribe algunas de las acciones que realiza una computadora.

Las personas constantemente estamos formando ideas abstractas en nuestra mente.


Elabora un dibujo sobre El diseo de una casa

Escribe un programa para:

idea expresada en forma grfica

Realizar una ceremonia de fin de curso

idea expresada en forma escrita


Insumos

Pasos

Para
programar
debemos

1.

Tener clara una meta o propsito. El programa para que servir?

2.

Decidir la forma como lo vamos a realizar y los recursos que

3.

necesitaremos.
Expresarnos en la forma apropiada.

Para realizar un programa de computadora no necesariamente tienes a la mano los objetos fsicos que
vas a describir por medio del sistema computacional, para ello utilizas:
RECUERDOS, EXPERIANCIA e IMAGINACION
Mismos que organizas a travs de un proceso mental llamado ABSTRACCION.

Para transmitir lo que tienes en la mente es necesario VERBALIZAR las ideas, para ello utilizas algn
tipo de LENGUAJE, ya sea con tus propias palabras, con grficas, con esquemas o algn otro tipo de
lenguaje, como puede ser un lenguaje de programacin.

Consulta en el diccionario el concepto de Abstraccin:

Consulta en el diccionario el concepto de Verbalizacin:

En este espacio realiza el DIBUJO DE UN JARRON:

Este jarrn es un modelo, en el que empleaste el lenguaje pictrico para expresar la idea,
para dibujarlo no tenas el objeto presente por lo que usaste abstraccin, tuviste que emplear tu
conocimiento previo para saber que es un jarrn, para que sirve y cules son sus partes.

De la misma forma como elaboraste el diseo del jarrn, se elaboran los programas de
computadora tambin denominados aplicaciones.
SON LAS APLICACIONES QUE TU ESTAS ACOSTUMBRADO A UTILIZAR
La programacin es un arte y una ciencia que requiere de conocimientos y habilidades que solo
se adquieren con la PRCTICA, mismas que esperamos apoyar a travs de este cuaderno de
trabajo.
SIGUELO CON UNA BUENA ACTITUD Y CONSULTA LAS DUDAS CON TU PROFESOR

Las Aplicaciones
Inicialmente las computadoras surgieron como una herramienta para el clculo numrico, sin
embargo a travs de su evolucin, el nmero de aplicaciones de procesamiento
de datos incluyeron infinidad de propsitos
que manejan todo tipo de
informacin.

El tratamiento de las enormes cantidades de datos que se producen y almacenan


diariamente por los diversos sectores: cientfico, comercio, gobierno,
comunicaciones, educacin, entretenimiento, etc.
ES EL FIN POR EL CUAL PROGRAMAMOS.

Investiga la actividad de un Programador de Aplicaciones.

Que conocimientos debe tener un Programador de Aplicaciones?

Investiga la actividad de un Programador de Sistemas.

Las aplicaciones permiten "extender las capacidades" de las personas, indica lo siguiente:
Con un Procesador de Textos las personas son CAPACES de:

Con un Navegador las personas son CAPACES de:

Que aplicacin o aplicaciones te permite(n) hacer clculos y graficar funciones:

Investiga una aplicacin que nos permite llevar la contabilidad de una empresa y elaborar estados
financieros:

Los Datos y La Informacin

Describe que indica el diagrama anterior.

Las personas hacemos referencia a las cosas, personas o hechos (entidades) por medio de los datos.
Observa a la siguiente persona, por medio de sus atributos sabemos de qu entidad se trata. Los valores
posibles de cada atributo, por ejemplo Grado que cursa: 1. 2. 3. se llaman valores del dominio o
simplemente dominio.

Grado que Cursa________


Carrera___________________________ Nombre_______________
Promedio de Calificaciones______________________
Fecha de Nacimiento___________
Estos son los atributos de:________________que es una entidad.

Sexo______ Estatura______ Direccin_____ Telfono______


Ocupacin_______
Mquina que opera_________________
Turno__________
Herramientas que maneja____________
Productividad______________________
Estos son atributos de:______________que es una entidad.
Podamos definir ms atributos sobre esta entidad? SI NO
Cules: __________________________________________________

Los DATOS constan de smbolos reconocibles y completos que


Expresan una idea no ambigua, al reunirse con un propsito obtenemos informacin.
A continuacin se te proporcionan distintas palabras referentes a distintas cosas.
Debes organizarlas como Entidades, Atributos o Valores del Dominio.
Precio, direccin, casa habitacin, recamaras, baos, enganche, nombre del vendedor, 1200000, numero
de Celular, 4, 2, 70000, autos, estacionamiento, direccin, calle, numero, colonia, CP, valor catastral,
crdito, si, valor catastral, tipo de unidad.

MODELO DE DATOS
Entidad
Lista de Atributos

Valores del Dominio

Utilizando la siguiente tabla explica:

-Por el conjunto de atributos, a qu tipo de entidad se puede referir?

-Encuentra datos ambiguos en la tabla anterior, explica por qu son ambiguos

Investiga y explica que es el Procesamiento de Datos.

Define algunas entidades, atributos y sus valores de dominio, para el problema de informacin
para una concesionaria de autos.

Entidad

Atributos

Valores de dominio

Los programadores de aplicaciones aprenden como es que trabajan las personas en cada una
de sus reas: contadores, fiscalistas, abogados, qumicos, economistas, escuelas,
hospitales, casas de bolsa, bancos, Etc.

Los Lenguajes de Programacin


Un lenguaje de programacin es un tipo de lenguaje formal diseado para expresar por medio de
instrucciones el control del comportamiento fsico y lgico de una mquina, para expresar algoritmos con
precisin a travs o como modo de comunicacin comprensible por las personas para producir el cdigo
comprensible por el procesador de una computadora.
La forma como se ve un programa escrito en lenguaje C para mostrar en pantalla el mensaje Hola Mundo;
este es un programa muy sencillo, los programas que utilizas generalmente muestran su salida en modo
grfico y constan de varios cientos y hasta miles de instrucciones, por lo que se cuentan con otros lenguajes y
herramientas muy poderosas para programarlos:

#include<stdio.h>

Nota que las palabras son en ingls:

int main( ) {

include -> incluir

printf(Hola
Mundo);
return

Cada lnea es una clausula o instruccin.

0;

main->principal

printf->imprimir return->regresa

Este se denomina cdigo fuente, se requiere traducir compilar para


producir el cdigo de mquina, que es el que entiende (decodifica) el
procesador.

Requerimos de compiladores debido a que la mayora de los lenguajes o cdigos de mquina son
demasiado elementales, es decir que trabajan a bajo nivel, que es el nivel en que se programa a nivel de
registros y direcciones de una mquina especfica, resultan muy complejos e ineficientes para la
programacin de aplicaciones, aunque son necesarios para la programacin de sistemas.
Un lenguaje est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su
estructura y el significado de sus elementos y expresiones.
Programacin es el proceso por medio del cual se escribe, se prueba, se depura, se compila (de ser
necesario) y se mantiene el cdigo fuente de un programa informtico.

Al conjunto de instrucciones que nosotros escribimos se le


denomina programa fuente.
A la traduccin del programa fuente se le llama
cdigo de mquina.
Cada instruccin en el lenguaje fuente es equivalente a
varias instrucciones en cdigo de mquina.
Un compilador es un traductor cuya entrada es un
programa escrito en algn lenguaje y cuya salida es en
lenguaje o cdigo de mquina.

Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se
encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

Lenguajes de bajo nivel


Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo
de lenguajes no se puede migrar o utilizar en otras mquinas. Al estar prcticamente diseados para hacer
referencia a los circuitos de una mquina en particular. En este grupo se encuentran:
El lenguaje maquina: es el cdigo que interpreta la unidad de control del procesador para la produccin de
las seales que harn alguna accin en la computadora.
El lenguaje ensamblador: es un derivado del lenguaje mquina, est formado por abreviaturas de letras y
nmeros llamadas mnemotcnicos. Con la aparicin de este lenguaje se crearon los compiladores para
poder pasar los programas escritos en lenguaje ensamblador a lenguaje mquina.
Este es un programa en lenguaje ensamblador para
mostrar la palabra mensaje en el monitor.
Una representacin del mismo en cdigo de mquina pero
expresado en hexadecimal (simplifica el binario).
El mismo programa en lenguaje C se ve como sigue, nota
que este cdigo se escribe independientemente de la
mquina:
int main(){
printf (Mensaje);
}
Cada tipo y/o marca de computadora o microprocesador posee su propio juego de instrucciones o cdigo
de mquina por lo que an su programacin en lenguaje ensamblador es dependiente y diferente en cada
una.

Lenguajes de alto nivel


Son aquellos que se encuentran ms cercanos al lenguaje natural que usamos las personas.
Hay lenguajes de propsito general para cualquier tipo de aplicacin, como es el lenguaje C++ y de
propsito especfico que favorecen la programacin de ciertas aplicaciones, como el lenguaje PHP cuya
estructura es similar a la de C pero con elementos que facilitan la programacin de aplicaciones en pginas
Web.
Lenguajes de nivel medio
Se trata de un trmino en ocasiones para los lenguajes que se encuentran en un punto medio entre los dos
anteriores. Dentro de estos lenguajes podra situarse el lenguaje C ya que puede acceder a los registros del
sistema, trabajar con direcciones de memoria, todas ellas caractersticas de lenguajes de bajo nivel y a la vez
realizar operaciones de alto nivel.
Lenguajes Interpretados
Hay tcnicas en las que no requiere la generacin previa de un nuevo programa en cdigo de mquina,
la compilacin es justo a tiempo y es frecuentemente es usada para generar el cdigo de mquina por
medio de un intrprete que convierte el cdigo fuente en lenguaje de mquina al momento de solicitar la
orden. Por ejemplo las aplicaciones que manejan los navegadores Web.
NOTA: hoy en da existen muchas variaciones y combinaciones de las anteriores

Generaciones de Lenguajes.
La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o generaciones.
Primera generacin: lenguaje mquina programado directamente por medio de switches.
Segunda generacin: se crearon los primeros lenguajes ensambladores (y compiladores).
Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol
Cuarta generacin: Se refieren a las IDE1 (Medio ambiente integrado de desarrollo) que son visuales (tienen
paletas de componentes) y por lo mismo son capaces de generar cdigo por si solas. Estas herramientas se
desarrollaron principalmente gracias al paradigma Orientado a Objetos que hace posible la reutilizacin y la
modulacin de cdigo. Estas herramientas se basan en principios de ingeniera de software para
implementar sistemas complejos de manera rpida y eficaz, RAD (Rapid Aplication Development) a travs
de los cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje.
Quinta generacin: aqu se encuentran los lenguajes orientados a la inteligencia artificial.

Paradigmas de Programacin.

1 De las siglas: Integrated Development Environment

Un paradigma de programacin determina la forma de expresarse por medio de un lenguaje en el


cual se cambian las reglas sintcticas y semnticas al momento de pensar y disear un programa. Algunos
de los paradigmas y sus lenguajes representativos son:
Imperativo o por procedimientos: C, BASIC, Fortran, Pascal, Java, PHP, Pyton.
Funcional: como Scheme, Haskell, Miranda, SAP y estndar ML.
Lgico: Prolog en diversas versiones.
Declarativo: lgicos ej. Prolog. Algebraicos ej. Maude y SQL, funcionales ej. Haskell y Erlang
Orientado a objetos: como Smalltalk.
Programacin multiparadigma: es el uso de dos o ms paradigmas dentro de un programa.
Existen cientos de lenguajes de programacin, puedes echar un vistazo a la pgina
http://www.levenez.com/lang/ (enero 2015) ah se encuentra un rbol genealgico de lenguajes.

De la consulta del rbol genealgico de los lenguajes responde:


Cul fue el primer lenguaje y el ao en que apareci?

Este diagrama
una

Qu es un compilador?

muestra la secuencia para que un programa pueda ser ejecutado en


computadora.

Qu es un intrprete?

Qu es un ensamblador?

Qu es un lenguaje de programacin?

Para qu sirve el programa denominado "cargador" o "loader"?

Quin ejecuta las instrucciones de mquina?

Qu es un proceso?

Qu es una plataforma de programacin?

Qu es un lenguaje de alto nivel?

Qu es un lenguaje de bajo nivel?

Qu es un cdigo fuente?

Qu es el cdigo de mquina?

Subraya la respuesta correcta:


Una computadora digital es un dispositivo para:

a).- Resolver problemas de programacin


b).- Reconoce y ejecuta problemas de programacin
c).- Resuelve problemas ejecutando instrucciones dadas por un programador
d).- Programa y ejecuta instrucciones
El lenguaje o cdigo de mquina es:
a).- Un lenguaje binario con el que podemos comunicarnos con la computadora
b).- Un cdigo binario que resuelve problemas
c).- Un lenguaje complejo que programa y ejecuta instrucciones
d).- Un programa primitivo para hablar con la computadora
Un lenguaje de mquina funciona en:
a).- Cualquier tipo de computadora
b).- Cualquier plataforma de cmputo
c).- Solo en una computadora
d).- En un tipo o marca de computadora especfico
Un lenguaje de alto nivel funciona en:
a).- Un tipo de computadora
b).- Cualquier plataforma de cmputo
c).- Solo en una computadora
d).- Solo en un tipo o marca de computadora especfico
La secuencia para que un programa pueda ser ejecutado en una computadora es:
a).- Escribirlo, compilarlo, enlazarlo y cargarlo a memoria
b).- Escribirlo, agregar libreras, hacer el cdigo de mquina y cargarlo
c).- Compilarlo, cargarlo a memoria y agregarle libreras
d).- Compilarlo, interpretarlo, lenguaje mquina, cargarlo y meterlo a memoria RAM

Investiga que compiladores puedes usar para programar en lenguaje C.

2.2 El entorno de desarrollo.


IDE (Integrated Development Environment)
Son entornos de desarrollo aquellos programas a los que denominamos compiladores y que cuentan con las
herramientas necesarias para hacer programas. Se presenta el CodeBlocks que es una plataforma de
software libre para programar en lenguaje C. En la siguiente imagen puedes observar escritas las
instrucciones de un programa y la parte en donde se compila y ejecuta, as como la ventana de salida.

Archivo C - contiene
cdigo fuente escrito en C

Aplicacin - contiene cdigo de mquina ejecutable


(mi programa ms el link con las libreras).
Archivo O - contiene cdigo de mquina del cdigo
fuente sin haber ligado el cdigo de las libreras.

Salida en una ventana de sistema en modo de texto

Observa la imagen anterior y sobre la misma, seala y enumera lo siguiente:


1. Edicin del cdigo fuente.

2.
3.
4.
5.
6.
7.
8.
9.
10.

Marca error de sintaxis.


Contiene la funcin de traduccin de cdigo fuente a cdigo objeto.
Construye el cdigo ejecutable a partir del cdigo propio ms las libreras.
Ejecucin de un programa desde el compilador
Ejecucin de un programa de forma independiente o autnoma.
rea de mensajes de compilacin, link y ejecucin.
Ventana de output (salida) controlada por Windows.
Ventana de informacin sobre archivos, variables, proyectos.
Archivo de texto con el cdigo fuente.

El monitor como dispositivo de Salida


Las personas generalmente interactuamos con las aplicaciones a travs de una interfaz visual que es
presentada en un monitor.
Los modos de despliegue de un monitor son de dos tipos: modo texto y modo grfico.
El modo de texto es la forma ms simple de despliegue ya que no depende de la existencia de un controlador
grfico; en este modo solo se presentan letras, nmeros y algunos smbolos (ver cdigo ASCII) utilizando
para cada smbolo una pequea retcula o matriz de pixeles y el despliegue es monocromtico, es decir
usan una combinacin de dos colores, uno de fondo y otro para los smbolos.
En la siguiente imagen se muestra la salida del mensaje La suma de 5 + 2 = 7
en una ventana tipo Sistema Operativo MS-DOS.

La siguiente es una salida tipo texto en la


consola del IDE Java, NetBeans.

Esta es una salida con modo grfico de


despliegue.
GUIs (Graphic User Interface) traza todo
tipo de objetos pixel por pixel usando
colores: imgenes, videos, letras,
smbolos, etc.
Requiere de un controlador grfico.

2.3 El Lenguaje C.
En el ao 1967 Martin Richard creo el lenguaje BCPL (Basic Combined Programming Language) que fue la
base para la creacin de un lenguaje llamado b escrito por Ken Thompson en 1970 con la intencin de
recodificar el sistema operativo UNIX, que en su fase de arranque estaba codificado en lenguaje
ensamblador; como una sucesin del lenguaje b, Dennis Ritchie crea el lenguaje C en los laboratorios Bell
Telephone en 1972, ya especficamente para el diseo del sistema operativo UNIX.
La novedad que proporcion el lenguaje C sobre el b fue el diseo de tipos y dos estructuras de datos: las
uniones, y los arreglos (arrays), entre otras cosas. Por su clara estructura, potencia y flexibilidad su uso el
lenguaje C se difundi muy rpidamente ms all de los laboratorios Bell. Los programadores de todo el
mundo comenzaron a usarlo para escribir todo tipo de programas.
En 1983, el American National Standards (ANSI) formo un comit en para establecer una definicin estndar
del C, que llego a ser conocida como C estndar ANSI. Con algunas excepciones, los compiladores del C
modernos de adhieren a este estndar.

Copia las siguientes instrucciones escritas en lenguaje C en el recuadro derecho,


conservando el formato de manera exacta:

//Programa que escribe mi nombre


#include<stdio.h>

int main( ){
printf(Mi nombre es Juan);
printf( ) - Es una funcin de salida que sirve para
mostrar en pantalla el contenido de una cadena
con formato. En las funciones los parntesis sirven para encerrar los valores (denominados
argumentos) que son valores que se envan a la funcin para que trabaje:
printf ( ) es una funcin

printf( hola);

enva como argumento la cadena hola

Cadena - Es un conjunto de caracteres encerrados por comillas, indica que su contenido se usa
literalmente como texto:
Mi nombre es Juan

HOLA

El resultado es 25

5 + 2 = 7

En el programa anterior, qu es lo que veremos en la pantalla de salida?

Los programas tienen un orden o LOGICA, escribe en orden el siguiente programa:


}
#include<stdio.h>
return 0;
printf(Mi nombre es

);

int main( ){
//Programa que escribe un

Qu es lo que veremos en la pantalla de salida?

Las cadenas y secuencias de escape.

Todo lo que va encerrado en comillas es una cadena.


Pero por ejemplo qu pasara si la cadena que quieres expresar contiene comillas?
Lo que se hace es incluirlas usando caracteres o secuencias de escape
Una secuencia de escape permite incluir dentro de las cadenas distintos elementos como caracteres no
imprimibles, acciones o caracteres que entraran en conflicto con la cadena misma.

Secuencias de escape que utilizaremos (no son todas)


\n
Nueva lnea
\'
Comilla simple
\\
Barra diagonal inversa \0
Fin de cadena
Ejemplo:
Escribir un ttulo con comillas:

\"
\%

Comillas dobles
Smbolo de porcentaje

Programa que calcula permetros


printf( \ Programa que calcula permetros \ );

Relaciona la instruccin con su salida correspondiente:


1) printf( 1 2 \n 3);
2) printf(1\n 2, 3 );
3) printf( f \\ n);
4) printf( la letra es \n\ );
5) printf( \esta es una cadena\ );

_____esta es una cadena


_____la letra es n
_____1 2
3
_____f \ n

6) printf( esta es una cadena );


7) printf( - - - - -\n |
|\n- - - - -);
8) printf(la letra es n);
9) printf( c = 1 + 2);
10) printf( Incremento de ventas: 5\%);

_____la letra es n
_____1
2, 3
_____esta es una cadena
_____ - - - - |
|
----_____Incremento de ventas: 5%
_____c = 1 + 2

A continuacin, escribe el cdigo que produce esta salida.

Recuerda y completa lo siguiente:


Las instrucciones terminan con
Los bloques de instrucciones de encierran con
Estas se colocan para que el compilador omita la o las lneas como
instrucciones
Son directivas para incluir el cdigo delas funciones de librera
Es una funcin
Orden en que la computadora leer y ejecutar la secuencia de
instrucciones
Que accin realiza la funcin printf( )

Lo que se escribe entre comillas se llama


Que cosa indica la clusula return 0
Que indica la lnea int main( )
Lo que se pasa a las funciones dentro de parntesis se llaman
Sirven para incluir caracteres especiales o acciones en las cadenas

Almacenamiento de datos en la memoria RAM.


Para la mayora de los programas, se requiere reservar memoria para ir guardando los datos que se van
necesitando en los procesos. Para poder utilizar la memoria RAM de una computadora es necesario indicarlo
a travs de la declaracin de variables:

int

suma;

Es la lnea que debes agregar para poder almacenar en la memoria en este caso
un nmero entero (int) en una variable a la que llamamos suma.

En el programa anterior has escrito la cadena:


La suma de 5 + 2 = 7 que en realidad solo es un mensaje escrito en forma de cadena.
Sin embargo las computadoras fueron hechas para realizar clculos!

//Programa que suma 5 + 2

Declaramos una variable con el nombre suma que


servir para almacenar en la RAM el resultado de
la expresin aritmtica 5 + 2.

#include<stdio.h>
int main( ){
int

suma;

suma = 5 + 2;
printf(La suma de 5 + 2 es

es el operador de asignacin
(Nota: NO se lee como Igual)

indica que el resultado obtenido del lado


derecho ser almacenado en la memoria
que reservamos con el nombre suma.

La palabra int (integer entero) indica que reservamos 4 bytes = 32 bits (ver tabla de tipos) para
almacenar un nmero en la memoria RAM con representacin entera, tal como se vio en el captulo anterior.
Expresin Aritmtica: esta se forma como un conjunto de constantes, variables y operadores
aritmticos, su solucin computacional tiene un orden o precedencia.

Obtener el valor de las siguientes expresiones aritmticas:


Suponer las variables k = 10 y m = 21
5 * 8 / 2 + 6 + 9 - 18 _________

3 + k / 10 * 25 + (-8 - m) _________

5 * (8 / 2) + 6 + (9 - 18) _________

(3 + k) / (10 * 25 + (-8 - m)) _______

Escribe la expresin:
El 5% de la suma de tres nmeros: _____________________________________
El rea de un tringulo: _______________________________________________

El promedio de 5 calificaciones: ________________________________________

( 3x )

2 xy +

___________________________________________________

( y 1 )2

Caracteres de Control o Formato.


Observa que en la cadena de la funcin printf( La suma de 5 + 2 es %d , suma);
se ha incluido el caracter %d, denominado carcter de control o carcter de formato.
printf(La suma de 5 + 2 es %d, suma);

Este carcter de formato indica que el contenido


de la variable suma ser insertada en la
cadena al momento de mostrarla.

Formateador
Salida
%d %i
entero en base 10 con signo (int)
%o
entero en base 8 sin signo (int)
%X
entero en base 16, letras en mayscula (int)
%f
decimal de precisin simple (float)
%e
notacin cientfica (decimal simple doble) minscula
%c
caracter (char)

Formateador Salida
%u
entero en base 10 sin signo (int)
%x
entero en base 16, letras en minscula (int)
%lf
decimal de precisin doble
%E
notacin cientfica (decimal simple doble) mayscula
%s
cadena de caracteres (string)

Las variables y sus tipos:


Como hemos visto, la memoria RAM que se utiliza para almacenar los datos de un programa debe ser
reservada, esto lo hacemos a travs de la Declaracin De Variables.
Si por ejemplo requerimos almacenar la edad una persona, seleccionamos el tipo de memoria adecuada y
asignamos un nombre, as declaramos: int edad;
Lo que implica que el sistema operativo de la computadora busque 4 bytes libres consecutivos, es decir 4 x
8 = 32 bits en los cuales nosotros podemos almacenar cualquier edad (dentro de un dominio de valores).

Con los tipos de datos que utilizamos en el lenguaje C, es posible el almacenamiento en las distintas
representaciones que conoces, iniciaremos con tres tipos elementales:
Tipo de
Dato
int
float
char
o

Descripcin
Entero
Real (Nmero en
coma flotante)
Carcter

Nmero de
Rango de Valores que permite
bytes tpico
4
-2147483648 a +2147483647
Positivos: 3.4E-38 a 3.4E38
4
Negativos: -3.4E-38 a -3.4E38
1
-128 a 127

Ejemplo
32123
32123.0

Nota que el caracter se encierra en una sola comilla, la cadena en doble comilla.

Relaciona la declaracin de variables central con la o las formas de asignacin correcta .


edad = 10;
precio = $22.50;
respuesta = s;

int edad;
float precio;
char respuesta;

edad = 10.0;
precio = 22.50;
respuesta = s;

Usa la cadena con formato para dar una adecuada salida a los datos.
En estos ejemplos se ve como se declara e inicializa al mismo tiempo. Que salida tiene?
int suma = 5 + 2;
int edad = 25;
float precio= 10 * 1.1;
char resp1 = A;
char resp2 = B;

printf( %d + %d = %d , 5,2,suma);
printf( La edad es: \n
%d, edad);
printf( 5 + 2 = %f ,5.0 + 2);
printf( El resultado es: %f, precio );

________________________
________________________
________________________
________________________

printf( 1) %c 2)%c, resp1, resp2 ); ________________________


printf( La ultima letra del alfabeto es %c , Z);

Entrada de Datos por Teclado


La intencin de crear programas, es que estos puedan realizar procesos con cualesquiera datos. Con la
instruccin:
suma = 5 + 7;
dicho programa solo sabe sumar 5 + 7
suma = a + b;
las constantes podemos cambiarlas por variables
que podemos llenar con datos proporcionados desde el teclado.

Transcribe, declara las variables necesarias e incluye la expresin que calcula.


//programa que suma dos numeros
#include<stdio.h>

int main( ){

printf(Precio de una silla: );


scanf(%f,&precio);
printf(Cuantas sillas compra: );
scanf(%d,&cantidad);

Qu es lo que veremos en la pantalla?

scanf( ) - Detiene la ejecucin del programa para esperar el ingreso de datos desde el teclado.
El buffer de teclado se vaca al oprimir<enter> llevando el dato a travs de los buses para ponerlo en la
memoria que indica la variable asociada. La cadena de control del scanf( ) solo tiene caracteres de control.
Uso del & Observa que la variable asociada utiliza el smbolo &, esto indica que la funcin scanf( ) tendr la
capacidad de poner el valor ingresado en la direccin de memoria de dicha variable.

Escribe un programa para calcular reas de tringulos: rea = base por altura entre 2.

Qu es lo que veremos en la pantalla?

2.4

Elementos de la programacin en C.

Sintaxis del lenguaje c se basa principalmente en el estndar ANSI2. A continuacin se proporcionan los
elementos de programacin que generalmente se utilizan en los libros y la mayora de los compiladores.

2 ANSI, son las siglas del American National Stndars Institute.

Estructura bsica de un programa


Las instrucciones de un programa se escriben por bloques de instrucciones llamadas funciones.
Existe una funcin que est presente en todos los programas escritos en c, su misin es marcar el inicio y fin
de la ejecucin del programa; es la funcin principal, la primera que se ejecuta; es la funcin main( ).

[ <directivas_del_preprocesador> ]

La palabra main contiene al bloque de


instrucciones principal de un programa,

int main(){
[ <declaracion_de_variables> ]
<bloque_de_instrucciones>
}

Todos los bloques de instrucciones de un


programa se encierran dentro de llaves
{

Los corchetes [ ] que ves en esta especificacin


solo indican que lo que contienen es opcional. Se puede o no utilizar en un programa.

Archivos de encabezado (headers):


El lenguaje c proporciona un conjunto de libreras en donde se definen las funciones que podemos utilizar,
como el printf( ) y el scanf( ). Las libreras se requieren para checar la sintaxis (si lo que escribiste est buen
escrito: puntos y comas, parntesis, llaves, palabras, etc.) y tambin para incluir su cdigo (link) en el nuestro
al momento de la compilacin

#include <stdio.h>

#include<string.h>

#include<math.h>

Tipos de datos y sus modificadores:


La lista completa de tipos se muestra a continuacin.
Nmero de
Tipo de Dato
Descripcin
Rango de Valores que permite
bytes tpico
short
Entero corto
2
-32768 a 32767
int
Entero
4
-2147483648 a +2147483647
long
Entero largo
4
-2147483648 a +2147483647
char
Carcter
1
-128 a 127
Con los tipos enteros pueden utilizarse los calificadores signed
(con signo) o
unsigned (solo positivos).
Usando estos calificadores podemos tener los siguientes tipos enteros:
Nmero de
Tipo de Dato
Descripcin
Rango de Valores que permite
bytes tpico
signed short
Entero corto
2
-32768 a 32767
unsigned short
Entero corto sin signo
2
0 a 65535
signed int
Entero
4
-2147483648 a +2147483647
unsigned int
Entero sin signo
4
0 a 4294967295
signed long
Entero largo
4
-2147483648 a +2147483647

unsigned long
signed char
unsigned char

Entero largo sin signo


Carcter
Carcter sin signo

4
1
1

0 a 4294967295
-128 a 127
0 a 255

El calificador signed se utiliza por omisin, es decir que no necesitas escribirlo (observa).
El calificador unsigned si se require especificar y se utiliza cuando los valores posibles no incluyen
nmeros negativos, observa que al no utilizar el bit de signo la capacidad es mayor.
La forma de utilizarlo es: unsigned int x;
equivale a
unsigned x;

Tipos de datos numricos reales:


Tipo de
Dato

Descripcin

Nmero de
bytes tpico

float

Real (Nmero en coma flotante)

double

Real doble(Nmero en coma


flotante de doble precisin)

long
double

Real doble largo

10

Rango
Positivos: 3.4E-38 a 3.4E38
Negativos: -3.4E-38 a -3.4E38
Positivos: 1.7E-308 a 1.7E308
Negativos: -1.7E-308 a -1.7E308
Positivos: 3.4E-4932 a 1.1E4932
Negativos: -3.4E-4932 a -1.1E4932

Identificadores
Son los nombres que los programadores asignamos a las variables, constantes o funciones.
Todo identificador debe cumplir las siguientes reglas de sintaxis:
1. Consta de uno o ms caracteres.
2. El primer carcter debe ser una letra o el carcter subrayado _, mientras que, todos los dems
pueden ser letras, dgitos o el carcter subrayado _. Las letras pueden ser minsculas o maysculas
del alfabeto ingls. As pues, no est permitido el uso de las letras '' y ''.
3. No pueden existir dos identificadores iguales, es decir, dos elementos de un programa no pueden
nombrarse de la misma forma. Lo cual no quiere decir que un identificador no pueda aparecer ms de
una vez en un programa.
De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el
carcter subrayado. Es importante resaltar que las vocales no pueden llevar tilde ni diresis.

Reglas de Estilo
La lectura de cdigo es fundamental para los programadores, de manera que se siguen algunas reglas de
estilo que favorecen la comprensin de cdigo.
Escribe un identificador con significado:

suma

ventas

Las variables empiezan con minscula:


Las constantes se escriben con maysculas:
Las palabras compuestas tienen forma de joroba de camello:
Igualmente para las funciones:

nombre
TOTAL
PI
ventasMensuales
areaTrabajo
totalVentas( ) suma( )

Palabras Reservadas
Las palabras reservadas son identificadores predefinidos (tienen un significado especial). En todos
los lenguajes de programacin existe un conjunto de palabras reservadas. En lenguaje C (ANSI C89), existen
las siguientes:

auto

const

double

float

int

short

struct

unsigned

break

continue

else

for

long

signed

switch

void

case

default

enum

goto

register

sizeof

typedef

volatile

char

do

extern

if

return

static

union

while

Declaracin de Constantes
Una constante simblica representa (sustituye) a una secuencia de caracteres, en vez de representar a un
valor (dato almacenado en memoria), para declarar una constante simblica, en C, se utiliza la

directiva del preprocesador #define, nota que no usa ni el operador = ni punto y coma al final.
#define <nombre_de_la_constante> <secuencia_de_caracteres>
Ejemplos:

#define PI 3.14159265359
#define N 10

Comentarios
Los comentarios se escriben en el cdigo para recordar cosas, por lo que no son instrucciones.
Comentario de bloque:

/*

Empieza con diagonal asterisco, escribes uno o varios renglones


Termina con asterisco diagonal */
Comentario de lnea: // se escribe con doble diagonal y considera el comentario hasta fin de lnea

Directivas del preprocesador


En lenguaje C existen 12 directivas del preprocesador, solo utilizaremos las marcadas con rojo:

#define
#elif

#endif
#error

#ifdef
#ifndef

#line
#pragma

#else
#if

#include
#undef

Expresiones y Operadores Aritmticos


La Unidad Aritmtica y Lgica (UAL) es capaz de realizar operaciones aritmticas que implementamos a
travs de expresiones que integran OPERADORES aritmticos, variables y constantes. Aqu est la lista de

todos los operadores tanto aritmticos, lgicos y de tratamiento de bits, esta lista est en orden de
precedencia, es decir, es el orden en que se realizan las operaciones de una expresin.

2.5

Metodologa para Programar.

Pensar Antes de Programar


Tanto para el software ms sencillo hasta para el ms complejo como el que sueles utilizar en tu
computadora, la programacin con la que esto se desarrolla, debe ser elaborada de una forma muy metdica
y muy precisa, pues los programas no deben fallar. Los programas siempre deben hacer de forma ntegra
todo aquello para lo que fue construido.
Solo imagina si el procesador de textos con el que realizas tu tarea a veces fallara y por lo mismo perdieras
todos tus datos. Qu pasara si por algn fallo de programa, en la Secretara de Educacin alguno de los
procesos revolviera o defesara los datos de las personas.
Mucho a lo que se refieren los temas de programacin de computadoras y las disciplinas de anlisis y diseo
de sistemas e ingeniera de software, se refieren a la parte metodolgica y sistemtica para producir
software de calidad. Muchas de las actividades que realizaras en este cuaderno de ejercicios son una
primera aproximacin para que t puedas desarrollar esta parte metodolgica.

Investiga a que se le considera como Software de Calidad.

A la solucin de un problema se le conoce como algoritmo, para desarrollar algoritmos se utilizan 4 niveles
de abstraccin:

1 interfaz

2 datos

3 procesos

4 mdulos .

Una vez que conoces la solucin podrs codificar (escribir cdigo) con gran soltura y facilidad!!
Por ejemplo: Un estudiante requiere calcular el permetro y el rea de un crculo, por lo que un programa que
calcule permetros y reas de crculos le sera de gran utilidad, no solo para una vez si no para todas las
ocasiones que as lo requiera.
Primero debemos conocer que es y cmo se calculan el permetro y rea de un crculo:
Permetro = 2 x x r
en donde r es el radio del crculo
rea = x r2
1. Diseemos entonces una interfaz (primera abstraccin) en papel, aqu debemos detectar si el
programa requiere:
entrada de datos
el proceso es una caja negra: por el momento nos olvidamos de cmo se realizan los procesos
diseamos la salida:
T decides la colocacin y redaccin de los enunciados, esto debe ser preciso y comprensible.
Este es el modelo de informacin que define la solucin que t le estas dando al problema.

2. Usamos la interfaz anterior para descubrir algunas de las variables (memoria RAM)
requieren para almacenar los datos del programa (segunda abstraccin).
Recuerda que no necesariamente son todas las variables.

que se

3. Igualmente usamos la interfaz y la T de variables para mecanizar las acciones que requiere el
proceso (tercera abstraccin), aqu el proceso deja de ser una caja negra y segn sea la dificultad se

puede proceder a la codificacin directa o al empleo de otras herramientas grficas como son los
diagramas de flujo para establecer los procesos.

La intencin de este mtodo es que cuentes


con los elementos suficientes que te permitan
DETECTAR los elementos del programa y
RECORDARLOS al momento de codificar.
Conforme adquieras habilidad t mismo usars
los elementos que ms te
acomoden.

//programa que calcula perimetro y area de circulos


#include<stdio.h>
int main( ){
float radio, permetro, area;

printf( Calcula Area y Perimetro \n);


printf(

CIRCULO \n\n);

printf(Radio del circulo: );


scanf(%f, &radio);
perimetro = 2 * 3.14159265 * radio;
area =

3.14159265 * (radio * radio);

printf(Perimetro = %f \n\n, perimetro);


printf(Area = %f \n\n, area);

La abstraccin de mdulos (cuarta


abstraccin) la utilizaremos hasta el
Captulo 3.

2. Codificacin: partiendo de lo que


has imaginado y puesto en tus
diseos puedes
Escribir tu cdigo en papel.
Un programador debe aprender a
respetar los diseos. No debes
cambiar nada que hayas puesto
en el diseo, al menos que se
requieran algunos ajustes.

El diseo y el cdigo deben


de coincidir.
3. Programacin:
programa

return 0;
}

Usando
tu
compilador

simplemente transcribes el programa que has codificado, una vez que no tenga errores de sintaxis
podrs ejecutarlo.
Errores de Lgica: Si al ejecutar un programa los resultados o el comportamiento del programa no
son los esperados, significa que existe algn error lgico.
Mecanizacin: es el proceso de leer y seguir el cdigo de un programa tal y como lo hace la
computadora, en una mecanizacin proporcionas valores a las variables para ver su comportamiento y
as poder detectar posibles desviaciones en el flujo del proceso. En los compiladores existe una
herramienta para este propsito llamado debugger. En este cuaderno usaremos la mecanizacin como
medio de comprensin de los flujos de instrucciones en un programa.
4. Las pruebas: una buena prueba consiste en ejecutar varias veces el programa usando datos buenos y
datos malos, con lo que podrs ver como se porta tu programa en todas las situaciones y en todo caso
poder detectar posibles errores de lgica

Cdigo y vista final

En adelante debemos
presentar SIEMPRE los
programas con todos los
pasos.

Los Diagramas de Flujo

Un diagrama
proceso para

de flujo es la representacin grfica basada en algunos smbolos de


el desarrollo de algoritmos.

Es una de
programa.

las herramientas ms eficientes para desarrollar la lgica de un

Se

puede usar junto o en lugar de una mecanizacin.

En este

cuaderno no se tratan a profundidad pero puedes probar!!!

Siguiendo el mtodo, elabora un programa que dado grados Celsius muestre grados Fahrenheit
y dado grados Fahrenheit muestre grados Celsius.
o
o

Estas son las frmulas.

F = 1.8 C * + 32
C = (oF 32) / 1.8
RAM

En una tienda se requiere un programa para elaborar facturas (notas) con IVA.
Se venden tres productos: gomas a $2.00 lpices a $6.00 cuadernos a $20.00
El IVA se calcula como el 12% del total de la compra
Se requiere mostrar desglosado:
Venta total,
IVA y Total a Pagar.

RAM

Escribe un programa que pida los coeficientes de una ecuacin de segundo grado y
calcule sus soluciones (ax + bx + c = 0).

RAM

Recuerda lo que has aprendido llenando la siguiente tabla.


EJEMPLO
Tipos de Datos
Declaracin de Variables
Comentario de Bloque
Comentario de Lnea
Asignacin
Cadena de caracteres
Caracteres de Control
Caracteres de Escape
Asignacin
Operadores Aritmticos
Precedencia de los
Operadores
Expresin Aritmtica
Constantes Definidas
Un caracter
Constante entera
Constante flotante
Funcin de entrada
Funcin de salida
Directiva para el uso de
libreras

Funcin principal
Sentencia de salida de funcin

Estructuras de Control
El paradigma de programacin estructurada se basa en el uso de tres estructuras de control
que permiten tres formas nicas para el control de la ejecucin de un programa, su forma
diagramtica se ve como sigue:
La secuencia

La condicin

if ( ) {

if ( ) { } else {

La repeticin

for( ) { }
while( ){ }

do{ }while( )

Observa que cada estructura tiene la caracterstica de tener un nico punto de entrada y un nico punto de
salida. Esto te permite pensar en trminos de procesos independientes,
es decir que termina un proceso y empieza otro.
Secuencia: Como se ha visto en los programas anteriores (secuenciales), la ejecucin de un programa se
realiza de arriba hacia abajo, es decir pasa secuencialmente de una instruccin a la siguiente y a la siguiente
o de una estructura condicional o de repeticin a lo que
#include <stdio.h>
sigue, que puede ser otra clusula secuencial, un condicin o
int main (){
repeticin.
int x;

Sentencias condicionales
printf(Dame un numero: );
scanf(%d,&x);
if (x > 0) {
printf(El numero %d es positivo,x);
}
return 0;
}

La sentencia

if

nos permite elegir si se ejecuta o no un bloque de instrucciones dada una condicin.


if (x > 0) {
printf(El numero %d es positivo, x);
}
-Utiliza una expresin lgica x > 0
-Valor de la expresin lgica verdadero o falso
Bloque de instrucciones dado que
se cumple la condicin
{ }
Nota que aunque estas clusulas de control utilizan parnesis para encerrar las expresiones lgicas y de
control, estas NO son funciones.
Expresin lgica:
Es aquella expresin formada por constantes, variables, operadores y conectores lgicos.
Las expresiones lgicas son evaluadas en la UAL3 y obtienen un valor true (verdadero) o false (falso).
Una lista corta <no completa> tanto de los operadores como de conectores lgicos, los operadores
compuestos se escriben juntos:
Operadores lgicos: <

menor
y menor igual
igual
no igual
mayor
mayor igual
not (negacin)

<=
==
!=
>
>=
!
Conectores lgicos:

&& and
||
or

y (and)

V
V
F
F

&&
&&
&&
&&

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

(y)
()

equivale

c <= 5

a < b && a > c


a<b || a>c

o (or)

V
F
V
F

V
F
V
F

Ejemplo:
#include <stdio.h>
void main (){
int x;

V
V
F
F

||
||
||
||

V
F
V
F

V
F
V
F

Tablas de Verdad sirven para evaluar expresiones


lgicas que contienen conectores lgicos.

< if > ms la sentencia <else>


Una sentencia if permite ejecutar otro bloque diferente de
cdigo en el caso de que la condicin no se cumpla.

Nota que la sentencia else


(Puedes leerla como si no)
printf(Dame un numero: );
scanf(%d,&x);
if (x >= 0) {
3En el lenguaje
c, numero
cualquier%d
expresin
ya sea x);
aritmtica o ya sea lgica tiene un valor booleano:En el lenguaje C falso
printf(El
es positivo,
se produce si el valor de una expresin es cero y verdadero si tiene un valor distinto de cero.
} else {
printf(El numero %d es negativo, x);
}
}

Tambin encierra con { } su propio bloque de instrucciones.


Al bloque else se le conoce como bloque de omisin pues al no contar con una condicin, el control de
flujo entrar en todo caso en donde no se cumpla el if.

Identacin de instrucciones
Identar es recorrer o dejar una pequea sangra cada que se inicia un bloque hasta que termina.
La identacin es necesaria para identificar las estructuras que integran los distintos procesos al momento de
leerlos.
La forma de identacin es:

#include<stdlib.h>
int main( ){
float nota;

Instruccin 1
{
Instruccin 2
Instruccin 3
..
}
Instruccin 4

las instrucciones dentro de cada bloque


se recorren y al terminar regresan al nivel
anterior.

La sentencia <else if> o < if > de escalera


En la sentencia else (y si no) puede a la vez depender de
una nueva condicin sobre la misma.

printf ("Dame una nota: ");


scanf ("%f", &nota);
if (nota > 9){
printf("Sobresaliente");

Es decir, podemos aumentar las posibilidades de decisin


adems del simple si o no, por lo que es posible incluir el

}else if(nota >= 7){


printf("Bueno);

Un if de escalera puede o no terminar con un else simple o


de omisin, segn la lgica del programa.

}else if(nota >= 5){


printf("Aprobado");

}else{

}else{
printf ("Reprobado);

Que es todo lo dems que no haya cumplido algunas de


las condiciones, lgicamente un else siempre va al final.

} else if ( ){

La condicin realiza una transferencia de control


hacia abajo.

Escribe las expresiones lgicas correspondientes:

Expresin lgica

verdadero/falso

22 es mayor que 13
22.5 no es menor que 3.44
'c' no es mayor que 'f'
"coche" no es igual que "Coche"
33 mayor igual que 34 y 22 no es menor que 14

9 mayor que 3 y 8 mayor que 9


9 igual que 3 y 8 mayor igual que 6
9 igual que 3 8 mayor igual que 6
9 mayor que 3 y 8 mayor igual que 9
9 menor que 3 y 8 mayor que 9
33.0 es mayor igual que 33
32 igual a (22+10) o 32 igual a (12+20)

Dados tres nmeros enteros, utiliza la clusula if para imprimirlos en orden ascendente
(no usar vectores). Ej.

dados

10 3 5

imprime

3 5 10

RAM

Elaborar programa si a, b y c son las longitudes de los lados de un tringulo, entonces el rea del
tringulo se puede calcular mediante la frmula de Hern como:

area= s( sa)( sb)(sc)

en donde

s=

a+ b+c
2
RAM

Elabora un programa para calcular el rea de un tringulo conociendo las coordenadas de sus
vrtices. (Investiga la solucin)

RAM

Elabora un programa para calcular el rea de un tringulo


Utilizando la librera math.h para usar la funcin seno

1
area= . a . b . sen C
2
RAM