Sunteți pe pagina 1din 59

Fundamentos de Programación 2017-I

Fundamentos para la construcción de código a partir


del algoritmo

Objetivo: El alumno construirá programas utilizando el


lenguaje de programación C a través de un análisis y
modelado algorítmico previo.

1
Fundamentos de Programación 2017-I

Contenido:
3.1. Sintaxis básica y semántica.
3.2. Variables, tipos, expresiones y asignación.
3.3. Estructuras de control condicional e iterativo.
3.4. Funciones y paso de parámetros.
3.5. Descomposición estructurada.
3.6. Manejo de E/S.
3.7. Estrategias de depuración.
3.7.1. Tipo de errores.
3.7.2. Técnicas de depuración.

2
Fundamentos de Programación 2017-I

CICLO DE VIDA DE UN PROGRAMA


Al igual que en la resolución de problemas, existen
ciertos pasos que debemos seguir para la creación de
programas, estos son:
Análisis del problema
Elaborar el Algoritmo
Codificación del algoritmo
Depuración de código
Mantenimiento de programa

3
Fundamentos de Programación 2017-I

Codificación del algoritmo

Después de tener el algoritmo, el siguiente paso es


codificarlo en el lenguaje que seleccionamos, para este
caso en específico es Lenguaje “C”.

4
Fundamentos de Programación 2017-I

Programación Estructurada

Algoritmo  Programa Traducción del Algoritmo a


un Lenguaje de Programación.
Programa  Estructuras de Datos, Operaciones
Primitivas y Estructuras de Control.
Estructura  Representación concreta del estado de
una entidad.
Estructura de Datos  Métodos que se emplean en
programación para organizar y representar la
información en una computadora.
5
Fundamentos de Programación 2017-I

Estructuras de Control  La estructura de un


programa, definida por referencias con las cuales se
representan las transferencias de control.
Construcciones mediante las que se escriben los
programas.
Operaciones Primitivas  Acciones que se ejecutan
sobre los datos para transformarlos en información.

6
Fundamentos de Programación 2017-I

Lenguaje C

Creado entre 1970 y 1972 por Brian Kernighan y Dennis


Ritchie para escribir el código del sistema operativo
UNIX.

Desde su nacimiento se fue implantando como el


lenguaje de programación de sistemas, sobre todo por
ser un lenguaje que conjugaba la abstracción de los
lenguajes de alto nivel con la eficiencia del lenguaje
máquina.

7
Fundamentos de Programación 2017-I

A mediados de los ochenta el C se convierte en un


estándar internacional ISO. Este estándar incluye tanto
la definición del lenguaje como una enorme biblioteca
de funciones para entrada/salida, tratamiento de textos,
matemáticas, etc.

Los programas en Lenguaje C se escriben en un editor de


texto cualquiera, por ejemplo vi en Linux, bloc de notas
en Windows.

Una vez escrito el programa, este debe compilarse, es


decir, debe ser leído por un programa llamado

8
Fundamentos de Programación 2017-I

“compilador” que lo traduce a lenguaje de máquina y


produce un nuevo archivo que enlaza con las bibliotecas
para poder generar el programa ejecutable.

Programa Programa Programa


fuente objeto ejecutable

La manera estándar de compilar un programa en


Lenguaje C en Linux es abrir una terminal, ir al directorio
que contiene el programa y escribir:

9
Fundamentos de Programación 2017-I

gcc programa1.c

Al compilar el programa se obtiene un ejecutable que


tiene por default el nombre:

a.out

Esto puede cambiarse haciendo:

gcc programa1.c -o programa1

10
Fundamentos de Programación 2017-I

La opción -o le dice al compilador que el ejecutable debe


llamarse “programa1”. Para ejecutar el programa se
escribe simplemente:

./programa1

donde se usa ./ para indicar a Linux que debe buscar el


ejecutable en el directorio local.

Investigar –wall para el proceso de compilar

11
Fundamentos de Programación 2017-I

Características del Lenguaje C

Alfabeto o conjunto de caracteres:


Caracteres alfabéticos
Caracteres numéricos
Caracteres especiales

Vocabulario o léxico
Conjunto de palabras válidas o reservadas en el Lenguaje
C.

12
Fundamentos de Programación 2017-I

Gramática

Conjunto de lineamientos que se deben respetar para


lograr construir frases, oraciones o instrucciones, se
logra transmitir a la computadora que se deseamos
hacer.

Características de un buen programa

Operatividad  Funcional.

