Está en la página 1de 59
Guía del Módulo Programación Básica Programación básica Área(s): Tecnologías de la información y

Guía del Módulo Programación Básica

Programación básica Área(s): Tecnologías de la información y comunicación Carrera(s): Profesional Técnico
Programación básica
Área(s):
Tecnologías de la información y
comunicación
Carrera(s):
Profesional Técnico Bachiller y
Profesional Técnico Bachiller en
Informática
Bachiller y Profesional Técnico Bachiller en Informática Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

Elaborado por: Ing. Feliciano Nevárez Raizola

Guía del Módulo Programación Básica 1. Manejo de los componentes del lenguaje C para el

Guía del Módulo Programación Básica

1. Manejo de los componentes del lenguaje C para el desarrollo de un programa

1

1.1 Identifica los elementos y las características de un programa desarrollado en

lenguaje C, de acuerdo con estándares internacionales

1

1.1.1. Desarrollo de programas en lenguaje C

1

1.2 Organiza y ordena bloques de código para resolver una situación dada mediante

27

estructuras de control de

1.2.1 Desarrolla programas en lenguaje C que utilicen estructuras de decisión y de

control de

27

2. Administración de funciones desarrolladas en lenguaje

33

2.1 Automatiza operaciones mediante la creación de funciones para la agilización de

33

procesos

2.1.1 Desarrolla programas en lenguaje C que utilicen funciones

33

2.2 Maneja memoria del equipo mediante la racionalización y reservación de la misma.

37

2.2.1 Desarrolla programas en lenguaje C que utilicen arreglos de diferentes

dimensiones y que manejen memoria dinámica mediante pilas, colas y listas

37

Prácticas para el laboratorio

48

y listas 37 Prácticas para el laboratorio 48 Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Programación básica Guía del Módulo Programación Básica

Programación básica

Guía del Módulo Programación Básica

1. Manejo de los componentes del lenguaje C para el desarrollo de un programa

1.1 Identifica los elementos y las características de un programa desarrollado en lenguaje C, de acuerdo con estándares internacionales.

1.1.1. Desarrollo de programas en lenguaje C

A. Desarrollo de rutinas de programación

• Análisis de requerimientos

El objetivo principal de esta fase es la consecución, comprensión y explicación de los diversos requisitos para la construcción del programa.

Los requisitos son, básicamente, todos los elementos y características que son requeridas, necesitadas o deseadas por el usuario. Existen dos tipos de requerimientos:

Requerimientos propios del problemapor el usuario. Existen dos tipos de requerimientos: Requerimientos deseables para el programa Dentro de la

Requerimientos deseables para el programatipos de requerimientos: Requerimientos propios del problema Dentro de la etapa de análisis, existen dos tipos

Dentro de la etapa de análisis, existen dos tipos diferentes de actividades:

1. Análisis 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 solución 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 ningún, análisis del problema. En particular, el análisis del problema sólo es necesario para problemas nuevos, difíciles o aún no resueltos.

2. Descripción de la solución

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

a construir. Este comportamiento debe resolver claramente el Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

1/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica problema que se conoció adecuadamente en la etapa anterior. En

Guía del Módulo Programación Básica

problema que se conoció adecuadamente en la etapa anterior. En este momento se deben resolver conflictos de visión, eliminar inconsistencias y ambigüedades.

El producto final es una descripción general del comportamiento del sistema ideal (posible

de ser realizado) que satisfaga el problema. Edward Yourdon lo define como el "modelo

de la tecnología perfecta".

A pesar que las dos etapas presentadas para el análisis 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 programación 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.

• Pseudocódigos

Un pseudocódigo o falso lenguaje, es una serie de normas léxicas y gramaticales parecidas

a la mayoría de los lenguajes de programación, 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 programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software.

El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje

común, instrucciones de programación y palabras clave que definen las estructuras

básicas.

El objetivo del pseudocódigo es permitir que el programador se centre en los aspectos

lógicos de la solución, evitando las reglas de sintaxis de los lenguajes de programación.

No siendo el pseudocódigo un lenguaje formal, los pseudocódigos varían de un programador a otro, es decir, no hay un pseudocódigo estándar.

a otro, es decir, no hay un pseudocódigo estándar. Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

2/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica El pseudocódigo es una herramienta ágil para el estudio y

Guía del Módulo Programación Básica

El pseudocódigo es una herramienta ágil para el estudio y diseño de aplicaciones, veamos un ejemplo de pseudocódigo, que podríamos definir como: lenguaje imperativo, de tercera generación, según el método de programación estructurada.

• Diagramas de flujo

Los diagramas de flujo representan la forma más tradicional para especificar los detalles algorítmicos de un proceso. Se utilizan principalmente en programación, economía y procesos industriales; estos diagramas utilizan una serie de símbolos con significados especiales. Son la representación gráfica de los pasos de un proceso, que se realiza para entender mejor al mismo. Son modelos tecnológicos utilizados para comprender los rudimentos de la programación lineal.

Otra definición del diagrama de flujo es la siguiente:

"Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Para hacer comprensibles los diagramas a todas las personas, los símbolos se someten a una normalización; es decir, se hicieron símbolos casi universales, ya que, en un principio cada usuario podría tener sus propios símbolos para representar sus procesos en forma de Diagrama de Flujo. Esto trajo como consecuencia que sólo aquel que conocía sus símbolos, los podía interpretar. La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente."

B. Identificación 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 años 70; éste lenguaje llevó a la aparición del C.

Con la popularidad de las microcomputadoras muchas compañías comenzaron a implementar su propio C por lo cual surgieron discrepancias entre sí.

Por esta razón ANSI (American National Standards Institute, por sus siglas en inglés), estableció un comité en 1983 para crear una definición no ambigua del lenguaje Ce independiente de la máquina que pudiera utilizarse en todos los tipos de C.

la máquina que pudiera utilizarse en todos los tipos de C. Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

3/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Algunos de las C existentes son: Quick C C++ Turbo C Turbo C ++ Borland

Algunos de las C existentes son:

Quick C C++ Turbo C Turbo C ++ Borland C Borland C++ Microsoft C etc.
C++ Quick C Turbo C Turbo C ++ Borland C Borland C++ Microsoft C etc.
Turbo C Quick C C++ Turbo C ++ Borland C Borland C++ Microsoft C etc.
Turbo C ++ Quick C C++ Turbo C Borland C Borland C++ Microsoft C etc.
Borland C Quick C C++ Turbo C Turbo C ++ Borland C++ Microsoft C etc.
Borland C++ Quick C C++ Turbo C Turbo C ++ Borland C Microsoft C etc.
Microsoft C Quick C C++ Turbo C Turbo C ++ Borland C Borland C++ etc.
etc.Quick C C++ Turbo C Turbo C ++ Borland C Borland C++ Microsoft C

Guía del Módulo Programación Básica

C es un lenguaje de programación de nivel medio ya que combina los elementos del lenguaje de alto nivel con la funcionalidad del ensamblador.

Su característica principal es ser portable, es decir, es posible adaptar los programas escritos para un tipo de computadora en otra.

Otra de sus características principales es el ser estructurado, es decir, el programa se divide en módulos (funciones) independientes entre sí.

El lenguaje C inicialmente fue creado para la programación de

Sistemas operativoslenguaje C inicialmente fue creado para la programación de Intérpretes Editores Ensambladores Compiladores

Intérpretesfue creado para la programación de Sistemas operativos Editores Ensambladores Compiladores Administradores de bases

Editorespara la programación de Sistemas operativos Intérpretes Ensambladores Compiladores Administradores de bases de

Ensambladoresprogramación de Sistemas operativos Intérpretes Editores Compiladores Administradores de bases de datos. Actualmente,

Compiladoresde Sistemas operativos Intérpretes Editores Ensambladores Administradores de bases de datos. Actualmente, debido

Administradores de bases de datos.operativos Intérpretes Editores Ensambladores Compiladores Actualmente, debido a sus características,

