Sunteți pe pagina 1din 59

Gua del Mdulo Programacin Bsica

Programacin bsica
rea(s):

Tecnologas de la informacin y comunicacin

Carrera(s):

Profesional Tcnico Bachiller y Profesional Tcnico Bachiller en Informtica

Modelo Acadmico de Calidad para la Competitividad

Elaborado por: Ing. Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica 1. Manejo de los componentes del lenguaje C para el desarrollo de un programa...........1 1.1 Identifica los elementos y las caractersticas de un programa desarrollado en lenguaje C, de acuerdo con estndares internacionales. ................................................... 1 1.1.1. Desarrollo de programas en lenguaje C ............................................................... 1 1.2 Organiza y ordena bloques de cdigo para resolver una situacin dada mediante estructuras de control de flujo. ........................................................................................ 27 1.2.1 Desarrolla programas en lenguaje C que utilicen estructuras de decisin y de control de flujo. ............................................................................................................ 27 2. Administracin de funciones desarrolladas en lenguaje C. ........................................33 2.1 Automatiza operaciones mediante la creacin de funciones para la agilizacin de procesos. ........................................................................................................................... 33 2.1.1 Desarrolla programas en lenguaje C que utilicen funciones ............................... 33 2.2 Maneja memoria del equipo mediante la racionalizacin y reservacin de la misma. .......................................................................................................................................... 37 2.2.1 Desarrolla programas en lenguaje C que utilicen arreglos de diferentes dimensiones y que manejen memoria dinmica mediante pilas, colas y listas........... 37 Prcticas para el laboratorio .........................................................................................48

Modelo Acadmico de Calidad para la Competitividad

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Programacin bsica
1. Manejo de los componentes del lenguaje C para el desarrollo de un programa
1.1 Identifica los elementos y las caractersticas de un programa desarrollado en lenguaje C, de acuerdo con estndares internacionales.
1.1.1. Desarrollo de programas en lenguaje C A. Desarrollo de rutinas de programacin Anlisis de requerimientos El objetivo principal de esta fase es la consecucin, comprensin y explicacin de los diversos requisitos para la construccin del programa. Los requisitos son, bsicamente, todos los elementos y caractersticas que son requeridas, necesitadas o deseadas por el usuario. Existen dos tipos de requerimientos: Requerimientos propios del problema Requerimientos deseables para el programa Dentro de la etapa de anlisis, existen dos tipos diferentes de actividades: 1. Anlisis del problema Durante esta etapa, los analistas ocupan su tiempo en el entendimiento del espacio problema. En esta actividad, los analistas deben trabajar y entrevistarse con el personal con mayor conocimiento del problema, que les permita identificar todas las posibles necesidades y restricciones sobre la solucin del problema. Al culminar esta etapa, los analistas deben poseer un completo entendimiento del problema a solucionar. Algunos desarrollos de software pueden requerir de muy poco, o ningn, anlisis del problema. En particular, el anlisis del problema slo es necesario para problemas nuevos, difciles o an no resueltos. 2. Descripcin de la solucin En esta etapa, el trabajo de los analistas se centra en describir el comportamiento externo que se desea del sistema a construir. Este comportamiento debe resolver claramente el
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

1/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

problema que se conoci adecuadamente en la etapa anterior. En este momento se deben resolver conflictos de visin, eliminar inconsistencias y ambigedades. El producto final es una descripcin general del comportamiento del sistema ideal (posible de ser realizado) que satisfaga el problema. Edward Yourdon lo define como el "modelo de la tecnologa perfecta". A pesar que las dos etapas presentadas para el anlisis de requerimientos poseen objetivos distintos, es muy poco probable que puedan efectuarse de manera secuencial en el tiempo. En muchas ocasiones las dos etapas se desarrollan en conjunto y se complementan unas a otras. Algoritmos Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programacin concreto) un algoritmo. Puede haber programas que no se ajusten a un algoritmo (pueden no terminar nunca), en cuyo caso se denomina procedimiento a tal programa. Pseudocdigos Un pseudocdigo o falso lenguaje, es una serie de normas lxicas y gramaticales parecidas a la mayora de los lenguajes de programacin, pero sin llegar a la rigidez de sintaxis de estos, pero sin la fluidez del lenguaje coloquial. Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programacin, con la misma validez semntica, normalmente se utiliza en las fases de anlisis o diseo de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniera de software. El pseudocdigo describe un algoritmo utilizando una mezcla de frases en lenguaje comn, instrucciones de programacin y palabras clave que definen las estructuras bsicas. El objetivo del pseudocdigo es permitir que el programador se centre en los aspectos lgicos de la solucin, evitando las reglas de sintaxis de los lenguajes de programacin. No siendo el pseudocdigo un lenguaje formal, los pseudocdigos varan de un programador a otro, es decir, no hay un pseudocdigo estndar.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

2/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

El pseudocdigo es una herramienta gil para el estudio y diseo de aplicaciones, veamos un ejemplo de pseudocdigo, que podramos definir como: lenguaje imperativo, de tercera generacin, segn el mtodo de programacin estructurada. Diagramas de flujo Los diagramas de flujo representan la forma ms tradicional para especificar los detalles algortmicos de un proceso. Se utilizan principalmente en programacin, economa y procesos industriales; estos diagramas utilizan una serie de smbolos con significados especiales. Son la representacin grfica de los pasos de un proceso, que se realiza para entender mejor al mismo. Son modelos tecnolgicos utilizados para comprender los rudimentos de la programacin lineal. Otra definicin del diagrama de flujo es la siguiente: "Es un esquema para representar grficamente un algoritmo. Se basan en la utilizacin de diversos smbolos para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conectan por medio de flechas para indicar la secuencia de operacin. Para hacer comprensibles los diagramas a todas las personas, los smbolos se someten a una normalizacin; es decir, se hicieron smbolos casi universales, ya que, en un principio cada usuario podra tener sus propios smbolos para representar sus procesos en forma de Diagrama de Flujo. Esto trajo como consecuencia que slo aquel que conoca sus smbolos, los poda interpretar. La simbologa utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse a un patrn definido previamente." B. Identificacin de elementos del lenguaje C Qu es el lenguaje C? EL lenguaje C es el resultado de un proceso de desarrollo que inici con un lenguaje denominado BCPL. Este influenci a otro llamado B (inventado por Ken Thompson). En los aos 70; ste lenguaje llev a la aparicin del C. Con la popularidad de las microcomputadoras muchas compaas comenzaron a implementar su propio C por lo cual surgieron discrepancias entre s. Por esta razn ANSI (American National Standards Institute, por sus siglas en ingls), estableci un comit en 1983 para crear una definicin no ambigua del lenguaje Ce independiente de la mquina que pudiera utilizarse en todos los tipos de C.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

3/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Algunos de las C existentes son: Quick C C++ Turbo C Turbo C ++ Borland C Borland C++ Microsoft C etc. C es un lenguaje de programacin de nivel medio ya que combina los elementos del lenguaje de alto nivel con la funcionalidad del ensamblador. Su caracterstica principal es ser portable, es decir, es posible adaptar los programas escritos para un tipo de computadora en otra. Otra de sus caractersticas principales es el ser estructurado, es decir, el programa se divide en mdulos (funciones) independientes entre s. El lenguaje C inicialmente fue creado para la programacin de Sistemas operativos Intrpretes Editores Ensambladores Compiladores Administradores de bases de datos. Actualmente, debido a sus caractersticas, puede ser utilizado para todo tipo de programas. Qu es el ANSI C? La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas. En la prctica, los programadores suelen usar elementos no-porttiles dependientes del compilador o del sistema operativo.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

4/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Cul es la estructura general de un programa en C? Aunque cada uno de los programas es distinto, todos tienen caractersticas comunes. Los elementos de un programa en C son los siguientes:
Comentarios Inclusin de archivos main() { variables locales flujo de sentencias } Definicin de funciones creadas por el programador utilizadas en main()

Veamos en qu consiste cada uno: Se identifican porque van entre diagonales y asterisco. Nos sirve para escribir informacin que nos referencie al programa pero que no forme parte de l. Por ejemplo especificar que hace el programa, quien lo elabor, en qu fecha, que versin es, etc.
Comentarios:

Consiste en mandar llamar a la o las bibliotecas donde se encuentran definidas las funciones de C (instrucciones) que estamos utilizando en el programa.
Inclusin de archivos:

En realidad, la inclusin de archivos no forma parte de la estructura propia de un programa sino que pertenece al desarrollo integrado de C. Se incluye aqu para que el alumno no olvide que debe mandar llamar a los archivos donde se encuentran definidas las funciones estndar que va a utilizar. En C, todo est constituido a base de funciones. El programa principal no es la excepcin. main() indica el comienzo de la funcin principal del programa la cual se
main():

Antes de realizar alguna operacin en el programa, se deben declarar la(s) variable(s) que se utilizarn en el programa.
Variables locales: Flujo de sentencias:

Es la declaracin de todas las instrucciones que conforman el

programa.
Definicin de funciones creadas por el programador utilizadas en main():

Finalmente, se procede a definir el contenido de las funciones utilizadas dentro de main(). Estas contienen los mismos elementos que la funcin principal.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

5/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Bibliotecas El lenguaje C es muy simple. Carece de tipos y servicios que forman parte de otros lenguajes. No tiene tipo booleano, ni manejo de cadenas, ni manejo de memoria dinmica. No obstante, el estndar de C define un conjunto de bibliotecas de funciones, que necesariamente vienen con todo entorno de compilacin de C y que satisfacen estos servicios elementales. Las interfaces de estos servicios vienen definidas en unos ficheros cabeceras ( header files). El nombre de estos ficheros suele terminar en .h Algunos de los servicios proporcionados por las bibliotecas estndares son: entrada y salida de datos (stdio.h) manejo de cadenas (string.h) memoria dinmica (stdlib.h) rutinas matemticas (math.h) Declaracin de funciones, variables, constantes y macros. Las variables se utilizan para guardar datos dentro del programa. Hay que declarar las variables antes de usarlas. Cada variable tiene un tipo. Declaracin:
tipo nombre;

Ejemplo:
int pepe;

Las variables globales se declaran justo antes de main(). Funcin main () En C, todo est constituido a base de funciones. El programa principal no es la excepcin. main() indica el comienzo de la funcin principal del programa la cual se delimita con llaves.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

6/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Comentarios En el C original, tienen la forma /* cualquier texto */ Los comentarios se pueden extender varias lneas No se pueden anidar comentarios (comentarios dentro de otros) En C++ se usan tambin comentarios de una sola lnea. La sintaxis es
// cualquier texto

