curso lenguaje c_segundo_modulo_

48
Curso Programando en Lenguaje C (Módulo I)

Upload: jennybeatriz1

Post on 20-Jun-2015

890 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Curso lenguaje c_segundo_modulo_

Curso Programando en Lenguaje C(Módulo I)

Page 2: Curso lenguaje c_segundo_modulo_

Características del Lenguaje C

Algunas características del lenguaje C

Es un lenguaje de propósito general: Este lenguaje se ha utilizado para el desarrollo de aplicaciones tales como: hojas de cálculos, gestores de bases de datos, compiladores, sistemas operativos.

Es un lenguaje de medio nivel: Este lenguaje permite programar a alto nivel(pensando a nivel lógico y no en la máquina física) y a bajo nivel(con lo que se puede obtener la máxima eficiencia y un control absoluto del interior del PC)

Es un lenguaje portátil: Los programas escritos en C son fácilmente transportables a otros sistemas.

Es un lenguaje potente y eficiente: Usando C, un programador puede alcanzar la eficiencia de código ensamblador.

Page 3: Curso lenguaje c_segundo_modulo_

Proceso de Compilación

Escribirlo en un Editor

Compilarlo

Enlazarlo

Ejecutarlo

Page 4: Curso lenguaje c_segundo_modulo_

Primeros Pasos para Escribir un Programa en C

Paso 1: Leer y entender el contexto del problema que requiere una solución mediante un programa de computadora.

Paso 2: Desarrollar un algoritmo para resolver el problema.

Paso 3: Verificar el algoritmo para su validez.

Paso 4: Convertir el algoritmo en lenguaje C.

Paso 5: Probar y verificar el programa C para su validez.

Ejemplo: Realizar un algoritmo que sume dos números enteros positivos y muestre el resultado de la suma.

Nota: Lo primero para desarrollar un programa en lenguaje C, es crear un archivo denominado archivo fuente con extensión “.cpp” en cualquier editor de texto conocido.

Page 5: Curso lenguaje c_segundo_modulo_

Estructura de un Programa

1. Llamadas a bibliotecas

2. Declaración de funciones (prototipos de funciones)

3. Declaración de variables globales

4. Main(){

5. Declaración de variables locales

6. sentencias

7. }

8. Definición de funciones

Page 6: Curso lenguaje c_segundo_modulo_

Variables y Sentencias

La manera más simple de almacenar información es en una entidad llamada variable.

Las variables son los nombres que se le dan a las localidades en la memoria principal donde un elemento de dato puede almacenarse. Puede ser útil pensar en estas localidades de memoria como un conjunto de casillas que pueden contener algún dato. Todas estas casillas se deben poder referenciar de forma única. Por tanto, a éstas se le dan etiquetas simbólicas que se denominan nombres de variables. Un nombre de una variable solamente se refiere a una localidad en la memoria donde algún dato está almacenado.

Page 7: Curso lenguaje c_segundo_modulo_

Reglas en la Construcción de los Nombre de Variables

Los nombres de variables siempre deben empezar con una letra, esto incluye al carácter “_”. Sin embargo es buena práctica de programación tener nombres de variables que empiecen con letras minúsculas (a-z).

Un nombre de variable puede estar formado por una secuencia de letras del alfabeto y/o dígitos de 0 al 9 y/o el carácter “_” (subrayado).

El estándar ANSI C establece que la variable puede ser de cualquier longitud, como por ejemplo abu_jafar_mohammed_ibn_musa_al_khawarizmi, pero sólo los primeros 31 caracteres son significativos.

No se permiten comas ni espacios en un nombre de varibale.

No se permite usar como nombre de variables, palabras reservadas por el lenguaje (int, enum, short, etc.)

El único carácter especial permitido en el nombre de una varibale es el subrayado

Page 8: Curso lenguaje c_segundo_modulo_

Más Acerca de las Declaraciones

Cuando se declaran múltiples variables, no se necesita declararlas separadamente. Se puede combinar su declaración en una sola sentencia.

Existen diferentes tipos de datos, como por ejemplo int, float, char, entre otros.

Un buen programador debe escoger un nombre de variable que describa el propósito para el cual se usa la variable.