Actualmente,

debido

a

sus

características,

puede

ser

utilizado

para

todo

tipo

de

programas.

• ¿Qué es el ANSI C?

La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas. En la práctica, los programadores suelen usar elementos no-portátiles dependientes del compilador o del sistema operativo.

dependientes del compilador o del sistema operativo. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

4/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica • ¿Cuál es la estructura general de un programa en

Guía del Módulo Programación Básica

• ¿Cuál es la estructura general de un programa en C?

Aunque cada uno de los programas es distinto, todos tienen características comunes. Los elementos de un programa en C son los siguientes:

Comentarios Inclusión de archivos main()

{ variables locales flujo de sentencias

}

Definición de funciones creadas por el programador utilizadas en main()

Veamos en qué consiste cada uno:

Comentarios: Se identifican porque van entre diagonales y asterisco. Nos sirve para escribir información 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 versión es, etc.

archivos: Consiste en mandar llamar a la o las bibliotecas donde se

encuentran definidas las funciones de C (instrucciones) que estamos utilizando en el programa.

Inclusión de

En realidad, la inclusión 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 estándar que va a utilizar.

main(): En C, todo está constituido a base de funciones. El programa principal no es la excepción. main() indica el comienzo de la función principal del programa la cual se

Variables locales: Antes de realizar alguna operación en el programa, se deben declarar la(s) variable(s) que se utilizarán en el programa.

Flujo de

programa.

sentencias: Es la declaración de todas las instrucciones que conforman el

Definición 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 función principal.

contienen los mismos elementos que la función principal. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

5/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

− Bibliotecas Guía del Módulo Programación Básica El lenguaje C es muy simple. Carece de

Bibliotecas

Guía del Módulo Programación Básica

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 dinámica.

No obstante, el estándar de C define un conjunto de bibliotecas de funciones, que necesariamente vienen con todo entorno de compilación 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 estándares son:

entrada y salida de datos (stdio.h ) stdio.h)

manejo de cadenas (string.h ) string.h)

memoria dinámica (stdlib.h ) stdlib.h)

rutinas matemáticas (math.h ) math.h)

Declaración 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.

Declaración:

tipo nombre;

Ejemplo:

int pepe;

Las variables globales se declaran justo antes de main().

Función main ()

En C, todo está constituido a base de funciones. El programa principal no es la excepción. main() indica el comienzo de la función principal del programa la cual se delimita con llaves.

principal del programa la cual se delimita con llaves. Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

6/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

− Comentarios Guía del Módulo Programación Básica En el C original, tienen la forma /*

Comentarios

Guía del Módulo Programación Básica

En el C original, tienen la forma /* cualquier texto */

Los comentarios se pueden extender varias líneas

No se pueden anidar comentarios (comentarios dentro de otros)

En C++ se usan también comentarios de una sola línea. 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 línea.

Ejemplos:

{ /* Esto es un comentario que ocupa varias líneas

*/ // 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 versión es de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989

de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989 Modelo Académico de
de 1987, a la que siguieron las versiones 1.5 y 2.0, de 1989 Modelo Académico de

Modelo Académico de Calidad para la Competitividad

PBAS-00

7/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Fue el compilador más popular para desarrollar en C en

Guía del Módulo Programación Básica

Fue el compilador más 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 también 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 año 2000.

En septiembre de 2006, Borland lanzó una versión recortada del C++Builder para Windows, con el nombre de Turbo C++ for Windows, recuperando así la clásica denominación. 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 versión Pro.

• Compilador.

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a cómo piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

D. Ejecución de pruebas del programa desarrollado

• ¿Qué es un debugger o depurador?

Un depurador (en inglés, debugger), es un programa que permite depurar o limpiar los errores de otro programa informático.

depurar o limpiar los errores de otro programa informático. Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

8/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Al Iniciarse la depuración, el depurador lanza el programa a

Guía del Módulo Programación Básica

Al Iniciarse la depuración, el depurador lanza el programa a depurar. Éste se ejecuta normalmente hasta que el depurador detiene su ejecución, permitiendo al usuario examinar la situación.

El depurador permite detener el programa en:

Un punto determinado mediante un punto de ruptura.la situación. El depurador permite detener el programa en: Un punto determinado bajo ciertas condiciones mediante

Un punto determinado bajo ciertas condiciones mediante un punto de ruptura condicional.en: Un punto determinado mediante un punto de ruptura. Un momento determinado cuando se cumplan ciertas

Un momento determinado cuando se cumplan ciertas condiciones.condiciones mediante un punto de ruptura condicional. Un momento determinado a petición del usuario. Durante esa

Un momento determinado a petición del usuario.momento determinado cuando se cumplan ciertas condiciones. Durante esa interrupción, el usuario puede: Examinar y

Durante esa interrupción, el usuario puede:

Examinar y modificar la memoria y las variables del programa.del usuario. Durante esa interrupción, el usuario puede: Examinar el contenido de los registros del procesador.

Examinar el contenido de los registros del procesador.y modificar la memoria y las variables del programa. Examinar la pila de llamadas que han

Examinar la pila de llamadas que han desembocado en la situación actual.Examinar el contenido de los registros del procesador. Cambiar el punto de ejecución, de manera que

Cambiar el punto de ejecución, de manera que el programa continúe su ejecución en un punto diferente al punto en el que fue detenido.de llamadas que han desembocado en la situación actual. Ejecutar instrucción a instrucción. Ejecutar partes

Ejecutar instrucción a instrucción.en un punto diferente al punto en el que fue detenido. Ejecutar partes determinadas del código,

Ejecutar partes determinadas del código, como el interior de una función, o el resto de código antes de salir de una función.el que fue detenido. Ejecutar instrucción a instrucción. El depurador depende de la arquitectura y sistema

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 más comunes.

E. Realiza operaciones de entrada y salida de datos.

Salida por pantalla: printf

La función printf se utiliza según este formato:

printf ( “cadena de formato”, arg1, arg2,

En la cadena de formato aparecen:

argN );

el texto que se desea imprimirarg1, arg2, En la cadena de formato aparecen: argN ); caracteres especiales ⇒ secuencias de escape

caracteres especiales ⇒ secuencias de escape secuencias de escape

indicaciones del formato de los argumentosimprimir caracteres especiales ⇒ secuencias de escape Los argumentos son expresiones cualesquiera. Modelo

Los argumentos son expresiones cualesquiera.

los argumentos Los argumentos son expresiones cualesquiera. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

9/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Para usar printf , hay que #include <stdio.h> escribir al Formatos de printf (básico) %d

Para

usar

printf,

hay

que

#include <stdio.h>

escribir

al

Formatos de printf (básico)

%d Entero decimal

%u Entero decimal con signo

%x Entero hexadecimal

%c Carácter

%f Coma flotante (float)

%lf Coma flotante (double)

Ejemplos:

principio

del

Guía del Módulo Programación Básica

programa

la

directiva

int una = 1234; char otra = „h‟; main()

{ printf( “una vale %d; otra vale %c\n”, una, otra );

}

Secuencias de escape

\n Salto de línea

\t Tabulación

\a Sonido

Formatos de printf (avanzado)

Se puede modificar el formato de salida, indicando cuantos decimales llevará el número, si se rellena de ceros por la izquierda, etc.

La estructura (casi) completa de un formato de printf es

%0-dígitos.precisión tipo

de un formato de printf es %0-dígitos.precisión tipo Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

10/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Formato Significado %5d Entero decimal alineado a la izquierda,

Guía del Módulo Programación Básica

Formato

Significado

%5d

Entero decimal alineado a la izquierda, ocupando cinco espacios

%04u

Entero sin signo ocupando cuatro espacios, y rellenando de ceros a la izquierda si hace falta

%.2lf

Número real (doble precisión) con dos y sólo dos decimales

%5.3d

Entero ocupando cinco espacios; aparecen tres cifras como mínimo (se rellena de ceros)

Entrada de datos: scanf