13
Fundamentos de Programación 2017-I

Legibilidad  Algo de espacios o sangrías, para


reflejar las estructuras de control.

Transportabilidad  Se puede ejecutar sin hacer


modificaciones.

Claridad  La comunicación de lo que desea


realizar, buenos identificadores e incluso comentarios
dentro del programa.

14
Fundamentos de Programación 2017-I

Modularidad  Dividir el programa puede


contribuir a realizar las tareas de manera mas clara,
además que permite reutilizar el código.

Componentes del Lenguaje C

Declaraciones. Su objetivo es dar a la computadora la


información sobre tipos de variables, arreglos y
características diversas, en caso de C, también incluye la
posibilidad de dar valores iniciales a las variables.

15
Fundamentos de Programación 2017-I

Instrucciones Ejecutables. Son aquellas en las que se


calcula o realiza algo, toda instrucción que implica un
cambio.

Esquema de un Programa Fuente

Directivas
Declaraciones Globales
Función Principal
Funciones Secundarias

16
Fundamentos de Programación 2017-I

#include <biblioteca1.h>
#include <biblioteca2.h>
... declaraciones de funciones...
... definiciones (cuerpos de funciones)...
... declaraciones de variables globales...

main() /* nombre de la función principal*/


{
... cuerpo del main...
}

...otras definiciones de funciones...

17
Fundamentos de Programación 2017-I

Esquema de la Función “main”

main()
{
…declaraciones de variables locales…
…instrucciones a ejecutar…
}

18
Fundamentos de Programación 2017-I

Directivas más comunes

#include <librería.h>
#define expresión

Archivos de cabecera mas utilizadas

Indican que usaremos funciones de tipo:


Entrada y salida de datos (stdio.h)
Rutinas matemáticas (math.h)
Manejo de cadenas (string.h)

19
Fundamentos de Programación 2017-I

Estructura de un programa en Lenguaje C con


comentarios.
Ejem1.
#include<stdio.h>
/*Programa. Uso de comentarios*/

main(){
//Programa de prueba

}
// Nombre del archivo: prueba1.c
// Compilado: gcc prueba1.c –o prueba1
//Ejecutado: ./prueba1

20
Fundamentos de Programación 2017-I

Salida de datos –Texto-


printf(“Texto que se muestra en pantalla”);
Ejem2.

#include<stdio.h>

main(){
// Este programa es una prueba para mostrar texto
printf(“\nFundamentos de Programación, Gpo. 1119\n”);
}
// Nombre del archivo: prueba2.c
// Compilado: gcc prueba2.c –o prueba2
//Ejecutado: ./prueba2

21
Fundamentos de Programación 2017-I

Tipos de Datos
En C se disponen de estos tipos básicos:
int enteros (números 4 byte  32 bits
enteros positivos y
negativos)
char caracteres (letras) 1 byte  8 bits
float números en coma 4 byte  32 bits
flotante (números
reales)
double números en coma 8 byte  64 bits
flotante de doble
precisión

22
Fundamentos de Programación 2017-I

Tipos modificados

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)

23
Fundamentos de Programación 2017-I

Declaraciones de variables

Variable: Almacenamiento de DATOS

Hay que declarar las variables antes de usarlas y cada


variable tiene un tipo.

Ejemplo:

int x;
float y, z;

24
Fundamentos de Programación 2017-I

Operadores Aritméticos

Los datos se manipulan mediante expresiones, que


sirven para calcular valores. En C hay varios operadores
para construir expresiones.

Estos son los operadores elementales sobre números:

25
Fundamentos de Programación 2017-I

Operadores aritméticos

OPERADOR OPERACIÓN
() Paréntesis
% Módulo (resto de la división
entera)
* Multiplicación
/ División
+ Suma
- Resta

Recuerden las jerarquías de los operadores aritméticos.

26
Fundamentos de Programación 2017-I

Una expresión combina varias operaciones y devuelve


un valor.
Los operadores *, / y % tienen precedencia sobre la
suma y la resta.
Se pueden utilizar paréntesis para agrupar
subexpresiones.

Asignaciones
La forma de dar valor a una variable es

variableSuma= expresión_aritmética

27
Fundamentos de Programación 2017-I

También se puede dar valor a una variable en el mismo


momento en que se declara (inicialización).

tipo variable = expresión;

28
Fundamentos de Programación 2017-I

Salida de datos –Contenido de Variables-


printf ( “cadena de formato”, arg1, arg2, ... argN );

En la cadena de formato aparecen:


el texto que se desea imprimir
caracteres especiales
secuencias de escape
indicaciones del formato de los argumentos

Los argumentos son expresiones cualesquiera.


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

29
Fundamentos de Programación 2017-I

Formatos de printf

%d %i Número Entero
%c %s Caracter, cadena
%f Número Real

Secuencias de escape

\n Salto de línea
\t Tabulación
\a Sonido

30
Fundamentos de Programación 2017-I

Ejem3.
/*bibliotecas*/
#include<stdio.h>
//declaración de variables globales
main(){
//declaración de variables locales
int suma;
suma=2+9;
printf("%d\n",suma);
}
// Nombre del archivo: serie1.c
// Compilado: gcc serie1.c –o serie1
//Ejecutado: ./serie1

31
Fundamentos de Programación 2017-I

Entrada de datos
scanf (“formato”, & arg1, & arg2, ... );

Sintaxis:

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>

32
Fundamentos de Programación 2017-I

Ejem4.
/*bibliotecas*/
#include<stdio.h>
main(){
//declaración de variables locales
float a, b, suma;
printf("Ingrese a: ");
scanf("%f",&a);
printf("Ingrese b: ");
scanf("%f",&b);
suma=a+b;
printf("%f\n",suma);
}

33
Fundamentos de Programación 2017-I

// Nombre del archivo: serie2.c


// Compilado: gcc serie2.c –o serie2
//Ejecutado: ./serie2

34
Fundamentos de Programación 2017-I

Construcciones algorítmicas

En C existen estas construcciones para implementar


algoritmos. Sentencias simples y sentencias
compuestas.

Sentencias.- Es un fragmento de código.


Una sentencia simple es una expresión terminada en
punto y coma.

35
Fundamentos de Programación 2017-I

sentencia_simple;

Una sentencia compuesta es una serie de sentencias


simples entre llaves.

/* sentencia compuesta: varias sentencias entre


llaves*/

36
Fundamentos de Programación 2017-I