Tipo de Dato Valores Válidos Requerimientos Típicos de Memoria

int 125, +253, -901 2 bytes

float 3.141, -0.000256 4 bytes

char A-Z o a-z, 0-9, @,#,$,%,& 1 byte

Nota: ¿Qué pasaría si se intentara almacenar un valor no válido dentro de una variable declarada para almacenar un determinado tipo de dato?

Page 9: Curso lenguaje c_segundo_modulo_

Comentarios en C

Es cualquier información que se añade a su archivo fuente.

Los comentarios se usan para mejorar la legibilidad del programa.

Los comentarios son ignorados por el compilador.

Si desea comentar múltiples líneas se usa /* para empezar el comentario y */ para cerrar el comentario.

Si desea comentar una sola línea se usa //.

Los comentarios pueden ser usados para deshabilitar ciertas partes de un programa.

Page 10: Curso lenguaje c_segundo_modulo_

Función printf()

Esta función se encuentra en la librería o archivo de cabecera stdio.h.

printf nos permite mostrar información.

printf retorna el numero de caracteres imprimidos.

printf nos permite hacer cálculos dentro de la función.

printf muestra el texto que se coloque dentro de doble comillas (“”)

printf requiere el carácter backslash – una secuencia de escape – para mostrar ciertos caracteres especiales.

printf puede mostrar variables usando cadenas de formato %.

Todo mensaje que sea dirigido a la salida estándar por medio de un código hecho en C, usando cualquier función, trabaja con el alfabeto ingles lo que implica que no podemos incluir vocales acentuadas, la letra ñ, etc.

Page 11: Curso lenguaje c_segundo_modulo_

Función printf()

Cadena de Formato Propósito

%d int (notación decimal con signo)

%i int (notación decimal con signo, octal o hexadecimal)

%o int (notación octal sin signo)

%x %X int (notación hexadecimal sin signo)

%u int (notación decimal sin signo)

%c char

%f %e %E %g %G double

%s cadena de caracteres

Cadenas de Formato

Page 12: Curso lenguaje c_segundo_modulo_

Función printf()

Secuencia de Escape Propósito

\a Carácter alerta (timbre)

\b Retroceso (Backspace)

\f Formfeed

\n Nueva línea

\r Retorno de carro

\t Tabulador horizontal

\v Tabulador vertical

\\ Diagonal inversa

\? Signo de interrogación

\' Comilla simple

\” Comilla doble

\ooo Número octal

\xhh Número hexadecimal

Secuencias de Escape

Page 13: Curso lenguaje c_segundo_modulo_

Función scanf()

Esta función se encuentra en la librería o archivo de cabecera stdio.h.

scanf es la función mas utilizada para la entrada de datos a través del teclado.

scanf(“cadena de formato”,dirección de memoria de la variable);

Se pueden capturar varios valores al mismo tiempo, por ejemplo: scanf(“%3d %3d %3d”,&a,&b,&c);

Page 14: Curso lenguaje c_segundo_modulo_

Palabras Claves en C

En C, como en cualquier otro lenguaje, existen una serie de palabras clave (keywords) que el usuario no puede utilizar como identificadores (nombres de variables y/o funciones).

Tienen un especial significado para el compilador.

El C es un lenguaje muy conciso, con muchas menos palabras claves que otros lenguajes. A continuación se presenta la lista de las 32 palabras clave del ANSI C.

auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while

Page 15: Curso lenguaje c_segundo_modulo_

Tipo de Datos

Es un conjunto de valores y operaciones definidas para las variables de ese tipo en particular.

Los tipos básicos en C son int, float, char y double.

int es un tipo de dato y define el conjunto de valores que una variable de tipo int puede almacenar, y también el conjunto de operaciones que se pueden usar con los operandos enteros.

float es un tipo de dato que define un conjunto de valores, aunque estos no pueden ser enumerados como en int, y las operaciones definidas para este tipo.

Para float, las operaciones definidas son +, -, *, / . Sin embargo, % no está definida.

Page 16: Curso lenguaje c_segundo_modulo_

Calificadores de Tipos de Datos

Los tipos básicos pueden modificarse usando calificadores de datos.