Se pueden recoger datos desde el teclado con la función scanf.

Sintaxis:

scanf ( formato, & arg1, & arg2,

);

En formato se especifica qué tipo de datos se quieren leer. Se utiliza la misma descripción de formato que en printf. También 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 sólo 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 numéricos.

• 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.

declarar del tipo adecuado a los valores que van a contener. Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

11/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

El C dispone de estos tipos básicos: − char Guía del Módulo Programación Básica Un

El C dispone de estos tipos básicos:

char

Guía del Módulo Programación Básica

Un dato de tipo carácter (char en lenguaje C) es aquel que puede tomar por valor un carácter perteneciente al conjunto de los caracteres que puede representar el ordenador.

En lenguaje C, el valor de un dato de tipo carácter 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 carácter.

Respuesta correcta a la pregunta 3

:

'c'

El tipo char permite manejar caracteres (letras), aunque se trata de un tipo numérico.

Normalmente el rango de valores va de 128 a +127 (signed char), o bien de 0 a 255

(unsigned char).

Los literales de tipo carácter se pueden utilizar como números.

char caracter; int entero; main()

{ caracter = 65; // valdría como una „A‟

}

entero = „A‟;

// valdría como un 65

int

Un dato de tipo entero (int en lenguaje C) es aquel que puede tomar por valor un número perteneciente al conjunto de los números enteros (Z), el cual está formado por los números naturales, su opuesto (números negativos) y el cero.

Z

= {

, -3, -2, -1, 0, 1, 2, 3,

}

Ejemplo: La edad de una persona y el año en que nació, son dos datos de tipo entero:

Edad

:

29

Año

:

1976

Z es un conjunto infinito de números enteros, y como el ordenador no puede representarlos todos, un dato de tipo entero sólo puede tomar por valor un número

dato de tipo entero sólo puede tomar por valor un número Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

12/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica perteneciente a un subconjunto de Z. Los valores máximo y

Guía del Módulo Programación Básica

perteneciente a un subconjunto de Z. Los valores máximo y mínimo de dicho subconjunto varían según las características 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 más pequeño)

long

entero largo (rango más amplio)

unsigned

entero sin signo (0 N)

signed

entero con signo (-N-1

+N)

La palabra int se puede omitir en la declaración de la variable.

Los modificadores de tamaño (short, long) y de signo (signed, unsigned) se pueden combinar.

Por omisión, un entero es signed (en la práctica, esta palabra reservada casi nunca se emplea).

Ejemplos:

unsigned sin_signo;

long saldo_en_cuenta; /* entero largo con signo */ unsigned long telefono; /* entero largo sin signo */

/* entero sin signo */

float o double

Un dato de tipo real (float o double en lenguaje C) es aquel que puede tomar por valor un número perteneciente al conjunto de los números reales (R), el cual está formado por los números racionales e irracionales.

Ejemplo: El peso de una persona (en kilogramos) y su altura (en centímetros), son datos que pueden considerarse de tipo real.

Peso

:

75,3

Altura

:

172,7

conjunto infinito de números reales, y como el ordenador no puede

representarlos todos, un dato de tipo real sólo puede tomar por valor un número

R es

un

de tipo real sólo puede tomar por valor un número R es un Modelo Académico de

Modelo Académico de Calidad para la Competitividad

PBAS-00

13/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica perteneciente a un subconjunto de R. Los valores de dicho

Guía del Módulo Programación Básica

perteneciente a un subconjunto de R. Los valores de dicho subconjunto varían según las características 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 número 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 ningún valor, es decir, es un dato vacío (nulo). Más 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 función o un tipo de datos.

Un identificador válido ha de empezar por una letra o por el carácter de subrayado _, seguido de cualquier cantidad de letras, dígitos o subrayados.

OJO: Se distinguen mayúsculas de minúsculas.

No se pueden utilizar palabras reservadas como int, char o while.

Muchos compiladores no permiten letras acentuadas o eñes.

Ejemplos válidos:

char letra;

int Letra;

float CHAR;

int

int cantidad_envases; double precio123;

int

variable

;

;

Ejemplos no válidos:

int 123var;

/* Empieza por dígitos */

char int;

/* Palabra reservada */

int una sola; /* Contiene espacios */

int US$;

int var.nueva; /* Contiene el punto /

int eñe;

/* Contiene $ */

/* Puede no funcionar */

punto / int eñe; /* Contiene $ */ /* Puede no funcionar */ Modelo Académico de

Modelo Académico de Calidad para la Competitividad

PBAS-00

14/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

• Inicialización La forma de dar valor a una variable es variable = expresión ;

• Inicialización

La forma de dar valor a una variable es

variable = expresión ;

Se le llama asignación.

Guía del Módulo Programación Básica

También se puede dar valor a una variable en el mismo momento en que se declara (inicialización).

tipo variable = expresión ;

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; /* asignación */

}

valor2 = 5;

/* otra asignación */

• Constantes

En lenguaje C, una constante puede ser de tipo entero, real, carácter, de cadena o enumerado. Las contantes de tipo enumerado se van a estudiar más adelante. En cuanto a las demás, se pueden expresar de dos formas diferentes:

1. Por su valor.

2. Con un nombre (identificador).

Ejemplo 1: Las siguientes contantes de tipo entero están 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 mayoría de los lenguajes de programación. En C, para representar a las constantes, se utilizan constantes simbólicas. Una constante simbólica representa (sustituye) a una secuencia de caracteres, en vez de representar a un valor (dato almacenado en memoria).

vez de representar a un valor (dato almacenado en memoria). Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

15/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Para declarar una constante simbólica, en lenguaje C, se utiliza

Guía del Módulo Programación Básica

Para declarar una constante simbólica, 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 código fuente del programa, todas las ocurrencias del <nombre_de_la_constante> por la

<secuencia_de_caracteres>, antes de la compilación.

Ejemplo 2: Dos constantes muy habituales son:

#define PI 3.141592 #define NUMERO_E 2.718281

En programación es una buena práctica escribir los identificadores de las constantes en mayúsculas, de esta forma es más fácil localizarlos en el código de un programa. Nótese que, después de la declaración de una constante simbólica no se escribe un carácter punto y coma (;), cosa que sí se debe hacer al declarar una variable. Por otra parte, no se puede declarar más de una constante simbólica en una misma línea de código.

Ejemplo 3: Para declarar las constantes simbólicas 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 ejecución del programa. En cierta manera, la variable temperatura está simulando a una constante.

 

temperatura

-5

Ya se sabe cómo escribir la declaración de una constante y de las variables que utilice un programa y, también, se conoce el lugar en que se tiene que escribir la directiva del preprocesador #define para declarar la constante.

del preprocesador #define para declarar la constante. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

16/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica En cuanto a las variables que utiliza un programa, su

Guía del Módulo Programación Básica

En cuanto a las variables que utiliza un programa, su declaración puede escribirse en varios lugares, pero, de momento las vamos a declarar inmediatamente después del carácter abrir llave ({) de la función 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 construcción 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

{

inicial a la lista de valores dados en enum : enum dia { Modelo Académico de

Modelo Académico de Calidad para la Competitividad

PBAS-00

17/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica lunes=1, martes, miercoles, jueves, viernes, }; sabado, domingo En este

Guía del Módulo Programación Básica

lunes=1, martes, miercoles, jueves, viernes,

};

sabado, domingo

En este caso los valores van del 1 al 7.

También 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 aritméticas, tales como la suma, la resta o la multiplicación.

Ejemplo 1: Algunos ejemplos son:

111

+ 6 (operación suma)

19

- 72 (operación resta)

24

* 3 (operación multiplicación)

Todas las operaciones del ejemplo constan de dos operandos (constantes enteras) y un operador. La mayoría de las veces es así, pero, también es posible realizar operaciones con distinto número 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 más (+) y menos (-) tienen dos usos:

1. Operadores suma y resta.

2. Signos de un número (también son operadores).

Los operadores de signo más (+) y menos (-) son operadores monarios, también llamados unarios, ya que, actúan, solamente, sobre un operando.

unarios, ya que, actúan, solamente, sobre un operando. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

18/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Los caracteres abrir paréntesis "(" y cerrar paréntesis ")" se

Guía del Módulo Programación Básica

Los caracteres abrir paréntesis "(" y cerrar paréntesis ")" se utilizan para establecer la prioridad de los operadores, es decir, para establecer el orden en el que los operadores actúan sobre los operandos.

Un operador indica el tipo de operación a realizar sobre los operandos (datos) que actúa. Los operandos pueden ser:

Constantes (expresadas por su valor o con un nombre (identificador)).los operandos (datos) que actúa. Los operandos pueden ser: Variables. Llamadas a funciones. Elementos de formaciones

Variables.(expresadas por su valor o con un nombre (identificador)). Llamadas a funciones. Elementos de formaciones (

Llamadas a funciones.por su valor o con un nombre (identificador)). Variables. Elementos de formaciones ( arrays ). En

Elementos de formaciones (arrays ). arrays).