{
Sentencia1
Sentencia2
...
SentenciaN

37
Fundamentos de Programación 2017-I

Construcciones Condicionales-Selección
Sentencia if
La construcción if sirve para ejecutar código, sólo si una
condición es cierta:

if (condición)
sentencia

En las expresiones comparativas se necesitan los


operadores lógicos.
38
Fundamentos de Programación 2017-I

Operadores booleanos
Operador
A==B si A es igual a B
A != B si A es distinto de B
A>B si A es mayor que B
A<B si A es menor que B
A >= B si A es mayor o igual que B
A <= B si A es menor o igual que B

39
Fundamentos de Programación 2017-I

Ejem5.
//serie14: Leer un número X e imprimir si es cero.
#include <stdio.h>
main( )
{ int x;
printf("\n\tIngrese un valor numérico para x:");
scanf("%d", &x);
if ( x == 0 )
printf ("\n El valor de tu variable es cero\n");
}// Nombre del archivo: serie14.c
// Compilado: gcc serie14.c –o serie14
//Ejecutado: ./serie14

40
Fundamentos de Programación 2017-I

Sentencia if –compuesta-

if (condición) {
sentencia1
sentencia2
}

41
Fundamentos de Programación 2017-I

Ejem6.
/*serie14a: Leer un número X e imprimir si es cero. */
#include <stdio.h>
main( )
{
int x;
printf("\n\tIngrese un valor numérico para x:");
scanf("%d", &x);
if ( x == 0 ){
printf ("\n El valor de tu variable es cero\n");
printf ("\n Segunda instrucción de if verdadero\n");

42
Fundamentos de Programación 2017-I

}// cierre de if verdadero, uso sentencia compuesta

}//cierre de main
// Nombre del archivo: serie14a.c
// Compilado: gcc serie14a.c –o serie14a
//Ejecutado: ./serie14a

43
Fundamentos de Programación 2017-I

Construcción if-else
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

44
Fundamentos de Programación 2017-I

Ejem7.
/*serie15: Leer un número Z e imprimir si es negativo o
positivo. */
#include <stdio.h>
main( )
{
int x;
printf("\n\tIngrese un valor numérico para x:");
scanf("%d", &x);
if ( x == 0 )
printf ("\n El valor de tu variable es cero\n");
else
45
Fundamentos de Programación 2017-I

if(x>0)
printf ("\n El valor de tu variable es positivo\n");
else
printf ("\n El valor de tu variable es negativo\n");
}// cierre de main
// Nombre del archivo: serie15.c
// Compilado: gcc serie15.c –o serie15
//Ejecutado: ./serie15

46
Fundamentos de Programación 2017-I

Construcción if-else –compuesta-


Ejem8.
#include <stdio.h>
int main( )
{ int x;
printf("\n\tIngrese un valor numérico para x:");
scanf("%d", &x);
if ( x == 0 ){
printf ("\n El valor de tu variable es cero\n");
printf ("\n %d\n",x);
47
Fundamentos de Programación 2017-I

}
else
if(x>0){
printf ("\n El valor de tu variable es positivo\n");
printf ("\n %d \n",x);}
else{
printf ("\n El valor de tu variable es negativo\n");
printf ("\n %d \n",x);}

return 0;
}

48
Fundamentos de Programación 2017-I

// Nombre del archivo: serie15a.c


// Compilado: gcc serie15a.c –o serie15a
//Ejecutado: ./serie15a

49
Fundamentos de Programación 2017-I

Para elaborar condiciones complejas, existen estos


operadores:

Expresión Resultado
E1 && E2 Cierta si E1 y E2 son ciertas (AND)
E1 || E2 Cierta si E1 o E2 son ciertas (OR)

50
Fundamentos de Programación 2017-I

Construcción switch
Se utiliza para ejecutar acciones diferentes según el valor
de una expresión.
Ejemplo de sintaxis:
switch (expresión)
{
case valor1:
... sentenciasA...
break;

51
Fundamentos de Programación 2017-I

case valor2:
... sentenciasB ...
break;
.
.
.
default:
... sentenciasN ...
break;
}

52
Fundamentos de Programación 2017-I

Las sentenciasA se ejecutarán si la expresión adquiere el


valor1.
Las sentenciasB se ejecutarán si adquiere el valor2.
Cualquier otro valor de la expresión conduce a la
ejecución de las sentenciasN; eso viene indicado por la
palabra reservada default.

53
Fundamentos de Programación 2017-I

Ejem9.
/*serie41: Escribir un código fuente que muestre el
siguiente menú al usuario, indique al usuario que deberá
elegir solo una opción a realizar.
Opción 1 -- Suma
Opción 2 -- Resta
Opción 3 -- Multiplicación
Opción 4 -- División
Opción default –Mostrar “verifique su selección”*/

54
Fundamentos de Programación 2017-I

#include <stdio.h>
main(){
int op;
float a,b,res;
printf("\n\t FAVOR DE SELECCIONAR UNA OPCIÓN\n");
printf("\n\t OPCIÓN DE SUMA 1\n");
printf("\n\t OPCIÓN DE RESTA 2\n");
printf("\n\t OPCIÓN DE MULTIPLICACIÓN3\n");
printf("\n\t OPCIÓN DE DIVISIÓN 4\n\n\t\t\t");
scanf("%d",&op);
switch(op) {
55
Fundamentos de Programación 2017-I

case 1:
printf("\n\t TECLEAR EL VALOR DE A: \t");
scanf("%f",&a);
printf("\n\t TECLEAR EL VALOR DE B: \t");
scanf("%f",&b);
res=a+b;
printf("\n\t La suma es : %f\n", res);
break;
case 2:
printf("\n\t TECLEAR EL VALOR DE A: \t");
scanf("%f",&a);
56
Fundamentos de Programación 2017-I

printf("\n\t TECLEAR EL VALOR DE B :\t");


scanf("%f",&b);
res=a-b;
printf("\n\t La resta es : %f\n", res);
break;
case 3:
printf("\n\t TECLEAR EL VALOR DE A: \t");
scanf("%f",&a);
printf("\n\t TECLEAR EL VALOR DE B: \t");
scanf("%f",&b);
res=a*b;
57
Fundamentos de Programación 2017-I

printf("\n\t La multiplicación es : %f\n", res);


break;
case 4:
printf("\n\t TECLEAR EL VALOR DE A: \t");
scanf("%f",&a);
printf("\n\t TECLEAR EL VALOR DE B: \t");
scanf("%f",&b);
if(b!=0) {
res=a/b;
printf("\n\t La división: %f\n", res);
}//sentencia doble
58
Fundamentos de Programación 2017-I

else
printf("\n\t ERROR!!!\n");
break;

default:
printf("\n\t OPCION NO VALIDA\n");
}//cierre de switch
}//cierre de main
// Nombre del archivo: serie41.c
// Compilado: gcc serie41.c –o serie41
//Ejecutado: ./serie41
59