Los calificadores de tipos de datos son short, long, signed y unsigned.

Las variables enteras pueden ser calificadas como short int, long int, signed int o unsigned int. También es válido unsigned short int, o unsigned long int.

Generalmente un short int requiere menos memoria que un int, mientras que un long int requiere más memoria que un int.

Todos estos son dependientes del compilador y deben ser verificados por el programador.

Un unsigned int utiliza el mismo espacio de memoria que un int pero permite almacenar el doble de números.

El significado de estas variaciones es siempre dependiente del compilador que se use.

Page 17: Curso lenguaje c_segundo_modulo_

Operadores Aritméticos

Existen 5 operadores aritméticos en C.

+, -, *, / y %.

Cuando se usa con operandos enteros, todos los operadores anteriores retornan un resultado entero.

Cuando uno de los operandos es un float, el resultado sera también un float.

El operador % sólo es válido cuando ambos operando son enteros.

Cuando se usa el operador /, se debe tener mucho cuidado de asegurar que a/b, b no sea 0. Si se intenta dividir entre 0 el programa no funcionará.

Si uno de los operandos son negativos, entonces el uso de los operandos anteriores resultará en valores cuyos signos será determinados por las reglas usuales del álgebra.

Page 18: Curso lenguaje c_segundo_modulo_

Operadores Aritméticos

Cuando uno de los operandos es negativo, el resultado del operador % no está claro. La mayoría de los compiladores de C hacen que el residuo tengo el mismo signo que el primer operando.

Una expresión aritmética es una combinación de operandos y operadores.

Considere la siguiente expresión: k = 5*10+7*3-15/4+8-2 . Para evaluar la expresión aritmética anterior correctamente debemos conocer la jerarquía u orden de prioridad de los operadores aritméticos.

Prioridad Operadores Descripción

Primero * / % Multiplicación, división, módulo

Segundo + - Adición, resta

Tercero = Asignación

Cuando las expresiones tiene operadores de la misma prioridad, digamos * y /, la evaluación es de izquierda a derecha.

Page 19: Curso lenguaje c_segundo_modulo_

Operadores Aritméticos

Los paréntesis sobrepasan todas las prioridades en la expresiones. Sin embargo dentro del paréntesis las prioridades continúan vigentes.

Los paréntesis pueden estar anidados; en cuyo caso la expresión en el paréntesis más interno será evaluada primero.

Cuando se usan paréntesis, verifique verifique que los paréntesis izquierdo y derecho coincidan.

Page 20: Curso lenguaje c_segundo_modulo_

Operadores Aritméticos de Asignación

Los Operadores Compuestos de Asignación pueden ser utilizados como atajos al escribir declaraciones de asignación.

Operador Propósito Ejemplo Salida

+= Suma/Asignación X = 10;X +=5;

15

-= Resta/Asignación X = 10;X -=5;

5

*= Multiplicación/Asignación X = 10;X *= 5;

50

/= División/Asignación X = 10;X /= 5;

2

%= Módulo/Asignación X = 10;X %= 5;

0

Page 21: Curso lenguaje c_segundo_modulo_

Conversión Explícita de Tipos

Esta operación se denomina conversión (Casting).

Se indica explícitamente al compilador que operando en cuestión debe ser convertido a otro tipo de dato.

Es importante que el tipo de dato al que se está convirtiendo esté entre paréntesis ().

Ejemplo : Considere las siguientes declaraciones:

int x;float y;

¿Qué sucede con la expresión aritmética (x-y) % 10?

Page 22: Curso lenguaje c_segundo_modulo_

Conversión Implícita de Tipos

Este tipo de conversión se presenta cuando el Lenguaje C realiza una conversión automática de un tipo de dato a otro.

Este procedimiento se llama conversión implícita de tipo.

Una buena práctica de programación sugiere que el programador haga siempre una conversión explícita en lugar de dejar que el compilador haga conversión implícita. El resultado obtenido de los dos casos es el mismo.

Piense... Después Codifique

Page 23: Curso lenguaje c_segundo_modulo_

Curso Programando en Lenguaje C(Módulo II)

Page 24: Curso lenguaje c_segundo_modulo_