En este apartado se van a tratar operaciones en donde sólo aparecen constantes y variables. Cuando se combinan uno o más operadores con uno o más operandos se obtienen una expresión. De modo que, una expresión 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 expresión, en la cual, el operador siempre actúa sobre al menos un operando. Por el contrario, un operando sí puede aparecer solo en una expresión.

En programación, de la evaluación de una expresión siempre se obtiene un valor. Dicho valor puede ser de tipo: entero, real, lógico, carácter o cadena. Por consiguiente, una expresión puede ser:

Aritmética (devuelve un número entero o real).o cadena. Por consiguiente, una expresión puede ser: Modelo Académico de Calidad para la Competitividad PBAS-00

puede ser: Aritmética (devuelve un número entero o real). Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

19/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Lógica (devuelve un valor lógico: verdadero o falso) De carácter

Guía del Módulo Programación Básica

Lógica (devuelve un valor lógico: verdadero o falso)Guía del Módulo Programación Básica De carácter (devuelve un carácter representable por el ordenador). De cadena

De carácter (devuelve un carácter representable por el ordenador).Lógica (devuelve un valor lógico: verdadero o falso) De cadena (devuelve una cadena). − Aritméticos De

De cadena (devuelve una cadena).(devuelve un carácter representable por el ordenador). − Aritméticos De la evaluación de una expresión

Aritméticos

De la evaluación de una expresión aritmética siempre se obtiene un valor de tipo entero o real. En lenguaje C existen algunos operadores que no se utilizan en pseudocódigo, y al revés. A continuación, se van a ver algunas similitudes y diferencias entre ambos lenguajes.

 

Operadores aritméticos:

 
 

Pseudocódigo:

C:

+

Suma Resta

 

-

*

*

Multiplicación Potencia

**

/

/

División

div

/

División

mod

%

Módulo (resto de la división entera)

+

+

Signo más

-

-

Signo menos

Figura. Comparación entre operadores aritméticos en pseudocódigo y en C.

Como se puede apreciar, existen tres diferencias importantes entre los operadores aritméticos en pseudocódigo y en lenguaje C:

1. El operador potencia (**) no existe en lenguaje C.

2. En lenguaje C, sólo existe un operador de división (/).

3. En lenguaje C, el operador módulo (mod) se escribe con el carácter porcentaje (%).

Ejemplo: A partir de las variables:

En pseudocódigo:

entero a = 4, b = 7, c = 2

las variables: En pseudocódigo: entero a = 4, b = 7, c = 2 Modelo Académico

Modelo Académico de Calidad para la Competitividad

PBAS-00

20/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

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

En lenguaje C:

int a = 4, b = 7, c = 2;

Podemos escribir, por ejemplo, la expresión:

En pseudocódigo:

-a * ( b mod c )

En lenguaje C:

-a * ( b

% c )

Guía del Módulo Programación Básica

De la evaluación de esta expresión se obtiene el valor

-4 (actúan en orden los operadores: (%), menos (-) y (*))

De relación

Un operador relacional se utiliza para comparar los valores de dos expresiones. Éstas deben ser del mismo tipo (aritméticas, lógicas o de carácter).

En la siguiente figura se comparan los operadores relacionales en pseudocódigo y en lenguaje C:

 

Operadores relacionales:

 
 

Pseudocódigo:

C:

<

<

Menor que Menor o igual que

Mayor que Mayor o igual que

 

<=

<=

>

>

>=

>=

=

==

Igual que

<>

!=

Distinto que

Figura. Comparación entre operadores relacionales en pseudocódigo y en C.

Las diferencias son dos:

1. En C, el operador igual que (=) se escribe con los caracteres igual-igual (==).

que (=) se escribe con los caracteres igual-igual (==). Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

21/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica 2. En C, el operador distinto que ( <> )

Guía del Módulo Programación Básica

2. En C, el operador distinto que (<>) se escribe con los caracteres admiración-igual (!=).

Ejemplo: A partir de las variables:

En pseudocódigo:

entero p = 45, q = 186

En lenguaje C:

int p = 45, q = 186;

Podemos escribir la expresión:

En pseudocódigo:

p <> q

En lenguaje C:

p != q

De su evaluación se obtiene:

En pseudocódigo:

verdadero ( p es distinta de q )

En lenguaje C:

1 (C simula el valor lógico verdadero con el valor entero 1)

En lenguaje C, los datos de tipo lógico se simulan con datos de tipo entero, considerándose el valor 0 como falso, y cualquier otro valor entero como verdadero.

Lógicos

Un operador lógico actúa, exclusivamente, sobre valores de expresiones lógicas.

exclusivamente, sobre valores de expresiones lógicas. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

22/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica En la siguiente figura se comparan los operadores lógicos en

Guía del Módulo Programación Básica

En la siguiente figura se comparan los operadores lógicos en pseudocódigo y en lenguaje C:

Operadores lógicos:

Pseudocódigo:

C:

y

o

&&

||

Conjunción

Disyunción

no

!

Negación

Figura. Comparación entre operadores lógicos en pseudocódigo y en C.

Ejemplo: Habiendo declarado las variables:

En pseudocódigo:

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

En lenguaje C:

int r = 2, s = 9, t = 8;

Se puede escribir

En pseudocódigo:

no( r =

s o r <=

t )

En lenguaje C:

!( r ==

s

||

r <= t )

La expresión se evalúa a

En pseudocódigo:

falso (actúan en orden los operadores: (<=), (==), (||) y (!))

En lenguaje C:

0 (C simula el valor lógico falso con el valor entero 0)

C: 0 (C simula el valor lógico falso con el valor entero 0) Modelo Académico de

Modelo Académico de Calidad para la Competitividad

PBAS-00

23/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

− De incremento y decremento Guía del Módulo Programación Básica En lenguaje C, tanto el

De incremento y decremento

Guía del Módulo Programación Básica

En lenguaje C, tanto el operador incremento (++) como el operador decremento (--) actúan 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

8

s

3

Se pueden escribir las instrucciones de expresión:

r++;

s--;

Dichas instrucciones son equivalentes a:

r = r + 1;

s

1;

= s

-

Y también se pueden escribir como:

++r;

--s;

Tras su ejecución, el aspecto de la memoria será:

… …
… …

r 9

s 2

el aspecto de la memoria será: … … r 9 s 2 Modelo Académico de Calidad

Modelo Académico de Calidad para la Competitividad

PBAS-00

24/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica En estas instrucciones, ambos operadores se pueden escribir, indistintamente,

Guía del Módulo Programación Básica

En estas instrucciones, ambos operadores se pueden escribir, indistintamente, antes o después de los operandos sobre los que actúan. Pero, cuando en una expresión, además del operador incremento o decremento, también aparecen otros operadores, entonces sí que hay que tener en cuenta la diferencia que supone el escribirlos antes o después.