Todo lo que se escriba a partir de las dos barras es un comentario. El comentario termina con el final de la lnea. Ejemplos:
{ /* Esto es un comentario que ocupa varias lneas */ // esto es un comentario de C++ // y esto es otro comentario }

C. Reconocimiento del entorno de trabajo Editor de C. Turbo C es un entorno de desarrollo integrado y compilador desarrollado por Borland para programar en lenguaje C. Su primera versin es de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

7/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Fue el compilador ms popular para desarrollar en C en entornos MS-DOS. Se le considera el primer IDE para C disponible para dicha plataforma. Fue sustituido por Turbo C++ en 1990. ste lo fue, a su vez, por el Borland C++, disponible tambin para Windows. Tras el Borland C++ lleg el C++ Builder. Tanto el Turbo C 2.0 como el Turbo C++ 1.0 pueden conseguirse gratuitamente en la web de Borland desde el ao 2000. En septiembre de 2006, Borland lanz una versin recortada del C++Builder para Windows, con el nombre de Turbo C++ for Windows, recuperando as la clsica denominacin. Dicho Turbo C++ estaba disponible en dos ediciones: una gratuita, Explorer, y otra de pago, la Pro. Ambos productos, junto a los otros IDEs de Borland, pasaron a la nueva filial, CodeGear, al ser creada sta, en noviembre de 2006. Desde octubre de 2009 ya no es posible descargar Turbo C++ Explorer. Tampoco se puede sacar la licencia para usar la versin Pro. Compilador. Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser simplemente texto. Este proceso de traduccin se conoce como compilacin. Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. D. Ejecucin de pruebas del programa desarrollado Qu es un debugger o depurador? Un depurador (en ingls, debugger), es un programa que permite depurar o limpiar los errores de otro programa informtico. PBAS-00 8/59

Modelo Acadmico de Calidad para la Competitividad

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Al Iniciarse la depuracin, el depurador lanza el programa a depurar. ste se ejecuta normalmente hasta que el depurador detiene su ejecucin, permitiendo al usuario examinar la situacin. El depurador permite detener el programa en: Un punto determinado mediante un punto de ruptura. Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional. Un momento determinado cuando se cumplan ciertas condiciones. Un momento determinado a peticin del usuario. Durante esa interrupcin, el usuario puede: Examinar y modificar la memoria y las variables del programa. Examinar el contenido de los registros del procesador. Examinar la pila de llamadas que han desembocado en la situacin actual. Cambiar el punto de ejecucin, de manera que el programa contine su ejecucin en un punto diferente al punto en el que fue detenido. Ejecutar instruccin a instruccin. Ejecutar partes determinadas del cdigo, como el interior de una funcin, o el resto de cdigo antes de salir de una funcin. El depurador depende de la arquitectura y sistema en el que se ejecute, por lo que sus funcionalidades cambian de un sistema a otro. Aqu se han mostrado las ms comunes. E. Realiza operaciones de entrada y salida de datos. Salida por pantalla: printf La funcin printf se utiliza segn este formato:
printf ( cadena de formato, arg1, arg2, ... argN );

En la cadena de formato aparecen: el texto que se desea imprimir caracteres especiales secuencias de escape indicaciones del formato de los argumentos Los argumentos son expresiones cualesquiera.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

9/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Para usar printf, hay que escribir al principio del programa la directiva
#include <stdio.h>

Formatos de printf (bsico)


%d Entero decimal %u Entero decimal con signo %x Entero hexadecimal %c Carcter %f Coma flotante (float) %lf Coma flotante (double)

Ejemplos:
int una = 1234; char otra = h; main() { printf( una vale %d; otra vale %c\n, una, otra ); }

Secuencias de escape
\n Salto de lnea \t Tabulacin \a Sonido

Formatos de printf (avanzado) Se puede modificar el formato de salida, indicando cuantos decimales llevar el nmero, si se rellena de ceros por la izquierda, etc. La estructura (casi) completa de un formato de printf es
%0-dgitos.precisin tipo

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

10/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Formato %5d %04u %.2lf %5.3d

Significado Entero decimal alineado a la izquierda, ocupando cinco espacios Entero sin signo ocupando cuatro espacios, y rellenando de ceros a la izquierda si hace falta Nmero real (doble precisin) con dos y slo dos decimales Entero ocupando cinco espacios; aparecen tres cifras como mnimo (se rellena de ceros)

Entrada de datos: scanf Se pueden recoger datos desde el teclado con la funcin scanf. Sintaxis:
scanf ( formato, & arg1, & arg2, ... );

En formato se especifica qu tipo de datos se quieren leer. Se utiliza la misma descripcin de formato que en printf. Tambin hay que incluir la cabecera <stdio.h> Ejemplo:
int x,y; ... scanf ( %d %d, &x, &y );

Notas: Si no se anteponen los ampersands (&), el resultado puede ser desastroso. En scanf slo van descripciones de formato, nunca texto normal. Si se quiere escribir antes un texto, hay que utilizar printf. F. Realiza operaciones entre cadenas y valores numricos. Tipos de datos. Los datos en C han de tener un tipo. Las variables contienen datos, y se han de declarar del tipo adecuado a los valores que van a contener.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

11/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

El C dispone de estos tipos bsicos: char Un dato de tipo carcter (char en lenguaje C) es aquel que puede tomar por valor un carcter perteneciente al conjunto de los caracteres que puede representar el ordenador. En lenguaje C, el valor de un dato de tipo carcter se debe representar entre comillas simples ('). Ejemplo: En un examen con preguntas en las que hay que seleccionar la respuesta correcta entre varias opciones dadas (a, b, c, d, e), la respuesta correcta de cada una de las preguntas es un dato de tipo carcter.
Respuesta correcta a la pregunta 3...: 'c'

El tipo char permite manejar caracteres (letras), aunque se trata de un tipo numrico. Normalmente el rango de valores va de 128 a +127 (signed char), o bien de 0 a 255 (unsigned char). Los literales de tipo carcter se pueden utilizar como nmeros.
char caracter; int entero; main() { caracter = 65; // valdra como una A entero = A; // valdra como un 65 }

int Un dato de tipo entero (int en lenguaje C) es aquel que puede tomar por valor un nmero perteneciente al conjunto de los nmeros enteros (Z), el cual est formado por los nmeros naturales, su opuesto (nmeros negativos) y el cero.
Z = { ..., -3, -2, -1, 0, 1, 2, 3, ... }

Ejemplo: La edad de una persona y el ao en que naci, son dos datos de tipo entero:
Edad...: 29 Ao....: 1976

Z es un conjunto infinito de nmeros enteros, y como el ordenador no puede representarlos todos, un dato de tipo entero slo puede tomar por valor un nmero
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

12/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

perteneciente a un subconjunto de Z. Los valores mximo y mnimo de dicho subconjunto varan segn las caractersticas de cada ordenador y del compilador que se utilice. Una variable entera acepta valores positivos y negativos dentro de un rango determinado, que depende de la plataforma y del compilador (en PCs bajo MS-DOS suele estar entre 32768 y 32767; en Linux son enteros de 32 bits). Existen modificaciones para el tipo int, para alterar el rango de valores sobre el que trabaja:
Modificador Significado short entero corto (rango ms pequeo) long entero largo (rango ms amplio) unsigned entero sin signo (0..N) signed entero con signo (-N-1 ... +N)

La palabra int se puede omitir en la declaracin de la variable. Los modificadores de tamao (short, long) y de signo (signed, unsigned) se pueden combinar. Por omisin, un entero es signed (en la prctica, esta palabra reservada casi nunca se emplea). Ejemplos:
unsigned sin_signo; /* entero sin signo */ long saldo_en_cuenta; /* entero largo con signo */ unsigned long telefono; /* entero largo sin signo */

float o double Un dato de tipo real (float o double en lenguaje C) es aquel que puede tomar por valor un nmero perteneciente al conjunto de los nmeros reales (R), el cual est formado por los nmeros racionales e irracionales. Ejemplo: El peso de una persona (en kilogramos) y su altura (en centmetros), son datos que pueden considerarse de tipo real.
Peso.....: 75,3 Altura...: 172,7

R es un conjunto infinito de nmeros reales, y como el ordenador no puede representarlos todos, un dato de tipo real slo puede tomar por valor un nmero
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

13/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

perteneciente a un subconjunto de R. Los valores de dicho subconjunto varan segn las caractersticas de cada ordenador y del compilador que se utilice. La diferencia principal entre float y double est en el hecho de que un dato de tipo double puede tomar por valor un nmero perteneciente a un subconjunto de R mayor que un dato de tipo float. Datos sin valor (void) Un dato sin valor (void en lenguaje C) es un dato que no puede tomar por valor ningn valor, es decir, es un dato vaco (nulo). Ms adelante estudiaremos su utilidad. Variables Las variables se utilizan para guardar datos dentro del programa. Un identificador es un nombre que define a una variable, una funcin o un tipo de datos. Un identificador vlido ha de empezar por una letra o por el carcter de subrayado _, seguido de cualquier cantidad de letras, dgitos o subrayados. OJO: Se distinguen maysculas de minsculas. No se pueden utilizar palabras reservadas como int, char o while. Muchos compiladores no permiten letras acentuadas o ees. Ejemplos vlidos:
char letra; int Letra; float CHAR; int __variable__; int cantidad_envases; double precio123; int __;

Ejemplos no vlidos:
int 123var; /* Empieza por dgitos */ char int; /* Palabra reservada */ int una sola; /* Contiene espacios */ int US$; /* Contiene $ */ int var.nueva; /* Contiene el punto / int ee; /* Puede no funcionar */

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

14/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Inicializacin La forma de dar valor a una variable es


variable = expresin ;

Se le llama asignacin. Tambin se puede dar valor a una variable en el mismo momento en que se declara (inicializacin).
tipo variable = expresin ;

Una variable que se declara sin inicializar contiene un valor indeterminado. Ejemplo:
int valor1 = 0; /* variable inicializada a cero */ int valor2; /* variable no inicializada */ main() { valor1 = 4 + 3; /* asignacin */ valor2 = 5; /* otra asignacin */ }

Constantes En lenguaje C, una constante puede ser de tipo entero, real, carcter, de cadena o enumerado. Las contantes de tipo enumerado se van a estudiar ms adelante. En cuanto a las dems, se pueden expresar de dos formas diferentes: 1. Por su valor. 2. Con un nombre (identificador). Ejemplo 1: Las siguientes contantes de tipo entero estn expresadas por su valor:
-5 10

Para expresar una constante con un nombre, la constante debe ser declarada previamente. Las constantes que se declaran en un programa escrito en lenguaje C reciben un tratamiento diferente al de la mayora de los lenguajes de programacin. En C, para representar a las constantes, se utilizan constantes simblicas. Una constante simblica representa (sustituye) a una secuencia de caracteres, en vez de representar a un valor (dato almacenado en memoria).

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

15/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Para declarar una constante simblica, en lenguaje C, se utiliza una nueva directiva del preprocesador:
#define <constante> <secuencia_de_caracteres>

La directiva #define indica al preprocesador que debe sustituir, en el cdigo fuente del programa, todas las ocurrencias del <nombre_de_la_constante> por la <secuencia_de_caracteres>, antes de la compilacin. Ejemplo 2: Dos constantes muy habituales son:
#define PI 3.141592 #define NUMERO_E 2.718281

En programacin es una buena prctica escribir los identificadores de las constantes en maysculas, de esta forma es ms fcil localizarlos en el cdigo de un programa. Ntese que, despus de la declaracin de una constante simblica no se escribe un carcter punto y coma (;), cosa que s se debe hacer al declarar una variable. Por otra parte, no se puede declarar ms de una constante simblica en una misma lnea de cdigo. Ejemplo 3: Para declarar las constantes simblicas PI y NUMERO_E, no se puede escribir:
#define PI 3.141592, NUMERO_E 2.718281

Por otra parte, en C, es posible declarar una variable indicando que su valor es inalterable. Para ello, se utiliza el cualificador const. Ejemplo 4: Uso de const:
const int temperatura = -5;

En el ejemplo, se ha declarado la variable entera temperatura inicializada al valor -5 y, por medio de const, que es una palabra reservada, se ha indicado que su valor no puede cambiar durante la ejecucin del programa. En cierta manera, la variable temperatura est simulando a una constante.

temperatura -5

Ya se sabe cmo escribir la declaracin de una constante y de las variables que utilice un programa y, tambin, se conoce el lugar en que se tiene que escribir la directiva del preprocesador #define para declarar la constante.
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

16/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En cuanto a las variables que utiliza un programa, su declaracin puede escribirse en varios lugares, pero, de momento las vamos a declarar inmediatamente despus del carcter abrir llave ({) de la funcin main.
[ <directivas_del_preprocesador> ] int main() { [ <declaraciones_de_variables> ] <lista_de_instrucciones> }

Ejemplo 5: Si en un programa se quieren declarar dos variables ( area y radio) y una constante (PI), se puede escribir:
#define PI 3.141592 int main() { float area, radio; ... }

Enumeraciones Con la construccin enum se pueden definir tipos de datos enteros que tengan un rango limitado de valores, y darle un nombre a cada uno de los posibles valores.
enum dia_de_la_semana { lunes, martes, miercoles, jueves, viernes, }; ... enum dia_de_la_semana hoy; ... hoy = sabado;

sabado, domingo

Los valores definidos en enum son constantes enteras que se pueden usar en cualquier punto del programa, usando un operador de moldeo (ver ejemplo). Se empiezan a numerar de cero en adelante (en el ejemplo, lunes vale cero, martes vale uno, etc.)
int dia = (int)sabado; /* dia = 5 */

Se puede dar un valor inicial a la lista de valores dados en enum:


enum dia { Modelo Acadmico de Calidad para la Competitividad

PBAS-00

17/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica


lunes=1, martes, miercoles, jueves, viernes, }; sabado, domingo

En este caso los valores van del 1 al 7. Tambin se pueden dar valores individuales:
enum codigo_postal { LasPalmas=35, Madrid=28, Barcelona=8 };

Operadores En un programa, el tipo de un dato determina las operaciones que se pueden realizar con l. Por ejemplo, con los datos de tipo entero se pueden realizar operaciones aritmticas, tales como la suma, la resta o la multiplicacin. Ejemplo 1: Algunos ejemplos son:
111 + 6 (operacin suma) 19 - 72 (operacin resta) 24 * 3 (operacin multiplicacin)

Todas las operaciones del ejemplo constan de dos operandos (constantes enteras) y un operador. La mayora de las veces es as, pero, tambin es posible realizar operaciones con distinto nmero de operadores y/u operandos. Ejemplo 2: Por ejemplo:
111 + 6 - 8 (tres operandos y dos operadores) -( ( +19 ) + 72 ) (dos operandos y tres operadores) -( -72 ) (un operando y dos operadores)

En las operaciones del ejemplo se puede observar que los caracteres ms (+) y menos (-) tienen dos usos: 1. Operadores suma y resta. 2. Signos de un nmero (tambin son operadores). Los operadores de signo ms (+) y menos (-) son operadores monarios, tambin llamados unarios, ya que, actan, solamente, sobre un operando.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

18/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Los caracteres abrir parntesis "(" y cerrar parntesis ")" se utilizan para establecer la prioridad de los operadores, es decir, para establecer el orden en el que los operadores actan sobre los operandos. Un operador indica el tipo de operacin a realizar sobre los operandos (datos) que acta. Los operandos pueden ser: Constantes (expresadas por su valor o con un nombre (identificador)). Variables. Llamadas a funciones. Elementos de formaciones (arrays). En este apartado se van a tratar operaciones en donde slo aparecen constantes y variables. Cuando se combinan uno o ms operadores con uno o ms operandos se obtienen una expresin. De modo que, una expresin es una secuencia de operandos y operadores escrita bajo unas reglas de sintaxis. Ejemplo 3: Dadas las siguientes declaraciones de constantes y variables:
#define PI 3.141592 int numero = 2; float radio_circulo = 3.2;

Algunos ejemplos de expresiones son:


2 * PI * radio_circulo ( PI * PI ) numero * 5

De sus evaluaciones se obtienen los valores:


20.106189 (valor real) ( 2 * 3.141592 * 3.2 ) 9.869600 (valor real) ( 3.141592 * 3.141592 ) 10 (valor entero) ( 2 * 5 )

Un operador siempre forma parte de una expresin, en la cual, el operador siempre acta sobre al menos un operando. Por el contrario, un operando s puede aparecer solo en una expresin. En programacin, de la evaluacin de una expresin siempre se obtiene un valor. Dicho valor puede ser de tipo: entero, real, lgico, carcter o cadena. Por consiguiente, una expresin puede ser: Aritmtica (devuelve un nmero entero o real).
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

19/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Lgica (devuelve un valor lgico: verdadero o falso) De carcter (devuelve un carcter representable por el ordenador). De cadena (devuelve una cadena). Aritmticos De la evaluacin de una expresin aritmtica siempre se obtiene un valor de tipo entero o real. En lenguaje C existen algunos operadores que no se utilizan en pseudocdigo, y al revs. A continuacin, se van a ver algunas similitudes y diferencias entre ambos lenguajes.

Operadores aritmticos: Pseudocdigo:


+ * ** / div mod

C: Suma Resta Multiplicacin Potencia Divisin Divisin Mdulo (resto de la divisin entera)

* / / %

+ -

+ -

Signo ms Signo menos

Figura. Comparacin entre operadores aritmticos en pseudocdigo y en C.

Como se puede apreciar, existen tres diferencias importantes entre los operadores aritmticos en pseudocdigo y en lenguaje C: 1. El operador potencia (**) no existe en lenguaje C. 2. En lenguaje C, slo existe un operador de divisin (/). 3. En lenguaje C, el operador mdulo (mod) se escribe con el carcter porcentaje (%). Ejemplo: A partir de las variables: En pseudocdigo:
entero a = 4, b = 7, c = 2

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

20/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En lenguaje C:
int a = 4, b = 7, c = 2;

Podemos escribir, por ejemplo, la expresin: En pseudocdigo:


-a * ( b mod c )

En lenguaje C:
-a * ( b % c )

De la evaluacin de esta expresin se obtiene el valor


-4 (actan en orden los operadores: (%), menos (-) y (*))

De relacin Un operador relacional se utiliza para comparar los valores de dos expresiones. stas deben ser del mismo tipo (aritmticas, lgicas o de carcter). En la siguiente figura se comparan los operadores relacionales en pseudocdigo y en lenguaje C:

Operadores relacionales: Pseudocdigo:


< <= > >=

C:
< <= > >=

Menor que Menor o igual que Mayor que Mayor o igual que

= <>

== !=

Igual que Distinto que

Figura. Comparacin entre operadores relacionales en pseudocdigo y en C.

Las diferencias son dos: 1. En C, el operador igual que (=) se escribe con los caracteres igual-igual (==).

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

21/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

2. En C, el operador distinto que (<>) se escribe con los caracteres admiracin-igual (!=). Ejemplo: A partir de las variables: En pseudocdigo:
entero p = 45, q = 186

En lenguaje C:
int p = 45, q = 186;

Podemos escribir la expresin: En pseudocdigo:


p <> q

En lenguaje C:
p != q

De su evaluacin se obtiene: En pseudocdigo:


verdadero ( p es distinta de q )

En lenguaje C:
1 (C simula el valor lgico verdadero con el valor entero 1)

En lenguaje C, los datos de tipo lgico se simulan con datos de tipo entero, considerndose el valor 0 como falso, y cualquier otro valor entero como verdadero. Lgicos Un operador lgico acta, exclusivamente, sobre valores de expresiones lgicas.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

22/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En la siguiente figura se comparan los operadores lgicos en pseudocdigo y en lenguaje C:

Operadores lgicos: Pseudocdigo:


y o

C:
&& ||

Conjuncin Disyuncin

no

Negacin

Figura. Comparacin entre operadores lgicos en pseudocdigo y en C.

Ejemplo: Habiendo declarado las variables: En pseudocdigo:


entero r = 2, s = 9, t = 8

En lenguaje C:
int r = 2, s = 9, t = 8;

Se puede escribir En pseudocdigo:


no( r = s o r <= t )

En lenguaje C:
!( r == s || r <= t )

La expresin se evala a En pseudocdigo:


falso (actan en orden los operadores: (<=), (==), (||) y (!))

En lenguaje C:
0 (C simula el valor lgico falso con el valor entero 0)

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

23/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

De incremento y decremento En lenguaje C, tanto el operador incremento (++) como el operador decremento (--) actan siempre sobre un solo operando, normalmente una variable. Por tanto, son operadores monarios, y sirven para incrementar o decrementar en una unidad el valor de dicho operando. Ejemplo 1: Declaradas las variables:
int r = 8, s = 3;

r s 8 3

Se pueden escribir las instrucciones de expresin:


r++; s--;

Dichas instrucciones son equivalentes a:


r = r + 1; s = s - 1;

Y tambin se pueden escribir como:


++r; --s;

Tras su ejecucin, el aspecto de la memoria ser:

r s 9 2

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

24/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En estas instrucciones, ambos operadores se pueden escribir, indistintamente, antes o despus de los operandos sobre los que actan. Pero, cuando en una expresin, adems del operador incremento o decremento, tambin aparecen otros operadores, entonces s que hay que tener en cuenta la diferencia que supone el escribirlos antes o despus. Ejemplo 2: A partir de las variables:
int i = 5, j, k = 5, m;

i j k m 5 5

Si se ejecutan las instrucciones:


j = i++; m = ++k;

Los valores de las variables en memoria sern:

i j k m 6 5 6 6

Obsrvese que, los valores de j y m son diferentes. Esto es debido a que, cuando se evala la expresin j = i++, en primer lugar, se le asigna a j el valor de i (es decir, un 5) y, a continuacin, se incrementa el valor de la variable i. Por el contrario, cuando se evala la expresin m = ++k, primero, se incrementa el valor de k (de 5 pasa a ser 6) y, despus, este nuevo valor de k se le asigna a m. PBAS-00 25/59

Modelo Acadmico de Calidad para la Competitividad

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En resumen, cuando en una expresin el operador incremento (++) o decremento (--) precede al operando sobre el que acta (por ejemplo ++k), antes de utilizar el valor de dicho operando para otro propsito, este se incrementa. De ser al revs, es decir, si es el operando quien precede al operador (por ejemplo i++), el valor de dicho operando se incrementa despus de ser utilizado para otro fin. Precedencia de operadores. La prioridad de todos los operadores del lenguaje C estudiados hasta el momento es:

Operadores lgicos: Llamada a una funcin e ndice de un array + - ++ -- ! (<tipo>) Signo ms, signo menos, incremento, decremento, negacin y conversin de tipo * / % Multiplicacin, divisin, mdulo + Suma y resta < <= > >= Menor que, menor igual que, mayor que, mayor o igual que == != Igual que y distinto que && Conjuncin || Disyuncin = += -= *= /= %= Operadores de asignacin Figura. Prioridad de los operadores aritmticos, de ndice de un array, de llamada a una funcin, relacionales, lgicos, de asignacin y de conversin de tipo en C.
( ) [ ]

Obsrvese que, en lenguaje C, tanto los parntesis "( )" que se utilizan para llamar a una funcin, como los corchetes "[ ]" que albergan el ndice de un array, tambin son considerados operadores. Adems, son los operadores ms prioritarios y, en una expresin, se evalan de izquierda a derecha. Por otra parte, los operadores incremento (++), decremento (--) y conversin de tipo "(<tipo>)" entran dentro de la categora de operadores monarios. De manera que, al igual que los operadores signo ms (+), signo menos (-), negacin (!) y de asignacin, todos ellos se evalan de derecha a izquierda en una expresin, al revs que todos los dems.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

26/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

1.2 Organiza y ordena bloques de cdigo para resolver una situacin dada mediante estructuras de control de flujo.
1.2.1 Desarrolla programas en lenguaje C que utilicen estructuras de decisin y de control de flujo. A. Identificacin de proposiciones y bloques de cdigo Qu es proposicin o sentencia? Una sentencia es un fragmento de cdigo. Una sentencia simple es una expresin terminada en punto y coma. Una sentencia compuesta es una serie de sentencias entre llaves.
sentencia_simple;

Ejemplos:
/* sentencia simple */ x = y * 5 + sqrt(z);

Qu es un bloque de cdigo o sentencia compuesta? Una sentencia compuesta es una serie de sentencias entre llaves. Ejemplos:
// sentencia compuesta: varias sentencias entre llaves. { sentencia sentencia ... }

Ejemplos:
/* sentencia compuesta con llaves */ { a = b; b = x + 1; printf ( hay %d productos, num_prod ); } /* sentencias compuestas dentro de otras */ { { x=1; y=2; } { z=0; printf(hola\n); } } Modelo Acadmico de Calidad para la Competitividad

PBAS-00

27/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

B. Aplica estructuras de decisin para definir el orden de ejecucin de bloques de cdigo if else La construccin if sirve para ejecutar cdigo slo si una condicin es cierta:
if ( condicin ) sentencia

La condicin es una expresin de cualquier clase. Si el resultado de la expresin es CERO, se considera una condicin FALSA. Si el resultado de la expresin NO ES CERO, se considera una condicin CIERTA. Ejemplo:
int x = 1; main() { if ( x == 1 ) printf (la variable x vale uno\n); if ( x>=2 && x<=10 ) printf (x est entre 2 y 10\n); }

else if Con la construccin else se pueden definir acciones para cuando la condicin del if sea falsa. La sintaxis es
if ( condicin ) sentencia else sentencia

Ejemplo:
if ( x==1 ) printf (la variable x vale uno\n); else printf (x es distinta de uno\n);

switch Se utiliza para ejecutar acciones diferentes segn el valor de una expresin.
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

28/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Ejemplo de sintaxis:
switch ( expresin ) { case valor1: ... sentenciasA... break; case valor2: ... sentenciasB ... break; case valor3: case valor4: ... sentenciasC ... break; default: ... sentenciasD ... }

Las sentenciasA se ejecutarn si expresin adquiere el valor1. Las sentenciasB se ejecutarn si adquiere el valor2. Las sentenciasC se ejecutarn si adquiere el valor3 o el valor4, indistintamente. Cualquier otro valor de expresin conduce a la ejecucin de las sentenciasD; eso viene indicado por la palabra reservada default. Ejemplo de switch:
int opcion; printf ( "Escriba 1 si desea continuar; 2 si desea terminar: " ); scanf ( "%d", &opcion ); switch ( opcion ) { case 1: printf ("Vale, contino\n"); break; case 2: salir = 1; break; default: printf ("opcin no reconocida\n"); }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

29/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

C. Aplica estructuras de ciclo para la ejecucin continua y/o repetida de bloques de cdigo. for Tambin se pueden ejecutar bucles con for, segn esta sintaxis:
for ( expresin_inicial; condicin; expresin_de_paso ) sentencia

La expresin_inicial se ejecuta antes de entrar en el bucle. Si la condicin es cierta, se ejecuta sentencia y despus expresin_de_paso. Luego se vuelve a evaluar la condicin, y as se ejecuta la sentencia una y otra vez hasta que la condicin sea falsa. El bucle for es (casi) equivalente a
expresin_inicial; while ( condicin ) { sentencia expresin_de_paso; }

Ejemplo tpico de uso:


int i; ... for ( i=0; i<10; i++ ) printf (%d , i );

while Para ejecutar el mismo cdigo varias veces, se puede utilizar:


while ( condicin ) sentencia

La sentencia se ejecuta una y otra vez mientras la condicin sea cierta. Ejemplos:
main() { int x=1; while ( x < 100 ) { Modelo Acadmico de Calidad para la Competitividad

PBAS-00

30/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica


printf(Lnea nmero %d\n,x); x++; } }

Ejemplo usando el operador de predecremento:


main() { int x=10; while ( --x ) { printf(una lnea\n); } }

En cada iteracin se decrementa la variable x y se comprueba el valor devuelto por --x. Cuando esta expresin devuelva un cero, se abandonar el bucle. Esto ocurre despus de la iteracin en la que x vale uno. do while Parecido al bucle while, pero iterando al menos una vez. Sintaxis:
do { sentencia } while ( condicin );

La sentencia se ejecuta al menos la primera vez; luego, mientras la condicin sea cierta, se itera la sentencia. Se recomienda no utilizar esta construccin, porque las construcciones while y for bastan para disear cualquier clase de bucles. Muy pocos programas hoy da usan esta construccin. goto y etiquetas Sirve para saltar incondicionalmente a un punto cualquiera del programa. La sintaxis es
goto etiqueta;

es un identificador que indica el punto al que queremos saltar. La etiqueta se define colocndola en el punto adecuado seguida de dos puntos.
etiqueta

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

31/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Slo se puede saltar a una etiqueta que se encuentre en la misma funcin donde se invoca a goto. Ejemplo:
parriba: // declaracin de etiqueta

... // salto directo a una etiqueta if (error) goto pabajo; ... if (repetir) goto parriba; pabajo: // declaracin de etiqueta

Ciclos infinitos. Bucle for: omisin de expresiones Las tres expresiones del bucle for se pueden omitir, con el siguiente resultado.
Se omite
expresin_inicial condicin expresin_de_paso

Resultado no se hace nada antes del bucle la condicin es siempre cierta (1) no se hace nada tras cada iteracin

Ejemplos:
for ( ; resultado!=-1 ; ) { ... } for ( ; ; ) { /* Bucle infinito */ }

Precauciones con if y bucles Asignaciones en los if y los bucles Hemos visto que una asignacin es una expresin. Por ello se puede colocar dentro de cualquier construccin if, while o similar:
if ( variable = valor ) { ... }

Este uso muchas veces es errneo, porque casi siempre pretendemos escribir:
if ( variable == valor ) { ... }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

32/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Pero como es correcto, el compilador no abortar si se encuentra estas construcciones (de todas formas, muchos compiladores emiten una advertencia si encuentran asignaciones dentro de ifs). Bucles for Aunque el C lo permite, es conveniente no modificar la variable contadora dentro del bucle.

2. Administracin de funciones desarrolladas en lenguaje C.


2.1 Automatiza operaciones mediante la creacin de funciones para la agilizacin de procesos.
2.1.1 Desarrolla programas en lenguaje C que utilicen funciones A. Identifica los componentes de una funcin Qu es una funcin? Las funciones son porciones de cdigo que devuelven un valor. Permiten descomponer el programa en mdulos que se llaman entre ellos. En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones. La definicin de una funcin especfica lo siguiente: nombre de la funcin nmero de argumentos que lleva y tipo de cada uno de ellos tipo de datos que devuelve Cuerpo de la funcin (el cdigo que ejecuta) Sintaxis:
tipo nombre ( arg1, arg2, ... ) { ... cuerpo ... }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

33/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Cada argumento se especifica como en una declaracin de variable. El cuerpo de la funcin debera contener una sentencia donde se devuelve el resultado de la funcin, que se hace de esta forma:
return expresin;

La funcin devolver el resultado de la expresin. Ejemplo de funcin Funcin que devuelve la suma de dos enteros.
int suma ( int a, int b ) { return a+b; }

Llamadas a funcin Para llamar a una funcin, se escribe su nombre y entre parntesis los valores que se deseen dar a los argumentos:
funcin ( expr1, expr2, ... )

Cada expresin se evala y su resultado se pasa como argumento a la funcin. Las expresiones han de tener el mismo tipo del argumento correspondiente, o al menos un tipo compatible.
x = suma ( 1, a+5 ); /* correcto */

y = suma ( hola, 5 ); /* arg. 1 incorrecto */

Una llamada a funcin es una expresin, con todo lo que ello implica. No es necesario recoger en una variable el valor devuelto por la funcin. (Por ejemplo, printf y scanf son funciones que devuelven un entero). Funciones sin argumentos Se declaran con void entre parntesis (slo en C).
int fecha (void) { ... }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

34/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Se las llama as:


dato = fecha();

es decir, siempre hay que escribir los parntesis aunque no haya argumentos. En C++ se declaran slo con los parntesis, sin el void. Funciones sin argumentos Se declaran con void entre parntesis (slo en C).
int fecha (void) { ... }

Se las llama as:


dato = fecha();

es decir, siempre hay que escribir los parntesis aunque no haya argumentos. En C++ se declaran slo con los parntesis, sin el void. Argumentos de entrada/salida o paso por referencia Una funcin en C no puede alterar las variables pasadas como parmetros. Los parmetros se pasan por valor.
#include <stdio.h> /* funcin intil */ void incrementa ( int variable ) { variable ++; } main() { int x = 33; incrementa (x); /* x no resulta afectada, sigue valiendo 33 */ printf ( "la variable x vale ahora %d\n", x ); }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

35/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Para conseguir alterar una variable pasada como parmetro, hay que recurrir a los punteros. (Se ver ms adelante). Otras consideraciones Funciones anidadas En C no se pueden declarar funciones dentro de otras (funciones anidadas o locales). Todas las funciones son globales. Recursividad Se permite hacer llamadas recursivas:
float factorial (int n) { if (n<=1) return 1.0; else return n*factorial(n-1); }

Qu es una macro? La directiva #define se usa para definir constantes o cualquier sustitucin de macro. Su formato es el siguiente:
#define <nombre de macro> <nombre de reemplazo>

Por ejemplo:
#define FALSO 0 #define VERDADERO !FALSO

La directiva #define tiene otra poderosa caracterstica: el nombre de macro puede tener argumentos. Cada vez que el compilador encuentra el nombre de macro, los argumentos reales encontrados en el programa reemplazan los argumentos asociados con el nombre de la macro. Por ejemplo:
#define MIN(a,b) (a < b) ? a : b main() { int x=10, y=20; printf("EL minimo es %d\n", MIN(x,y) ); } Modelo Acadmico de Calidad para la Competitividad

PBAS-00

36/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Cuando se compila este programa, el compilador sustituir la expresin definida por MIN(x,y), excepto que x e y sern usados como los operandos. As despus de que el compilador hace la sustitucin, la sentencia printf ser sta:
printf("El minimo es %d\n", (x < y) ? x : y);

Como se puede observar donde se coloque MIN, el texto ser reemplazado por la definicin apropiada. Por lo tanto, si en el cdigo se hubiera puesto algo como:
x = MIN(q+r,s+t);

despus del preprocesamiento, el cdigo podra verse de la siguiente forma:


x = ( q+r < s+t ) ? q+r : s+t;

Otros ejemplos usando #define pueden ser:


#define Deg_a_Rad(X) (X*M_PI/180.0) /* Convierte grados sexagesimales a radianes, M_PI es el valor de pi */ /* y esta definida en la biblioteca math.h */ #define IZQ_DESP_8 <<8

La ltima macro IZQ_DESP_8 es solamente vlida en tanto el reemplazo del contexto es vlido, por ejemplo: x = y IZQ_DESP_8. El uso de la sustitucin de macros en el lugar de las funciones reales tiene un beneficio importante: incrementa la velocidad del cdigo porque no se penaliza con una llamada de funcin. Sin embargo, se paga este incremento de velocidad con un incremento en el tamao del programa porque se duplica el cdigo.

2.2 Maneja memoria del equipo mediante la racionalizacin y reservacin de la misma.


2.2.1 Desarrolla programas en lenguaje C que utilicen arreglos de diferentes dimensiones y que manejen memoria dinmica mediante pilas, colas y listas. A. Manejo de apuntadores de memoria. Qu es un apuntador? El tipo de datos ms caracterstico del C son los punteros. Un puntero contiene un valor que es la direccin en memoria de un dato de cierto tipo. Los punteros se emplean en C

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

37/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

para muchas cosas, por ejemplo recorrer vectores, manipular estructuras creadas dinmicamente, pasar parmetros por referencia a funciones, etc. Cuando se declara una variable, se reserva un espacio en la memoria para almacenar el valor de la variable. Ese espacio en memoria tiene una direccin. Un puntero es una direccin dentro de la memoria, o sea, un apuntador a donde se encuentra una variable. Cmo utilizar un apuntador? Operaciones bsicas Declaracin Los punteros se declaran con un asterisco, de esta forma:
tipo * variable;

Por ejemplo:
int* puntero;

Se dice que la variable puntero es un puntero a enteros (apunta a un entero). Asignacin El valor que puede adquirir un puntero es, por ejemplo, la direccin de una variable. El operador & devuelve la direccin de una variable:
puntero = &variable;

Desreferencia de un puntero Se puede alterar la variable a la que apunta un puntero. Para ello se emplea el operador de desreferencia, que es el asterisco:
*puntero = 45;

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

38/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

En este caso, se est introduciendo un 45 en la posicin de memoria a la que apunta puntero. Ejemplo de uso
{ int* puntero; int variable; puntero = &variable; *puntero = 33; /* mismo efecto que variable=33 */ }

Varios punteros pueden apuntar a la misma variable:


int* puntero1; int* puntero2; int var; puntero1 = &var; puntero2 = &var; *puntero1 = 50; /* mismo efecto que var=50 var = *puntero2 + 13; /* var=50+13 */

*/

Otros usos Declaracin mltiple de punteros Si en una misma declaracin de variables aparecen varios punteros, hay que escribir el asterisco a la izquierda de cada uno de ellos:
int *puntero1, var, *puntero2;

Se declaran dos punteros a enteros (puntero1 y puntero2) y un entero (var). El puntero nulo El puntero nulo es un valor especial de puntero que no apunta a ninguna parte. Su valor es cero. En <stdio.h> se define la constante NULL para representar el puntero nulo. Apuntadores en arreglos. En C todos los parmetros se pasan por valor. Esto tiene en principio dos inconvenientes: No se pueden modificar variables pasadas como argumentos

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

39/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Si se pasa como parmetro una estructura, se realiza un duplicado de ella, con lo que se pierde tiempo y memoria Sin embargo, se puede pasar un puntero como argumento a una funcin. El puntero no se puede alterar, pero s el valor al que apunta:
void incrementa_variable (int* var) { (*var)++; } main() { int x = 1; incrementa_variable (&x); /* x pasa a valer 2 */ }

En el ejemplo anterior, haba que poner parntesis en (*var)++ porque el operador ++ tiene ms precedencia que la desreferencia (el asterisco). Entonces *var++ sera como escribir *(var++), que no sera lo que queremos. Apuntadores en estructuras de datos. Un puntero puede apuntar a una estructura y acceder a sus campos:
struct Dato { int campo1, campo2; char campo3 [30]; }; struct Dato x; struct Dato *ptr; ... ptr = &x; (*ptr).campo1 = 33; strcpy ( (*ptr).campo3, "hola" );

El operador -> Para hacer menos incmodo el trabajo con punteros a estructuras, el C tiene el operador flecha -> que se utiliza de esta forma:
ptr->campo

que es equivalente a escribir


(*ptr).campo

As, el ejemplo anterior quedara de esta forma:


Modelo Acadmico de Calidad para la Competitividad

PBAS-00

40/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica


ptr = &x; ptr->campo1 = 33; strcpy ( ptr->campo3, "hola" );

B. Realiza operaciones en arreglos Bsqueda y edicin de datos en arreglos unidimensionales Bsqueda lineal = Bsqueda secuencial
// Bsqueda lineal de un elemento en un vector // - Devuelve la posicin de dato en el vector // - Si dato no est en el vector, devuelve -1 int search (double vector[], int N, double dato) { int i; int pos = -1; for (i=0; i<N; i++) if (vector[i]==dato) pos = i; return pos; }

Versin mejorada
// Bsqueda lineal de un elemento en un vector // - Devuelve la posicin de dato en el vector // - Si dato no est en el vector, devuelve -1 int search (double vector[], int N, double dato) { int i; int pos = -1; for (i=0; (i<N) && (pos==-1); i++) if (vector[i]==dato) pos = i; return pos;

Bsqueda binaria Precondicin El vector ha de estar ordenado

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

41/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Algoritmo Se compara el dato buscado con el elemento en el centro del vector: - Si coinciden, hemos encontrado el dato buscado. - Si el dato es mayor que el elemento central del vector, tenemos que buscar el dato en segunda mitad del vector. - Si el dato es menor que el elemento central del vector, tenemos que buscar el dato en la primera mitad del vector.

// Bsqueda binaria de un elemento en un vector // - Devuelve la posicin de dato en el vector // - Si dato no est en el vector, devuelve -1 // Implementacin recursiva // Uso: binSearch (vector, 0, N-1, dato)

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

42/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica


int binSearch ( double vector[], int izq, int der, double buscado) { int centro = (izq+der)/2; if (izq>der) return -1; else if (buscado==vector[centro]) return centro; else if (buscado<vector[centro]) return binSearch(vector, izq, centro-1, buscado); else return binSearch(vector, centro+1, der, buscado); } // Implementacin iterativa // Uso: binSearch (vector, N, dato) int { int int int binSearch (double vector[], int N, double buscado) izq = 0; der = N-1; centro = (izq+der)/2;

while ((izq<=der) && (vector[centro]!=buscado)) { if (buscado<vector[centro]) der = centro 1; else izq = centro + 1; centro = (izq+der)/2; } if (izq>der) return -1; else return centro; }

C. Deteccin y correccin de los principales errores de programacin. Prueba y depuracin En ingls, a un error de programa se le conoce como bug (insecto), y al proceso de eliminacin de errores se le llama debugging, es decir, depuracin. Existe una historia pintoresca sobre cmo es que este trmino comenz a utilizarse. Ocurri en los primeros das de las computadoras, cuando el hardware era extremadamente sensible. La Contralmirante Grace Murray Hopper (1906-1992) fue la tercera programadora de la primera computadora digital de gran escala ene l mundo. (Denise W. Gurer, Mujer pionera en la ciencia de la computacin CACM 38(1):45-54, enero de 1995). Mientras Hopper trabajaba en la computadora Harvard Mark I, bajo la direccin del profesor de Harvard H. Aiken, una palomilla ocasion que la transmisin fallar. Hopper y los otros
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

43/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

programadores registraron la muerte de la palomilla en la bitcora, con la nota Primer caso real de un bug (insecto) hallado. La bitcora actualmente se encuentra en exhibicin en el Museo Naval de Dahlgren, Virginia. En computacin, este fue el primer bug documentado. El profesor Aiken entr a las instalaciones durante un descanso y pregunto si se haban encontrado algunos otros nmeros, y los programadores respondieron que estaban depurando (debugging) la computadora. Para mayor informacin sobre el Contralmirante Hopper y otras personas de computacin, vea Portraits in Silicon de Robert Slater, MIT Press, 1987. En la actualidad, en computacin un bug es un error. En seguida describiremos los tres tipos principales de errores de programacin y proporcionaremos algunos consejos para corregirlos. Tipos de errores de programacin Error de sintaxis El compilador atrapar cierto tipo de errores y enviar un mensaje de error cuando encuentre uno. Detectar lo que se conoce como errores de sintaxis porque son en gran medida violaciones de sintaxis (es decir, de reglas gramaticales) del lenguaje de programacin, como por ejemplo, omitir un punto y coma. Si el compilador descubre que su programa contiene un error de sintaxis, le indicar en dnde es probable que se encuentre dicho error y qu clase de error es. Si el compilador dice que su programa contiene un error de sintaxis, tenga por seguro que as es. Sin embargo, el compilador puede equivocarse con respecto a la ubicacin o a la naturaleza de un error. ste realiza un mejor trabajo cuando determina la ubicacin de un error, entre una lnea o dos, que cuando determina la fuente de dicho error. Esto se debe a que el compilador intenta interpretar lo que usted quiso escribir, y con facilidad puede equivocarse. Despus de todo, el compilador no puede leer nuestra mente. Los mensajes de error subsiguientes al primero tienen una probabilidad mayor de estar incorrectos, ya sea con respecto a la ubicacin o a la naturaleza del error. De nuevo, esto se debe a que el compilador trata de interpretar nuestra intencin. Si la primera interpretacin del compilador fue incorrecta, esto afectar el anlisis de futuros error, ya que dicho anlisis estar basado en una suposicin incorrecta. En programacin, un error de sintaxis se produce al escribir, incorrectamente, alguna parte del cdigo fuente de un programa. De forma que, dicho error impedir, tanto al compilador como al intrprete, traducir dicha instruccin, ya que, ninguno de los dos entender qu le est diciendo el programador. Por ejemplo, si en lenguaje C, en vez de la instruccin
printf( "\n prrintf( "\n Introduzca el primer numero (entero): " ); Introduzca el primer numero (entero): " );

un programador escribe

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

44/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

cuando el compilador o el intrprete lean esta lnea de cdigo, ninguno de los dos entender qu es prrintf y, por tanto, no sabrn traducir esta instruccin a cdigo mquina, por lo que, ambos pararn la traduccin y avisarn al programador con un mensaje de error. Mensajes de error en comparacin con los de advertencia Si nuestro programa contiene algo que viola directamente las reglas de sintaxis del lenguaje de programacin, el compilador enviar un mensaje de error. Sin embargo, algunas veces el compilador slo genera un mensaje de advertencia, el cual indica que hemos hecho algo que no es, tcnicamente hablando, una violacin de las reglas de sintaxis del lenguaje de programacin, pero que es lo suficientemente inusual para indicar un probable error. Cuando recibimos un mensaje de advertencia, lo que el compilador le dice es, est seguro de que quiso decir esto? En esta etapa de su desarrollo, debe tratar cualquier advertencia como un error, hasta que el maestro autorice que la ignore. Errores en tiempo de ejecucin Existe cierto tipo de errores que los sistemas de cmputo slo pueden detectar cuando se ejecuta el programa. Por ello, se les conoce como errores en tiempo de ejecucin. La mayora de los sistemas de cmputo detectar ciertos tipos de errores de este tipo, y desplegarn un mensaje de error adecuado. Muchos intenta dividir un nmero entre cero, se normalmente es un error en tiempo de ejecucin. En programacin, un error de ejecucin se produce cuando el ordenador no puede ejecutar alguna instruccin de forma correcta. Por ejemplo, en lenguaje C, la instruccin
c = 5 / 0;

es correcta sintcticamente y ser traducida a cdigo binario. Sin embargo, cuando la computadora intente realizar la divisin
5 / 0

se producir un error de ejecucin, ya que, matemticamente, no se puede dividir entre cero. Error lgico El hecho de que el compilador apruebe el programa y ste se ejecute una vez sin mensajes de error en tiempo de ejecucin, no garantiza que el programa sea correcto. Recordemos, el compilador slo nos indica si hemos escrito un programa en C gramaticalmente correcto; no nos dice si el programa hace lo que queremos que haga. Los errores en el algoritmo subyacente o en la traduccin del algoritmo hacia el lenguaje C se conocen
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

45/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

como errores lgicos. Si el compilador aprob nuestro programa y no hay errores en tiempo de ejecucin, pero el programa no se comporta adecuadamente, entonces indudablemente contiene un error lgico. Los errores lgicos son ms difciles de diagnosticar, porque la computadora no le enva mensajes para ayudarle a encontrar el error. No es razonable esperar obtener mensajes de error pues la computadora no tiene forma de saber que lo que escribimos no es lo que realmente queramos escribir. En programacin, los errores de lgica son los ms difciles de detectar. Cuando un programa no tiene errores de sintaxis ni de ejecucin, pero, an as, no funciona bien, esto es debido a la existencia de algn error lgico. De manera que, un error de lgica se produce cuando los resultados obtenidos no son los esperados. Por ejemplo, en lenguaje C, si en vez de la instruccin
c = a + b;

un programador hubiera escrito


c = a * b;

hasta que no se mostrase por pantalla el resultado de la operacin, el programador no podra darse cuenta del error, siempre que ya supiese de antemano el resultado de la suma. En este caso, el programador podra percatarse del error fcilmente, pero, cuando las operaciones son ms complejas, los errores de lgica pueden ser muy difciles de detectar. Los 25 errores de programacin ms peligrosos Al ver que la mayora de los agujeros de seguridad en el software es producida por errores de programacin que podran ser evitados si fusemos ms cautelosos, un grupo internacional de expertos crearon una lista con los 25 errores de programacin ms peligrosos. Para crear esta lista trabaj gente de empresas tales como Microsoft, CERT, Oracle Corporation, Tata Consultancy Services, RSA, Red Hat Inc. y varias ms. A continuacin detallo una lista (en ingls) con estos errores: Improper Input Validation Improper Encoding or Escaping of Output Failure to Preserve SQL Query Structure (aka SQL Injection) Failure to Preserve Web Page Structure (aka Cross-site Scripting) Failure to Preserve OS Command Structure (aka OS Command Injection) Clear text Transmission of Sensitive Information Cross-Site Request Forgery (CSRF) Race Condition Error Message Information Leak
Modelo Acadmico de Calidad para la Competitividad

PBAS-00

46/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Failure to Constrain Operations within the Bounds of a Memory Buffer External Control of Critical State Data External Control of File Name or Path Untrusted Search Path Failure to Control Generation of Code (aka Code Injection) Download of Code Without Integrity Check Improper Resource Shutdown or Release Improper Initialization Incorrect Calculation Improper Access Control (Authorization) Use of a Broken or Risky Cryptographic Algorithm Hard-Coded Password Insecure Permission Assignment for Critical Resource Use of Insufficiently Random Values Execution with Unnecessary Privileges Client-Side Enforcement of Server-Side Security Las pginas donde estn publicados estos errores (que se actualizarn regularmente) junto con su detalle son www.sans.org/top25errors y cwe.mitre.org/top25, y en las mismas tambin hay enlaces a recursos para ayudar a eliminarlos.

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

47/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

Prcticas para el laboratorio


PB001.c
PB001.c
#include <stdio.h> main() { printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que muestra un mensaje <-\n\n"); printf("Hola Mundo!\n"); return 0; }

PB002.c
PB002.c
#include <stdio.h> main() { char car; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que solicita un carcter para despues mostrarlo <-\n\n"); printf("Teclee un caracter..."); scanf("%c",&car); printf("El caracter es... %c\n",car); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

48/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB003.c
PB003.c
#include <stdio.h> main() { int a=0,b=0,c=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que suma dos numeros solicitados <-\n\n"); printf("Teclee un numero..."); scanf("%d",&a); printf("Teclee un numero..."); scanf("%d",&b); c=a+b; printf("La suma es... %d \n",c); return 0; }

PB004.c
PB004.c
#include <stdio.h> main() { int a=0,b=0,c=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que resta dos numeros solicitados <-\n\n"); printf("Teclee un numero..."); scanf("%d",&a); printf("Teclee un numero..."); scanf("%d",&b); c=a-b; printf("La resta es... %d \n",c); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

49/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB005.c
PB005.c
#include <stdio.h> main() { int a=0,b=0,c=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que multiplica dos numeros solicitados <-\n\n"); printf("Teclee un numero..."); scanf("%d",&a); printf("Teclee un numero..."); scanf("%d",&b); c=a*b; printf("La multiplicacion es... %d \n",c); return 0;

PB006.c
PB006.c
#include <stdio.h> main() { int a=0,b=0,c=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que divide dos numeros solicitados <-\n\n"); printf("Teclee un numero..."); scanf("%d",&a); printf("Teclee un numero..."); scanf("%d",&b); c=a/b; printf("La division es... %d \n",c); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

50/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB007.c
PB007.c
#include <stdio.h> main() { int l=0,a=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el area de un cuadrado <-\n\n"); printf("Teclee el lado..."); scanf("%d",&l); a=l*l; printf("El area del cuadrado es... %d \n",a); return 0; }

PB008.c
PB008.c
#include <stdio.h> main() { float b=0,h=0,a=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el area de un rectangulo <-\n\n"); printf("Teclee la base..."); scanf("%f",&b); printf("Teclee la altura..."); scanf("%f",&h); a=(b*h); printf("El area del rectangulo es... %.2f \n",a); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

51/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB009.c
PB009.c
#include <stdio.h> main() { float b=0,h=0,a=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el area de un triangulo <-\n\n"); printf("Teclee la base..."); scanf("%f",&b); printf("Teclee la altura..."); scanf("%f",&h); a=(b*h)/2; printf("El area del triangulo es... %.2f \n",a); return 0; }

PB010.c
PB010.c
#include <stdio.h> main() { double pi=3.14159265,a=0; float r=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el area de un circulo <-\n\n"); printf("Teclee el radio..."); scanf("%f",&r); a=pi*r*r; printf("El area del circulo es... %.2lf \n",a); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

52/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB011.c
PB011.c
#include <stdio.h> main() { int c=0; double f=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que convierte grados celcius a fahrenheit <-\n\n"); printf("Teclee los grados C..."); scanf("%d",&c); f=(1.8*c)+32; printf("%3d grado(s) C son... %3.2lf grado(s) F \n",c,f); return 0; }

PB012.c
PB012.c
#include <stdio.h> main() { int l=0, v=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el volumen de un cubo <-\n\n"); printf("Teclee el lado..."); scanf("%d",&l); v=l*l*l; printf("El volumen del cubo es... %d \n",v); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

53/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB013.c
PB013.c
#include <stdio.h> main() { int b=0, a=0, h=0,v=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el volumen de un prisma rectangular <-\n\n"); printf("Teclee la base..."); scanf("%d",&b); printf("Teclee el ancho..."); scanf("%d",&a); printf("Teclee la altura..."); scanf("%d",&h); v=b*a*h; printf("El volumen del prisma rectangular es... %d \n",v); return 0; }

PB014.c
PB014.c
#include <stdio.h> main() { int b=0, a=0, h=0,v=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el volumen de una priamide rectangular <-\n\n"); printf("Teclee la base..."); scanf("%d",&b); printf("Teclee el ancho..."); scanf("%d",&a); printf("Teclee la altura..."); scanf("%d",&h); v=(b*a*h)/3; printf("El volumen de la piramide rectangular... %d \n",v); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

54/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB015.c
PB015.c
#include <stdio.h> main() { double pi=3.14159265, v=0; float r=0, h=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el volumen de un cilindro circular <-\n\n"); printf("Teclee el diametro..."); scanf("%f",&r); printf("Teclee la altura..."); scanf("%f",&h); v=(pi*r*r*h); printf("El volumen del cilindro circular es... %.2lf \n",v); return 0; }

PB016.c
PB016.c
#include <stdio.h> main() { double pi=3.14159265, v=0; float r=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que calcula el volumen de unaa esfera <-\n\n"); printf("Teclee el radio..."); scanf("%f",&r); v=(4*pi*r*r*r)/3; printf("El volumen de la esfera es... %.2lf \n",v); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

55/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB017.c
PB017.c
#include <stdio.h> main() { float mil, met; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que convierte de millas nauticas a metros <-\n\n"); printf("Teclee las millas nauticas..."); scanf("%f",&mil); met=1852*mil; printf("%.2f millas nauticas es igual a %.2f metros\n", mil, met); return 0; }

PB018.c
PB018.c
#include <stdio.h> main() { double in=0; float cm=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que convierte centimetros a pulgadas <-\n\n"); printf("Teclee los cm... "); scanf("%f",&cm); in=cm/2.54; printf("->%.2f cm. es igual a %.2lf in.\n",cm,in); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

56/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

Gua del Mdulo Programacin Bsica

PB019.c
PB019.c
#include <stdio.h> main() { double km=0, m=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que convierte kilometros a metros <-\n\n"); printf("Teclee los cm... "); scanf("%lf",&km); m=km*1000; printf("->%.2lf km. es igual a %.2lf m.\n",km,m); return 0; }

PB020.c
PB020.c
#include <stdio.h> main() { double gb=0, kb=0; printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevio (Monterrey III)\n\n"); printf("Carrera: Profesional Tecnico Bachiller en Informatica\n"); printf("Modulo: Programacion Basica\n"); printf("Actividad de evaluacion: 1.1.1 - Desarrollo de programas en C\n\n"); printf("Alumno(a): \n"); printf("Matricula: \t Grupo: \n"); printf("PSP: \n\n"); printf(" -> Programa que convierte kilobytes a gigabytes <-\n\n"); printf("Teclee los kb... "); scanf("%lf",&kb); gb=kb/1000; printf("->%.2lf Kb es igual a %lf Gb.\n",kb,gb); return 0; }

Modelo Acadmico de Calidad para la Competitividad

PBAS-00

57/59

Elaborado por: Reina Liliana Lpez Reyes y Feliciano Nevrez Raizola

S-ar putea să vă placă și