Estructuras de Control de Decisión

Nos permiten crear programas donde ciertas condiciones se puedan verificar.

Las instrucciones a ejecutar son determinadas por las condiciones que se presenten.

Nos permiten solventar problemas como por ejemplo, encontrar el máximo de dos enteros, determinar si una persona es mayor de edad, realizar diversos tipos de validaciones, entre otros.

Las Estructuras de Control de Decisión a estudiar son: if, if-else, if anidado, operador ternario y switch case.

Page 25: Curso lenguaje c_segundo_modulo_

Construcción if Simple

if (si la condición es verdadera)

sentencia;

En este caso sentencia es solo una sentencia en C, la cual se llama sentencia simple.

Si se desea ejecutar más de una sentencia, que siguen a la sentencia if, se deben encerrar todas estas sentencias entre llaves {}.

Page 26: Curso lenguaje c_segundo_modulo_

Construcción if-else

if (condición) {

Sentencia1;…

Sentencian;}else{

Sentencia1;…

Sentencian;}

Si la condición es verdadera, entonces el conjunto de sentencias dentro de las {}, llamadas sentencias “compuestas”, serán ejecutadas.

Si la condición es falsa, entonces las sentencias compuestas dentro de las {} que siguen al else serán ejecutadas.

Page 27: Curso lenguaje c_segundo_modulo_

Construcción if Anidado

if (condición) {if(condición) Sentencia;

else{

sentencia;}

}else{Sentencia1;…Sentencian;

}

Es muy importante la identación, es decir, escribir programas con sangrías, ya que permite una fácil comprensión y proporciona mayor claridad.

Page 28: Curso lenguaje c_segundo_modulo_

Expresiones y Operadores Lógicos y Relacionales

La parte crucial de la sentencia if es la condición.

Una condición es cualquier expresión relacional que conduce a verdadero o falso.

Las expresiones relacionales son aquellas que se forman con una combinación de indentificadores, constantes y expresiones aritméticas, todas enlazadas a través de un conjunto de operadores relacionales.

Las expresiones relacionales siempre producen un valor de verdadero o falso. En C, las expresiones relacionales producen 1 para verdadero y 0 para falso.

Page 29: Curso lenguaje c_segundo_modulo_

Operadores Relacionales

Algunos de los operadores relacionales que se pueden usar para formar expresiones relacionales son:

< Menor que.

< = Menor o igual que.

> Mayor que.

> = Mayor o igual que.

Todos estos operadores pertenecen al mismo grupo de precedencia que es menor que los operadores unarios y aritméticos.

La asociatividad de la evaluación es de izquierda a derecha.

Los operadores relacionales se usan para formar expresiones relacionales.

Page 30: Curso lenguaje c_segundo_modulo_

Operadores de Igualdad

Se pueden usar los siguientes operadores de igualdad en expresiones relacionales:

== Igual a.

!= No igual a.

Ellos pertenecen a un grupo de precedencia separado por debajo de los operadores relacionales.

Los operadores relacionales se evalúan con una mayor precedencia que los de igualdad.

La asociatividad de los operadores es de izquierda a derecha.

Page 31: Curso lenguaje c_segundo_modulo_

Operadores Lógicos

Llamados conectores lógicos, los cuales se listan a continuación:

&& Y (AND)

|| O (OR)

! NO (NOT)

El operador lógico && retorna el valor de VERDADERO (TRUE) si ambos operandos son verdaderos, sino retorna el valor de FALSO (FALSE).

EL operador lógico || retorna el valor de FALSO (FALSE) sólo si ambos operandos son falsos, sino retorna VERDADERO.

El operador lógico ! Cambia un operando de VERDADERO a FALSO y viceversa.

Page 32: Curso lenguaje c_segundo_modulo_

Expresiones Lógicas

Son expresiones relacionales conectadas por operadores lógicos.

El valor que retorna una expresión lógica es realmente un entero; es valor de verdadero se representa por el valor de 1 y falso por el valor de 0.

Categoría Operadores Asociatividad

Unarios ++ -- Derecha a Izq

Aritmética (multiplicación, división y módulo) * / % Izq a derecha

Aritmética (adición, sustracción) + - Izq a derecha