Ejemplo 2: A partir de las variables:

int i = 5, j, k = 5, m;

 

 

i

5

j

 

k

5

m

 
 

Si se ejecutan las instrucciones:

 

j

= i++;

m

= ++k;

Los valores de las variables en memoria serán:

 

 

i

6

j

5

k

6

m

6

 

Obsérvese que, los valores de j y m son diferentes. Esto es debido a que, cuando se evalúa la expresión j = i++, en primer lugar, se le asigna a j el valor de i (es decir, un 5) y, a continuación, se incrementa el valor de la variable i. Por el contrario, cuando se evalúa la expresión m = ++k, primero, se incrementa el valor de k (de 5 pasa a ser 6) y, después, este nuevo valor de k se le asigna a m.

ser 6) y, después, este nuevo valor de k se le asigna a m. Modelo Académico

Modelo Académico de Calidad para la Competitividad

PBAS-00

25/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica En resumen, cuando en una expresión el operador incremento (++)

Guía del Módulo Programación Básica

En resumen, cuando en una expresión el operador incremento (++) o decremento (--) precede al operando sobre el que actúa (por ejemplo ++k), antes de utilizar el valor de dicho operando para otro propósito, este se incrementa. De ser al revés, es decir, si es el operando quien precede al operador (por ejemplo i++), el valor de dicho operando se incrementa después de ser utilizado para otro fin.

• Precedencia de operadores.

La prioridad de todos los operadores del lenguaje C estudiados hasta el momento es:

Operadores lógicos:

( )

[

]

Llamada a una función e índice de un array

+ - ++ -- ! (<tipo>) Signo más, signo menos, incremento, decremento, negación y conversión de tipo

* / %

Multiplicación, división, módulo

+ -

Suma y resta

< <= > >=

== !=

&&

||

Menor que, menor igual que, mayor que, mayor o igual que

Igual que y distinto que

Conjunción

Disyunción

= += -= *= /= %=

Operadores de asignación

Figura. Prioridad de los operadores aritméticos, de índice de un array, de llamada a una función, relacionales, lógicos, de asignación y de conversión de tipo en C.

Obsérvese que, en lenguaje C, tanto los paréntesis "( )" que se utilizan para llamar a una función, como los corchetes "[ ]" que albergan el índice de un array, también son considerados operadores. Además, son los operadores más prioritarios y, en una expresión, se evalúan de izquierda a derecha.

Por otra parte, los operadores incremento (++), decremento (--) y conversión de tipo "(<tipo>)" entran dentro de la categoría de operadores monarios. De manera que, al igual que los operadores signo más (+), signo menos (-), negación (!) y de asignación, todos ellos se evalúan de derecha a izquierda en una expresión, al revés que todos los demás.

izquierda en una expresión, al revés que todos los demás. Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

26/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica 1.2 Organiza y ordena bloques de código para resolver una

Guía del Módulo Programación Básica

1.2 Organiza y ordena bloques de código para resolver una situación dada mediante estructuras de control de flujo.

1.2.1 Desarrolla programas en lenguaje C que utilicen estructuras de decisión y de control de flujo.

A. Identificación de proposiciones y bloques de código

• ¿Qué es proposición o sentencia?

Una sentencia es un fragmento de código.

Una sentencia simple es una expresión 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 código 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”); }

}

{ x=1; y=2; } { z=0; printf(“hola \ n”); } } Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

27/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica B. Aplica estructuras de decisión para definir el orden de

Guía del Módulo Programación Básica

B. Aplica estructuras de decisión para definir el orden de ejecución de bloques de código

• if – else

La construcción if sirve para ejecutar código sólo si una condición es cierta:

if

( condición ) sentencia

La condición es una expresión de cualquier clase.

Si el resultado de la expresión es CERO, se considera una condición FALSA.La condición es una expresión de cualquier clase. Si el resultado de la expresión NO ES

Si el resultado de la expresión NO ES CERO, se considera una condición CIERTA.de la expresión es CERO, se considera una condición FALSA. Ejemplo: int x = 1; main()

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 construcción else se pueden definir acciones para cuando la condición del if sea falsa.

La sintaxis es

if ( condición ) 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 según el valor de una expresión.

acciones diferentes según el valor de una expresión. Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

28/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Ejemplo de sintaxis: switch ( expresión ) { case valor1: sentenciasA break; case valor2: break;

Ejemplo de sintaxis:

switch ( expresión )

{ case valor1:

sentenciasA

break;

case valor2:

break;

case valor3:

case valor4:

break;

default:

sentenciasB

sentenciasC

sentenciasD

}

Guía del Módulo Programación Básica

Las sentenciasA se ejecutarán si expresión adquiere el valor1.

Las sentenciasB se ejecutarán si adquiere el valor2.

Las sentenciasC se ejecutarán si adquiere el valor3 o el valor4, indistintamente.

Cualquier otro valor de expresión conduce a la ejecución 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, continúo\n"); break;

case 2:

salir = 1; break;

default:

printf ("opción no reconocida\n");

}

default: printf ("opción no reconocida\n"); } Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

29/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica C. Aplica estructuras de ciclo para la ejecución continua y/o

Guía del Módulo Programación Básica

C. Aplica estructuras de ciclo para la ejecución continua y/o repetida de bloques de código.

• for

También se pueden ejecutar bucles con for, según esta sintaxis:

for ( expresión_inicial; condición; expresión_de_paso ) sentencia

La expresión_inicial se ejecuta antes de entrar en el bucle.

Si la condición es cierta, se ejecuta sentencia y después expresión_de_paso.

Luego se vuelve a evaluar la condición, y así se ejecuta la sentencia una y otra vez hasta que la condición sea falsa.

El bucle for es (casi) equivalente a

expresión_inicial; while ( condición ) {

sentencia

expresión_de_paso;

}

Ejemplo típico de uso:

int i;

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

• while

Para ejecutar el mismo código varias veces, se puede utilizar:

while ( condición ) sentencia

La sentencia se ejecuta una y otra vez mientras la condición sea cierta.

Ejemplos:

main()

{ int x=1;

while ( x < 100 )

{

Ejemplos: main() { int x=1; while ( x < 100 ) { Modelo Académico de Calidad

Modelo Académico de Calidad para la Competitividad

PBAS-00

30/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

printf(“Línea número %d \ n”,x); x++; } } Ejemplo usando el operador de predecremento: main()

printf(“Línea número %d\n”,x); x++;

}

}

Ejemplo usando el operador de predecremento:

main()

{ int x=10; while ( --x )

{ printf(“una línea\n”);

}

}

Guía del Módulo Programación Básica

En cada iteración se decrementa la variable x y se comprueba el valor devuelto por --x. Cuando esta expresión devuelva un cero, se abandonará el bucle. Esto ocurre después de la iteración en la que x vale uno.

• do – while

Parecido al bucle while, pero iterando al menos una vez.

Sintaxis:

do { sentencia } while ( condición );

La sentencia se ejecuta al menos la primera vez; luego, mientras la condición sea cierta, se itera la sentencia.

Se recomienda no utilizar esta construcción, porque las construcciones while y for bastan para diseñar cualquier clase de bucles. Muy pocos programas hoy día usan esta construcción.

goto y etiquetas

Sirve para saltar incondicionalmente a un punto cualquiera del programa. La sintaxis es

goto etiqueta;

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

colocándola en el punto adecuado seguida de dos puntos. Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

31/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Sólo se puede saltar a una etiqueta que se encuentre

Guía del Módulo Programación Básica

Sólo se puede saltar a una etiqueta que se encuentre en la misma función donde se invoca a goto.

Ejemplo:

parriba:

// declaración de etiqueta

// salto directo a una etiqueta if (error) goto pabajo;

if (repetir) goto parriba;

pabajo: // declaración de etiqueta

• Ciclos infinitos.

Bucle for: omisión de expresiones

Las tres expresiones del bucle for se pueden omitir, con el siguiente resultado.

Se omite

Resultado