Relacional < <= > >= Izq a derecha

Igualdad == != Izq a derecha

Y (and) lógico && Izq a derecha

O (or) lógico || Izq a derecha

No (not) lógico ! Izq a derechaJerarquía de Operadores

Page 33: Curso lenguaje c_segundo_modulo_

Operador Ternario

Es una construcción if de una línea la cual tiene 3 términos.

Los símbolos de interrogación (?) y dos puntos (:) se usan como operadores ternarios.

Su estructura es la siguiente:

condición ? condición_valor_verdadero : condición_valor_falso;

Si la condición se evalúa a verdadero entonces la sentencia después del signo de interrogación (?) se ejecuta, sino la sentencia después de los dos puntos (:) se ejecuta.

Ejemplo del uso del operador ternario:

(a==b) ? printf(“Iguales \n”) : printf(“No son iguales \n”);

Page 34: Curso lenguaje c_segundo_modulo_

Operador Ternario

El operador ternario también se puede usar en sentencias de asignación como sigue:

a = 10;

b = 8;

x = (a == b) ? a : b;

La condición a == b evalúa a falso y la sentencia despues del : se ejecuta. Por tanto x toma el valor de 8.

Los operadores ternarios permiten el uso conciso de una condición if – else simple.

Page 35: Curso lenguaje c_segundo_modulo_

Estructura switch … case C provee otra construcción, la cual permite escribir programas cuando un

número de condiciones alternas deben ser validadas. Sintaxis:

switch (variable){

case valor1: sentencias;

break;

case valor2: sentencias;

break;…

case valorn: sentencias;

break;

}

Si la sentencia break no está presente la ejecución fluye lógicamente a las sentencias siguientes del próximo case, lo cual comúnmente no se desea.

Page 36: Curso lenguaje c_segundo_modulo_

Construcciones Iterativas

Son construcciones que ayuden a repetir una porción de código un cierto número de veces.

La ejecución repetida de un conjunto de tareas se denomina iteración.

Las iteraciones son también llamadas bucles.

Las construcciones iterativas proveen los fundamentos apropiados para una gran cantidad de problemas, que van desde problemas simples a problemas muy complejos.

Existen tres construcciones iterativas disponibles en C, la construcción while, for, do-while.

Page 37: Curso lenguaje c_segundo_modulo_

Construcción Iterativa while

La forma general es como sigue:

La variable de control del bucle se inicializa

while (prueba la condición usando la variable de control del bucle){Ejecutar sentencia;

.

.

.Modificar la variable de control del bucle;

}

Cada bucle while comienza con una inicialización de la variable de control del bucle.

Se verifica si la condición se satisface o no. Ésta es llamada condición while, o condición de iteración.

Si la condición es verdadera, el conjunto de sentencias encerradas dentro de las llaves {…} son ejecutadas.

Page 38: Curso lenguaje c_segundo_modulo_

Construcción Iterativa while

Inicializar la variable de control

Verificar la

condición

Cuerpo del while

Modifica la variable de control del bucle

Fin del bucle while

Page 39: Curso lenguaje c_segundo_modulo_

Construcción Iterativa while

1 while (condición_bucle)sentencia; Porción de Código

2 while (condición_bucle) { Sentencia-1;

Sentencia-2;...

Sentencia-n; }

Porción de Código

Page 40: Curso lenguaje c_segundo_modulo_

Construcción Iterativa for

La forma general es como sigue:

for (inicialización del contador; condicion de prueba; actualización del contador){Sentencias;

}

while for

sum = 0;k = 1;while (k <= N){

sum = sum + k;k = k + 1;

}

sum = 0;for (k = 1; k <= N; k++)

sum = sum + k;

Inicialización

Condición

Incremento

Page 41: Curso lenguaje c_segundo_modulo_

Construcción Iterativa do-while

La forma general es como sigue:

do{Sentencia 1;Sentencia 2; .

.

.}while (condición);

Es una construcción iterativa que se usa cuando el cuerpo de un bucle se debe ejecutar al menos una vez.

En los bucles while y for, el cuerpo del bucle se ejecuta sólo cuando la condición es verdadera; ello implica que el cuerpo de estas construcciones iterativas puede que no se ejecute.