expresión_inicial

no se hace nada antes del bucle

condición

la condición es siempre cierta (1)

expresión_de_paso

no se hace nada tras cada iteración

Ejemplos:

for ( ; resultado!=-1 ; ) {

for ( ; ; ) { /* Bucle infinito */ }

}

Precauciones con if y bucles

Asignaciones en los if y los bucles

Hemos visto que una asignación es una expresión. Por ello se puede colocar dentro de cualquier construcción if, while o similar:

if ( variable = valor ) {

}

Este uso muchas veces es erróneo, porque casi siempre pretendemos escribir:

if ( variable == valor ) {

}

siempre pretendemos escribir: if ( variable == valor ) { } Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

32/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Pero como es correcto, el compilador no abortará si se

Guía del Módulo Programación Básica

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. Administración de funciones desarrolladas en lenguaje C.

2.1 Automatiza operaciones mediante la creación de funciones para la agilización de procesos.

2.1.1 Desarrolla programas en lenguaje C que utilicen funciones

A. Identifica los componentes de una función

• ¿Qué es una función?

Las funciones son porciones de código que devuelven un valor.

Permiten descomponer el programa en módulos que se llaman entre ellos.

En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones.

La definición de una función específica lo siguiente:

nombre de la funciónLa definición de una función específica lo siguiente: número de argumentos que lleva y tipo de

número de argumentos que lleva y tipo de cada uno de ellosuna función específica lo siguiente: nombre de la función tipo de datos que devuelve Cuerpo de

tipo de datos que devuelvenúmero de argumentos que lleva y tipo de cada uno de ellos Cuerpo de la función

Cuerpo de la función (el código que ejecuta)lleva y tipo de cada uno de ellos tipo de datos que devuelve Sintaxis: tipo nombre

Sintaxis:

tipo nombre ( arg1, arg2,

{

cuerpo

}

)

ejecuta) Sintaxis: tipo nombre ( arg1, arg2, { cuerpo } ) Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

33/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Cada argumento se especifica como en una declaración de variable.

Guía del Módulo Programación Básica

Cada argumento se especifica como en una declaración de variable.

El cuerpo de la función debería contener una sentencia donde se devuelve el resultado de la función, que se hace de esta forma:

return expresión;

La función devolverá el resultado de la expresión.

Ejemplo de función

Función que devuelve la suma de dos enteros.

int suma ( int a, int b )

{

}

return a+b;

Llamadas a función

Para llamar a una función, se escribe su nombre y entre paréntesis los valores que se deseen dar a los argumentos:

función ( expr1, expr2,

)

Cada expresión se evalúa y su resultado se pasa como argumento a la función. Las expresiones han de tener el mismo tipo del argumento correspondiente, o al menos un tipo compatible.

x = suma ( 1, a+5 );

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

/* correcto */

Una llamada a función es una expresión, con todo lo que ello implica.

No es necesario recoger en una variable el valor devuelto por la función.

(Por ejemplo, printf y scanf son funciones que devuelven un entero).

Funciones sin argumentos

Se declaran con void entre paréntesis (sólo en C).

int fecha (void)

{ }

void entre paréntesis (sólo en C). int fecha (void) { } Modelo Académico de Calidad para

Modelo Académico de Calidad para la Competitividad

PBAS-00

34/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Se las llama así: dato = fecha(); Guía del Módulo Programación Básica … es decir,

Se las llama así:

dato = fecha();

Guía del Módulo Programación Básica

es decir, siempre hay que escribir los paréntesis aunque no haya argumentos.

En C++ se declaran sólo con los paréntesis, sin el void.

Funciones sin argumentos

Se declaran con void entre paréntesis (sólo en C).

int fecha (void) {

}

Se las llama así:

dato = fecha();

…es decir, siempre hay que escribir los paréntesis aunque no haya argumentos.

En C++ se declaran sólo con los paréntesis, sin el void.

Argumentos de entrada/salida o paso por referencia

Una función en C no puede alterar las variables pasadas como parámetros. Los parámetros se pasan por valor.

#include <stdio.h>

/* función inútil */

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 );

}

*/ printf ( "la variable x vale ahora %d\n", x ); } Modelo Académico de Calidad

Modelo Académico de Calidad para la Competitividad

PBAS-00

35/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Para conseguir alterar una variable pasada como parámetro, hay que

Guía del Módulo Programación Básica

Para conseguir alterar una variable pasada como parámetro, hay que recurrir a los punteros. (Se verá más 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 sustitución 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 característica: 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) );

}

y=20; printf("EL minimo es %d\n", MIN(x,y) ); } Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

36/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Cuando se compila este programa, el compilador sustituirá la expresión

Guía del Módulo Programación Básica

Cuando se compila este programa, el compilador sustituirá la expresión definida por MIN(x,y), excepto que x e y serán usados como los operandos. Así después de que el compilador hace la sustitución, 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 definición apropiada. Por lo tanto, si en el código se hubiera puesto algo como:

x = MIN(q+r,s+t);

…después del preprocesamiento, el código podría 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 */

/*

#define IZQ_DESP_8 <<8

y esta definida en la biblioteca math.h */

La última macro IZQ_DESP_8 es solamente válida en tanto el reemplazo del contexto es válido, por ejemplo: x = y IZQ_DESP_8.

El uso de la sustitución de macros en el lugar de las funciones reales tiene un beneficio importante: incrementa la velocidad del código porque no se penaliza con una llamada de función. Sin embargo, se paga este incremento de velocidad con un incremento en el tamaño del programa porque se duplica el código.

2.2 Maneja memoria del equipo mediante la racionalización y reservación de la misma.

2.2.1 Desarrolla programas en lenguaje C que utilicen arreglos de diferentes dimensiones y que manejen memoria dinámica mediante pilas, colas y listas.

A. Manejo de apuntadores de memoria.

• ¿Qué es un apuntador?

El tipo de datos más característico del C son los punteros. Un puntero contiene un valor que es la dirección en memoria de un dato de cierto tipo. Los punteros se emplean en C

de un dato de cierto tipo. Los punteros se emplean en C Modelo Académico de Calidad

Modelo Académico de Calidad para la Competitividad

PBAS-00

37/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica para muchas cosas, por ejemplo recorrer vectores, manipular estructuras creadas

Guía del Módulo Programación Básica

para muchas cosas, por ejemplo recorrer vectores, manipular estructuras creadas dinámicamente, pasar parámetros 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 dirección.

Un puntero es una dirección dentro de la memoria, o sea, un apuntador a donde se encuentra una variable.

• ¿Cómo utilizar un apuntador?

Operaciones básicas

Declaración

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).

Asignación

El valor que puede adquirir un puntero es, por ejemplo, la dirección de una variable.

El operador & devuelve la dirección 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;

de desreferencia, que es el asterisco: *puntero = 45; Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

38/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica En este caso, se está introduciendo un 45 en la

Guía del Módulo Programación Básica

En este caso, se está introduciendo un 45 en la posición 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;

var = *puntero2 + 13; /* var=50+13 */

/* mismo efecto que var=50 */

Otros usos

Declaración múltiple de punteros

Si en una misma declaración 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 parámetros se pasan por valor. Esto tiene en principio dos inconvenientes:

No se pueden modificar variables pasadas como argumentos

No se pueden modificar variables pasadas como argumentos Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

39/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Si se pasa como parámetro una estructura, se realiza un

Guía del Módulo Programación Básica

Si se pasa como parámetro 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 función. El puntero no se puede alterar, pero sí el valor al que apunta:

void incrementa_variable (int* var)

{

}

main()

{

(*var)++;

int x = 1; incrementa_variable (&x); /* x pasa a valer 2 */

}

En el ejemplo anterior, había que poner paréntesis en (*var)++ porque el operador ++ tiene más precedencia que la desreferencia (el asterisco). Entonces *var++ sería como escribir *(var++), que no sería 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 incómodo 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 quedaría de esta forma:

Así, el ejemplo anterior quedaría de esta forma: Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

40/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

ptr = &x; ptr->campo1 = 33; strcpy ( ptr->campo3, "hola" ); B. Realiza operaciones en

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

B. Realiza operaciones en arreglos

Guía del Módulo Programación Básica

• Búsqueda y edición de datos en arreglos unidimensionales

Búsqueda lineal = Búsqueda secuencial

// Búsqueda lineal de un elemento en un vector

// - Devuelve la posición 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;

}

Versión mejorada

// Búsqueda lineal de un elemento en un vector

// - Devuelve la posición 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;

Búsqueda binaria

Precondición

El vector ha de estar ordenado

binaria Precondición El vector ha de estar ordenado Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

41/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Algoritmo Guía del Módulo Programación Básica Se compara el dato buscado con el elemento en

Algoritmo

Guía del Módulo Programación Básica

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.

tenemos que buscar el dato en la primera mitad del vector. // Búsqueda binaria de un

// Búsqueda binaria de un elemento en un vector // - Devuelve la posición de “dato” en el vector // - Si “dato” no está en el vector, devuelve -1

// Implementación recursiva // Uso: binSearch (vector, 0, N-1, dato)

recursiva // Uso: binSearch (vector, 0, N-1, dato) Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

42/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

int binSearch ( double vector[], int izq, int der, double buscado) { int centro =

int binSearch ( double vector[],

int izq, int der, double buscado)

{

int centro = (izq+der)/2;

Guía del Módulo Programación Básica

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);

}

// Implementación iterativa // Uso: binSearch (vector, N, dato)

int binSearch (double vector[], int N, double buscado)

{

int izq = 0; int der = N-1; int 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. Detección y corrección de los principales errores de programación.

Prueba y depuración

En inglés, a un error de programa se le conoce como bug (insecto), y al proceso de eliminación de errores se le llama debugging, es decir, depuración. Existe una historia pintoresca sobre cómo es que este término comenzó a utilizarse. Ocurrió en los primeros días 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 computación” CACM 38(1):45-54, enero de 1995). Mientras Hopper trabajaba en la computadora Harvard Mark I, bajo la dirección del profesor de Harvard H. Aiken, una palomilla ocasionó que la transmisión fallará. Hopper y los otros

ocasionó que la transmisión fallará. Hopper y los otros Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

43/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica programador es registraron la muerte de la palomilla en la

Guía del Módulo Programación Básica

programadores registraron la muerte de la palomilla en la bitácora, con la nota “Primer caso real de un bug (insecto) hallado”. La bitácora actualmente se encuentra en exhibición en el Museo Naval de Dahlgren, Virginia. En computación, este fue el primer bug documentado. El profesor Aiken entró a las instalaciones durante un descanso y pregunto si se habían encontrado algunos otros números, y los programadores respondieron que estaban depurando (debugging) la computadora. Para mayor información sobre el Contralmirante Hopper y otras personas de computación, vea Portraits in Silicon de Robert Slater, MIT Press, 1987. En la actualidad, en computación un bug es un error. En seguida describiremos los tres tipos principales de errores de programación y proporcionaremos algunos consejos para corregirlos.

Tipos de errores de programación

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 programación, como por ejemplo, omitir un punto y coma.

Si el compilador descubre que su programa contiene un error de sintaxis, le indicará en dónde 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 ubicación o a la naturaleza de un error. Éste realiza un mejor trabajo cuando determina la ubicación de un error, entre una línea 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. Después 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 ubicación o a la naturaleza del error. De nuevo, esto se debe a que el compilador trata de interpretar nuestra intención. Si la primera interpretación del compilador fue incorrecta, esto afectará el análisis de futuros error, ya que dicho análisis estará basado en una suposición incorrecta.

En programación, un error de sintaxis se produce al escribir, incorrectamente, alguna parte del código fuente de un programa. De forma que, dicho error impedirá, tanto al compilador como al intérprete, traducir dicha instrucción, ya que, ninguno de los dos entenderá qué le está diciendo el programador. Por ejemplo, si en lenguaje C, en vez de la instrucción

printf( "\n

un programador escribe

Introduzca el primer numero (entero): " );

prrintf( "\n

Introduzca el primer numero (entero): " );

"\n Introduzca el primer numero (entero): " ); Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

44/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica cuando el compilador o el intérprete lean esta línea de

Guía del Módulo Programación Básica

cuando el compilador o el intérprete lean esta línea de código, ninguno de los dos entenderá qué es prrintf y, por tanto, no sabrán traducir esta instrucción a código máquina, por lo que, ambos pararán la traducción y avisarán al programador con un mensaje de error.

Mensajes de error en comparación con los de advertencia

Si nuestro programa contiene algo que viola directamente las reglas de sintaxis del lenguaje de programación, el compilador enviará un mensaje de error. Sin embargo, algunas veces el compilador sólo genera un mensaje de advertencia, el cual indica que hemos hecho algo que no es, técnicamente hablando, una violación de las reglas de sintaxis del lenguaje de programación, 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 ejecución

Existe cierto tipo de errores que los sistemas de cómputo sólo pueden detectar cuando se ejecuta el programa. Por ello, se les conoce como errores en tiempo de ejecución. La mayoría de los sistemas de cómputo detectará ciertos tipos de errores de este tipo, y desplegarán un mensaje de error adecuado. Muchos intenta dividir un número entre cero, ése normalmente es un error en tiempo de ejecución.

En programación, un error de ejecución se produce cuando el ordenador no puede ejecutar alguna instrucción de forma correcta. Por ejemplo, en lenguaje C, la instrucción

c

=

5 /

0;

es correcta sintácticamente y será traducida a código binario. Sin embargo, cuando la computadora intente realizar la división

5

/ 0

se producirá un error de ejecución, ya que, matemáticamente, no se puede dividir entre cero.

Error lógico

El hecho de que el compilador apruebe el programa y éste se ejecute una vez sin mensajes de error en tiempo de ejecución, no garantiza que el programa sea correcto. Recordemos, el compilador sólo 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 traducción del algoritmo hacia el lenguaje C se conocen

la traducción del algoritmo hacia el lenguaje C se conocen Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

45/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica como errores lógicos. Si el compilador aprobó nuestro programa y

Guía del Módulo Programación Básica

como errores lógicos. Si el compilador aprobó nuestro programa y no hay errores en tiempo de ejecución, pero el programa no se comporta adecuadamente, entonces indudablemente contiene un error lógico. Los errores lógicos son más difíciles de diagnosticar, porque la computadora no le envía 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 queríamos escribir.

En programación, los errores de lógica son los más difíciles de detectar. Cuando un programa no tiene errores de sintaxis ni de ejecución, pero, aún así, no funciona bien, esto es debido a la existencia de algún error lógico. De manera que, un error de lógica se produce cuando los resultados obtenidos no son los esperados. Por ejemplo, en lenguaje C, si en vez de la instrucción

c = a + b;

un programador hubiera escrito

c = a * b;

hasta que no se mostrase por pantalla el resultado de la operación, el programador no podría darse cuenta del error, siempre que ya supiese de antemano el resultado de la suma. En este caso, el programador podría percatarse del error fácilmente, pero, cuando las operaciones son más complejas, los errores de lógica pueden ser muy difíciles de detectar.

Los 25 errores de programación más peligrosos

Al ver que la mayoría de los agujeros de seguridad en el software es producida por errores de programación que podrían ser evitados si fuésemos más cautelosos, un grupo internacional de expertos crearon una lista con los 25 errores de programación más peligrosos. Para crear esta lista trabajó gente de empresas tales como Microsoft, CERT, Oracle Corporation, Tata Consultancy Services, RSA, Red Hat Inc. y varias más.

A continuación detallo una lista (en inglés) con estos errores:

Improper Input Validationdetallo una lista (en inglés) con estos errores: Improper Encoding or Escaping of Output Failure to

Improper Encoding or Escaping of Output(en inglés) con estos errores: Improper Input Validation Failure to Preserve SQL Query Structure (aka ‘SQL

Failure to Preserve SQL Query Structure (aka ‘SQL Injection’)Input Validation Improper Encoding or Escaping of Output Failure to Preserve Web Page Structure (aka ‘Cross

Failure to Preserve Web Page Structure (aka ‘Cross- site Scripting’) -site Scripting’)

Failure to Preserve OS Command Structure (aka ‘OS Command Injection’)Web Page Structure (aka ‘Cross - site Scripting’) Clear text Transmission of Sensitive Information Cross-Site

Clear text Transmission of Sensitive InformationOS Command Structure (aka ‘OS Command Injection’) Cross-Site Request Forgery (CSRF) Race Condition Error

Cross-Site Request Forgery (CSRF)Clear text Transmission of Sensitive Information Race Condition Error Message Information Leak Modelo

Race Conditionof Sensitive Information Cross-Site Request Forgery (CSRF) Error Message Information Leak Modelo Académico de Calidad

Error Message Information LeakInformation Cross-Site Request Forgery (CSRF) Race Condition Modelo Académico de Calidad para la Competitividad PBAS-00

Forgery (CSRF) Race Condition Error Message Information Leak Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

46/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Guía del Módulo Programación Básica Failure to Constrain Operations within the Bounds of a Memory

Guía del Módulo Programación Básica

Failure to Constrain Operations within the Bounds of a Memory BufferGuía del Módulo Programación Básica External Control of Critical State Data External Control of File Name

External Control of Critical State Datato Constrain Operations within the Bounds of a Memory Buffer External Control of File Name or

External Control of File Name or Pathof a Memory Buffer External Control of Critical State Data Untrusted Search Path Failure to Control

Untrusted Search Pathof Critical State Data External Control of File Name or Path Failure to Control Generation of

Failure to Control Generation of Code (aka ‘Code Injection’)External Control of File Name or Path Untrusted Search Path Download of Code Without Integrity Check

Download of Code Without Integrity Checkto Control Generation of Code (aka ‘Code Injection’) Improper Resource Shutdown or Release Improper

Improper Resource Shutdown or ReleaseInjection’) Download of Code Without Integrity Check Improper Initialization Incorrect Calculation Improper

Improper InitializationIntegrity Check Improper Resource Shutdown or Release Incorrect Calculation Improper Access Control

Incorrect CalculationResource Shutdown or Release Improper Initialization Improper Access Control (Authorization) Use of a Broken or

Improper Access Control (Authorization)or Release Improper Initialization Incorrect Calculation Use of a Broken or Risky Cryptographic Algorithm Hard-Coded

Use of a Broken or Risky Cryptographic AlgorithmCalculation Improper Access Control (Authorization) Hard-Coded Password Insecure Permission Assignment for

Hard-Coded PasswordUse of a Broken or Risky Cryptographic Algorithm Insecure Permission Assignment for Critical Resource Use of

Insecure Permission Assignment for Critical ResourceBroken or Risky Cryptographic Algorithm Hard-Coded Password Use of Insufficiently Random Values Execution with

Use of Insufficiently Random ValuesInsecure Permission Assignment for Critical Resource Execution with Unnecessary Privileges Client-Side

Execution with Unnecessary Privilegesfor Critical Resource Use of Insufficiently Random Values Client-Side Enforcement of Server-Side Security Las páginas

Client-Side Enforcement of Server-Side SecurityRandom Values Execution with Unnecessary Privileges Las páginas donde están publicados estos errores (que se

Las páginas donde están publicados estos errores (que se actualizarán regularmente) junto con su detalle son www.sans.org/top25errors y cwe.mitre.org/top25, y en las mismas también hay enlaces a recursos para ayudar a eliminarlos.

también hay enlaces a recursos para ayudar a eliminarlos. Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

47/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

Prácticas para el laboratorio PB001.c Guía del Módulo Programación Básica  PB001.c   

Prácticas para el laboratorio

PB001.c

Guía del Módulo Programación Básica

PB001.c

 

 

#include <stdio.h>

   

main()

{

 

printf("Colegio de Educacion Profesional Tecnica del Estado de Nuevo Leon\n"); printf("Plantel: Ing. Adrian Sada Trevi¤o (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 Trevi¤o (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 carácter para despues mostrarlo <-\n\n");

 
 

printf("Teclee un caracter scanf("%c",&car);

");

printf("El caracter es

%c\n",car);

}

return 0;

 

es %c\n",car); } return 0;    Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

48/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB003.c Guía del Módulo Programación Básica  PB003.c       #include

PB003.c

Guía del Módulo Programación Básica

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 Trevi¤o (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 return 0;

%d \n",c);

 

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 Trevi¤o (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 return 0;

%d \n",c);

 
 

resta es return 0; %d \n",c);      Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

49/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB005.c Guía del Módulo Programación Básica  PB005.c     #include <stdio.h> main()

PB005.c

Guía del Módulo Programación Básica

 PB005.c     #include <stdio.h> main() { int a=0,b=0,c=0; printf("Colegio de Educacion
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 Trevi¤o (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
return 0;
%d \n",c);
}
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 Trevi¤o (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
return 0;
%d \n",c);
}
division es return 0; %d \n",c); }  Modelo Académico de Calidad para la Competitividad PBAS-00

Modelo Académico de Calidad para la Competitividad

PBAS-00

50/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB007.c Guía del Módulo Programación Básica  PB007.c     #include <stdio.h> main()

PB007.c

Guía del Módulo Programación Básica

 PB007.c     #include <stdio.h> main() { int l=0,a=0; printf("Colegio de Educacion
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 Trevi¤o (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
return 0;
%d \n",a);
}
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 Trevi¤o (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
return 0;
%.2f \n",a);
}
area del rectangulo es return 0; %.2f \n",a); }  Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

51/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB009.c Guía del Módulo Programación Básica  PB009.c     #include <stdio.h> main()

PB009.c

Guía del Módulo Programación Básica

 PB009.c     #include <stdio.h> main() { float b=0,h=0,a=0; printf("Colegio de
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 Trevi¤o (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
return 0;
%.2f \n",a);
}
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 Trevi¤o (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
return 0;
%.2lf \n",a);
}
area del circulo es return 0; %.2lf \n",a); }  Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

52/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB011.c Guía del Módulo Programación Básica  PB011.c     #include <stdio.h> main()

PB011.c

Guía del Módulo Programación Básica

 PB011.c     #include <stdio.h> main() { int c=0; double f=0; printf("Colegio
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 Trevi¤o (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
return 0;
%3.2lf grado(s) F \n",c,f);
}
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 Trevi¤o (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
return 0;
%d \n",v);
}
volumen del cubo es return 0; %d \n",v); }  Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad

PBAS-00

53/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB013.c Guía del Módulo Programación Básica  PB013.c     #include <stdio.h> main()

PB013.c

Guía del Módulo Programación Básica

 PB013.c     #include <stdio.h> main() { int b=0, a=0, h=0,v=0; printf("Colegio
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 Trevi¤o (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
return 0;
%d \n",v);
}
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 Trevi¤o (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
return 0;
%d \n",v);
}
la piramide rectangular return 0; %d \n",v); }  Modelo Académico de Calidad para la Competitividad

Modelo Académico de Calidad para la Competitividad

PBAS-00

54/59

Elaborado por: Reina Liliana López Reyes y Feliciano Nevárez Raizola

PB015.c Guía del Módulo Programación Básica  PB015.c     #include <stdio.h> main()

PB015.c

Guía del Módulo Programación Básica

 PB015.c     #include <stdio.h> main() { double pi=3.14159265, v=0; float r=0,
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 Trevi¤o (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
return 0;
%.2lf \n",v);
}
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 Trevi¤o (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
return 0;
%.2lf \n",v);
}
de la esfera es return 0; %.2lf \n",v); }  Modelo Académico de Calidad para la

Modelo Académico de Calidad para la Competitividad