En el do-while la condición es verificada al final, de este modo el cuerpo del bucle se ejecuta al menos una vez.

Page 42: Curso lenguaje c_segundo_modulo_

Programar con Arreglos

Muchas aplicaciones requieren el uso de múltiples elementos de datos que tiene una característica en común.

Por ejemplo: Las calificaciones obtenidas por los estudiantes en una clase.Los nombres de los empleados de una compañía.La altura y peso de todos los pacientes admitidos en un hospital.

¿Cómo se almacenan las calificaciones de 100 estudiantes?

Una forma de hacerlo es tener 100 variables, como por ejemplo: notas1, notas2, ..., notas100.

Empleando una estructura llamada arreglo, podemos hacer este trabajo con una sola declaración sin necesidad de declarar tantas variables.

Page 43: Curso lenguaje c_segundo_modulo_

Programar con Arreglos

Los arreglos son estructuras en memoria que ayudan a almacenar múltiples elementos de datos que tienen una característica común.

Un arreglo se referencia con un solo nombre, aunque puede tener múltiples elementos de datos.

Los elementos de datos individuales pueden ser de cualquier tipo, tal como enteros, flotantes o caracteres.

Dentro de todo el arreglo, todos los elementos de datos deben ser de un mismo tipo, por ejemplo int.

No se pueden tener los primeros 20 elementos de tipo int y el resto de ellos de tipo float.

Page 44: Curso lenguaje c_segundo_modulo_

Programar con Arreglos

Los arreglos son un almacén de múltiples elementos de datos. La dos formas en las cuales los arreglos se pueden hacer son:

Una sola dimensión (arreglo unidimensional - vector)

Dos dimensiones (arreglo bidimensional – matriz)

Orden: Se refiere a la cantidad de elementos que tiene un arreglo.

Page 45: Curso lenguaje c_segundo_modulo_

Programar con Arreglos

Declarar un arreglo en C

int notas[5];

Esto resulta en la reserva de ubicaciones de memoria.

Nostas[0] se refiere al primer elemento del arreglo.

0 … 4 se refiere a los subíndices de un arreglo. Los subíndices en lenguaje C comienzan en 0 y terminan en n-1, donde n es el tamaño del arreglo.

En notas[0], notas es el nombre del arreglo y 0 es el subíndice.

Los arreglos se declaran como variables de tipo int, float o char, excepto que necesitan un especificador de tamaño.

Un especificador de tamaño define el número de elementos en el arreglo.

Page 46: Curso lenguaje c_segundo_modulo_

Cadenas de Caracteres en C

Considere el siguiente arreglo:

char nombre[30];

• Este puede ser considerado como una cadena (string)en C. • No existe un tipo de dato string explícito en C.

• Este puede ser directamente leído o escrito como sigue:

scanf(“%s”, nombre);printf(“%s”, nombre);

• Este no tiene que ser leído o escrito carácter por carácter (usando la cadena de formato %c).

• Una vez leído usando %s , la cadena se puede acceder elemento por elemento como nombre[i]

Page 47: Curso lenguaje c_segundo_modulo_

Cadenas de Caracteres en C

• Cuando un arreglo se lee usando la cadena de formato %s, el compilador inserta un carácter al final para indicar el fin de la cadena.

• Este carácter se denomina carácter null, y se denota como ‘\0’

Función Descripción

strlen Toma una cadena y retorna la longitud de la misma.

strcpy Toma dos cadenas como parámetros, copia la segunda cadena en la primera y retorna la primera cadena.

strcat Toma dos cadenas como parámetros, las concatena y retorna las cadena concatenada.

strcmp Toma dos cadenas como parámetros, y las compara:

Retorna < 0 si la primera cadena es más pequeña que la segunda.Retorna 0 si amabas son igualesRetorna > 0 si la primera cadena es más grande que la segunda.

Page 48: Curso lenguaje c_segundo_modulo_

Estructuras

Real

Problemas Complejos

• Colección de elementos de datos, cada una de un tipo diferente.

Registro de un Estudiante

Cedula (Entero) Nombre (un arreglo de char) Peso (float)