SlideShare una empresa de Scribd logo
1
Curso Introductorio Al
Lenguaje De Programación
En “C”
1. Directivas del preprocesador
2. Definiciones de tipos de datos
3. Declaraciones de funciones.
• Entre ellas el programa principal
Estructura De Un Programa
Objeto abstracto donde se almacena un valor.
Sintaxis
A. tipo_de_datos nombre_de_variable;
B. tipo_de_datos nombre_de_variable, nombre_de_variable, ... ;
C. tipo_de_datos nombre_de_variable = valor_inicial;
Declaración
1. Asociar un identificador
2. Reservar espacio en memoria
3. Opcionalmente, asignar un valor (inicialización)
Variables Enteros
Tipo
int
unsigned int
short int
unsigned short int
long int
unsigned long int
[-32,768 , 32,767]
[0, 65,535]
[-32768, 32767]
[0, 65535]
[-2,147,483,648,
2,147,483,647]
[0, 4,294,967,295]
Rango Tamaño
16 bits
16 bits
16 bits
16 bits
32 bits
32 bits
Formato
%d
%u
%d
%u
%ld
%lu
2
Reales
Tipo
float
double
long double
± 3.4 * (10**-38) a
± 3.4 * (10**+38)
± 1.7 * (10**-308) a
± 1.7 * (10**+308)
±3.4 * (10**-4932) a
± 1.1 * (10**+4932)
Rango Tamaño
4 bytes
8 bytes
16 bytes
Formato
%f,%e,%g
%f,%e,%g
%f,%e,%g
Caracter
Tipo
unsigned char
char
0 <= X <= 255
-128 <= X <= 127
Rango Tamaño
1 byte
1 byte
• Forma pre-fija y post-fija de ++ y -- . Ejemplo:
z++;
x = ((++z) - (w--)) % 100; x = (z - w) % 100;
w--;
• Operación y asignación de forma compacta.
i = i + 5; i += 5;
x = x * (y + 2); x*=(y+2)
variable=expresion
• Fórmula matemática que especifica un valor
• Asignación:
• Operadores:
Cambio de signo -
Un Incremento ++
Operando Decremento --
Suma +
Resta -
Dos Multiplicación *
Operandos División /
Módulo %
Expresiones Aritméticas
• Condiciones básicas en sentencias condicionales e iterativas
• Operadores:
Menor que <
Mayor que >
Menor o igual que <=
Mayor o igual que >=
Igual que ==
Distinto que !=
• Resultado lógico:
falso cero
cierto distinto de cero
Ejemplos: 4 > 8 falso
3 <= 24 cierto
23 == 22 falso
4 != 5 cierto
No confundir asignación (=) con comparación (==)
x = 3 es también una expresión, no cero cierto
Expresiones Relacionales
3
• Expresiones condicionales
• Operadores:
Conjunción ó Y lógico &&
Disyunción ó O lógico ||
Negación ó NO lógico !
• Ejemplos:
3 && 0 falso
!(7 > 1) falso
(x < x - 8) || 1 cierto
(5 <= 0) || !(x > x -1) falso
2 && (4 > 9) falso
(8 == 4 * 2) && (5 > 2) cierto
• Tabla de verdad
cierto
cierto
falso
falso
A
cierto
falso
cierto
falso
B
falso
falso
cierto
cierto
!A
cierto
falso
falso
falso
A&&B
cierto
cierto
cierto
falso
A||B
Expresiones Lógicas
Prioridad De
Operadores
Menor que
Menor o igual que
Mayor que
Mayor o igual que
<
<=
>
>=
Izq. A Der.
Operador Símbolo Asociatividad
Paréntesis ( ) Izq. A Der.
Negación Lógica
Más Unario
Menos Unario
Incremento
Decremento
!
+
-
++
--
Der. A Izq.
Suma
Resta
+
-
Izq. A Der.
Multiplicación
División
Módulo
*
/
%
Izq. A Der.
Asignación
= ,*=, /=, %=,
+= ,-=,&=, |=
Der. A Izq.
Igual a
Diferente a
==
!=
Izq. A Der.
Y lógico
O lógico
&&
||
Izq. A Der
+
-
Ejercicios
1. Realizar un programa que obtenga el volumen de un
cubo.
2. Realizar un programa que obtenga el área de una
circunferencia y el volumen de una esfera de la
misma longitud de radio.
3. Realizar un programa que obtenga el perímetro de un
triángulo escaleno.
4. A partir de una cantidad en segundos, proporcionar a
cuantas horas, minutos y segundos es equivalente.
• Estructuras:
A. if
B. Switch
• En las expresiones relacionales:
a) Falso : valor 0
b) Cierto : cualquier valor distinto de 0
Estructuras Condicionales
4
• Evalua la condición (expresión entera)
• Si la expresión o condición es cierta, entonces se
ejecuta la primer sentencia o grupo de sentencias
• Si la expresión es falsa, se ejecuta la sentencia o
grupo de sentencias después del else, si es que
este fue definido.
• En ambos casos se continua con la siguiente
instrucción en orden secuencial
if (condición) {
grupo_de_sentencias_1;
}
else {
grupo_de_sentencias_2;
}
Instrucción if
Ejemplo if- else
Ejemplos:
...
if (n > 0)
if (a > b)
z = a;
else
z = b;
...
...
if (n > 0)
{
if (a > b)
z = a;
}
else
z = b;
...
• else asociado a if más cercano.
• { } para romper ambigüedad.
Alternativa múltiple: if-else-if
• Evaluación secuencial de arriba hacia abajo
• Si ninguna condición es cierta se realizan el grupo de sentencias por
defecto
• El último else es opcional
• De acuerdo a { } y sangrado/indentación para mejor legibilidad
if (condición_1) {
grupo_de_sentencias_1;
}
else if (condición_2) {
grupo_de_sentencias_2;
}
. . .
else if (condición_N) {
grupo_de_sentencias_N;
}
else {
grupo_de_sentencias_por_defecto;
}
Estructura switch
• Alternativa múltiple de forma compacta y legible,
• expresión y constantes: tipo entero o caracter,
• break finaliza forzadamente la ejecución de un bloque de
código,
• default es opcional.
switch ( expresión )
{
case constante_1:
{
grupo_de_sentencias_1;
break;
}
case constante_2:
{
grupo_de_sentencias_2;
break;
}
. . .
case constante_n:
{
grupo_de_sentencias_n;
break;
}
default:
{ grupo_de_sentencias_por_defecto;
break;
}
}
5
Ejemplo Estructura switch
#include <stdio.h>
void main()
{
// capturar un número
switch ( num )
{
case 1 : {
printf("Uno.n");
break;
}
case 2 : {
printf("Dos.n");
break;
}
. . .
case 5 : {
printf("Cinco.n");
break;
}
default : {
printf("No esperado.n");
break;
}
}
}
Ejercicios
• Realizar un programa que de tres números capturados indique cual
es el mayor de ellos.
• Escribir un programa que a partir de un valor entero determine si el
número leído es múltiplo de 3 y 6, si es multiplo solo de 3, o
ninguna de las anteriores.
• Escribir un programa que con un número y un par de valores para
un límite cerrado; muestre una leyenda en pantalla para describir si
el número se encuentra dentro de los límites o fuera de ellos.
Ejercicios
• Escribir que a partir de un caracter indique si el caracter
tecleado es un dígito, una letra mayúscula o una letra
minúscula.
• Escribir un programa que dados dos operandos y un operador
muestre el resultado de aplicar dicho operador a ambas
entradas númericas. Los operadores pueden ser: +,-,*,/,%,&&,||.
• A partir de un caracter, desplegar la palabra correspondiente
como se indica en la tabla:
f
o
c
e
d
p
i
file
open
close
edit
delete
paste
insert
• Ejecución repetida de un grupo de sentencias:
• De acuerdo a ciertas condiciones, o
• un número prefijado de veces
• Estructuras:
• while
• do-while
• for
Estructuras Iteractivas
6
while (expresión_condicional)
sentencia;
while (expresión_condicional)
{
grupo_de_sentencias;
}
Estructura while
La sentencia o grupo de sentencias se repite hasta que
el valor de la expresión condicional alcance un valor de
falso, o mientras que al evaluar la expresión condicional
de un resultado de verdadero
do
sentencia;
while (condición);
do {
grupo_de_sentencias;
} while (condición);
• Similar a while
• Primero se ejecuta el conjunto de instrucciones y
después se verifica la condición
• El grupo de instrucciones se ejecuta entre 1 y N veces
• Tanto while como do-while suelen usarse cuando el
número de iteraciones no se desconoce a priori
Estructura do ... while
for (sentencia_inicial; condición; incr/decr)
sentencia;
for (sentencia_inicial; condición; incr/decr)
{
grupo_de_sentencias;
}
Estructura for
i=13
Ejemplo: Σi=0 (i3-i2)
#include <stdio.h>
void main()
{
int i;
float cuad,cubo,suma;
suma = 0;
for (i = 1 ; i <= 13 ; i++) {
cuad = i*i;
cubo = cuad * i;
suma += cubo - cuad;
}
// imprimir el resultado de suma
}
Ejemplo for
7
for (sentencia_inicial; condición; incr/decr)
{
grupo_de_sentencias;
}
sentencia_inicial;
while (condición) {
grupo_de_sentencias;
incremento/decremento;
}
Equivalencia for-while Ejercicios I
Estructuras Iteractivas
1. Escribir un programa que con números capturados indefinidamente
calcule la suma de los 20 primeros números múltiplos de 5 o de 7 y
al cumplirse esta condición termine.
2. Crear un programa que calcule la potencia de un número entero,
solicitando su valor y el del exponente.
3. Escribir un programa que lea N números enteros y muestre el
mayor y el menor de todos ellos.
4. Realizar un programa que escriba la tabla de multiplicar de un
número entero leído por teclado.
Ejercicios II
Estructuras Iteractivas
5. Escribir un programa que determine si un número entero dado es
primo o no lo es.
6. Desarrollar un programa que calcule el factorial de un número
entero leído por teclado.
7. Escribir un programa que calcule la suma de todos los números
múltiplos de 5 comprendidos entre dos enteros leídos por teclado.
Tipos de datos
Estructurados: Tablas
8
Introducción
• Creación de tipos de datos complejos: vectores, matrices,
tablas multidimensionales y cadenas de caracteres
• Colección de datos del mismo tipo básico
• Referenciados mediante un mismo nombre
• Almacenados en posiciones de memoria contiguas:
• Dirección de memoria más baja primer elemento, y
• Dirección de memoria más alta último elemento
Vectores - Una dimensión
• tipo_de_datos: tipo de los elementos del vector
• nombre_tabla: identificador para el vector y sus
elementos
• tamaño: expresión constante que indica el número de
elementos del vector
tipo_de_datos nombre_tabla[tamaño];
primer elemento
del vector
último elemento
del vector
Acceso a un elemento
• Indice entre 0 y N-1 !!!
• Ejemplos:
nombre_vector[índice];
int contador[10];
int i, j, x;
...
x = contador[1];
x = contador[i];
contador[i*2+j] = 24;
...
#define TAM 100
void main ()
{
int vector[TAM], i;
for (i=0; i<TAM; i++)
vector[i] = 0;
}
Ejemplo de Vectores
• Normalizar un conjunto de números reales
#include <math.h>
define MAX 100
void main ()
{
float v[MAX], modulo;
int i;
/* Lectura del vector */
for (i=0; i<MAX; i++)
scanf("%f", &v[i]);
/* Calcular el módulo */
modulo = 0.0;
for (i=0; i<MAX; i++)
modulo += (v[i]*v[i]);
modulo = sqrt(modulo);
/* Normalización */
for (i=0; i<MAX; i++)
v[i] /= modulo;
/* Escritura del vector */
for (i=0; i<MAX; i++)
printf("v[%d]=%fn", i, v[i]);
}
9
Matrices - Dos dimensiones
• tamaño1 : número de filas
• tamaño2 : número de columnas
• almacenamiento por filas: (0,0), (0,1), ..., (0,M-1), (1,0),
etc.
tipo_de_datos nombre_tabla[tamaño1][tamaño2];
Ejemplo de Matrices
• Traspuesta de una matriz de enteros:
#define MAX 20
#include <stdio.h>
void main ()
{
int m[MAX][MAX], mt[MAX][MAX];
int fil, col, i, j;
/* Lectura de la matriz */
// capturar cantidad de fila de matriz en variable fil
// capturar cantidad de columnas de matriz en variable col
for (i=0; i<fil; i++)
for (j=0; j<col; j++)
{
// capturar los elementos m[i][j]
}
/* Traspuesta */
for (i=0; i<fil; i++)
for (j=0; j<col; j++)
mt[j][i] = m[i][j];
/* Escritura de la matriz */
for (i=0; i<fil; i++)
for (j=0; j<col; j++)
// imprimir elementos mt[i][j]
}
Tablas
multidimensionales
• Declaración:
• Acceso
• Almacenadas por orden de dimensión: filas, columnas, etc.
• Rara vez se usan tablas de más de tres dimensiones
tipo_de_datos nombre_tabla[tam1][tam2]...[tamN];
nombre_tabla[índice1][índice2]...[índiceN]
Tablas
multidimensionales
10
Cadenas de caracteres
• Vectores de tipo caracter (char) con un tratamiento
especial
• El último elemento útil del vector debe ser el caracter nulo
(código ASCII 0)  ’0’
• Cadena de N caracteres  declarar un vector con N+1
elementos
• Ejemplo: char cadena[6]; reserva suficiente espacio para
almacenar una cadena de hasta 5 caracteres:
• Definición de constantes mediante comillas:
Inicialización de Cadenas
• Consulta: igual que en los vectores
• Asignación, diferentes maneras:
char cadena[10];
...
cadena[0] = ’h’;
cadena[1] = ’o’;
cadena[2] = ’l’;
cadena[3] = ’a’;
cadena[4] = ’0’;
• Cadena vacía:
char cadena[12] = "Una frase";
...
cadena = ’0’; /* Ahora es una cadena vacia */
char nombre[10] = {’J’,’E’,’S’,’U’,’S’,’0’};
char nombre[10] = “JESUS";
char nombre[] = “JESUS";
Funciones para uso de
Cadenas de caracteres
• Funciones de manipulación en string.h:
• strlen: longitud de una cadena,
• strcpy: copiar una cadena en otra,
• strcat: concatenar dos cadenas,
• strcmp: comparar dos cadenas, etc.
• Entrada y salida (stdio.h):
• Funciones gets y puts
Ejemplo de Cadenas de caracteres
• Leer dos cadenas, concatenarlas, convertir minúsculas en
mayúsculas y viceversa:
#include <stdio.h>
#include <string.h>
void main ()
{
char cad1[80], cad2[80], cad3[160];
int i, delta;
printf("nCadena 1: ");
gets(cad1);
printf("nCadena 2: ");
gets(cad2); /* cad3 = cad1 + cad2 */
strcpy(cad3, cad1);
strcat(cad3, cad2);
i = 0;
delta = ’a’ - ’A’;
while (cad3[i] != ’0’)
{
if ((cad3[i]>=’a’) && (cad3[i]<=’z’))
cad3[i]-=delta; /* Convierte en mayúscula */
else if ((cad3[i]>=’A’) && (cad3[i]<=’Z’))
cad3[i]+=delta; /* Convierte en minúscula */
i++;
}
printf("La cadena resultante es: %sn", cad3);
}
11
Ejercicios I de Arreglos
• ¿Dónde está el error en el siguiente programa?
void main ()
{
int vector[10];
int x = 1;
for (x=1; x<=10; x++)
vector[x]=23;
}
• Escribir un programa que lea del teclado un vector de 10 números
enteros, lo invierta, y finalmente lo muestre de nuevo.
• Escribir un programa que cuente el número de palabras separadas por
espacio en una frase. La frase se almacena en forma de vector y el
último elemento es el caracter ’.’.
• Escribir un programa que lea del teclado dos números enteros de hasta
20 dígitos y los sume. Usar vectores para almacenar los dígitos.
• Escribir un programa que calcule la moda de un conjunto de números
enteros almacenados en un vector.
Ejercicios II de Arreglos
• ¿Dónde está el error en el siguiente programa?
void main ()
{
int matriz[10][3];
int x, y;
for (x=0; x<3; x++)
for (y=0; y<10; y++)
matriz[x][y]=0;
}
• Escribir un programa que inicialice cada elemento de una matriz de
enteros con el valor de la suma de su número de fila y columna.
• Escribir un programa que calcule la suma de dos matrices.
• Escribir un programa que calcule los puntos de silla de una matriz de
enteros. Un elemento de la matriz es un punto de silla si es el mínimo
de su fila y el máximo de su columna.
• Escribir un programa que determine si una matriz es simétrica.
• Escribir un programa que multiplique dos matrices.
Ejercicios III de Arreglos
• Escribir un programa que dada una cadena de caracteres y un
entero correspondiente a una posición válida dentro de ella, genere
una nueva cadena de caracteres que contenga todos los caracteres
a la izquierda de dicha posición, pero en orden inverso.
• Escribir un programa que dada una cadena de caracteres, le quite
los caracteres de espacios en blanco blancos. Escribir dos
versiones, una utilizando una cadena auxiliar y otra versión que
realice los cambios sobre la misma cadena.
• Escribir un programa que lea dos cadenas de caracteres, las
compare e informe de si son iguales o diferentes.
• Escribir un programa que convierta un número entero positivo,
capturado en una cadena de caracteres, de cualquier base menor o
igual a base 16 a un número en base decimal.
• Escribir un programa que convierta un número en base decimal,
capturado en una cadena, a un número en cualquier base menor o
igual a 16.

Más contenido relacionado

PDF
PPT
Ambiente
PPT
Ambiente de programación en pascal
PPT
Ambiente de programacin en pascal
PDF
Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)
PPSX
Java teoría
DOCX
Lenguaje latino
PDF
Tema 2 tipos de datos y expresiones en java por gio
Ambiente
Ambiente de programación en pascal
Ambiente de programacin en pascal
Tipos de datos fundamentales (copia conflictiva de amyeluz gomez 2012 09-26)
Java teoría
Lenguaje latino
Tema 2 tipos de datos y expresiones en java por gio

La actualidad más candente (19)

PDF
Lenguaje de programación c
PPT
Introduccion Java
DOCX
DOCX
Unidad 2
PDF
PPSX
Tema 1-2 identificadores - variable y constante
PPT
DOCX
37 tarazona karen programacion
PPTX
Variables de-programación
PPTX
Estructuras en C
PPTX
Tipos de datos ok
PDF
Algoritmos y lenjuage de programacion
PPT
Curso lenguaje c_segundo_modulo_
PDF
Tema 3: Tipos y clases en Haskell
PPTX
Ola k ase
PDF
Lenguajes de Programación: Tutorial csharp
PDF
Guía de Algoritmo y Programación en C
PPTX
TIPOS DE DATOS PARA C++
Lenguaje de programación c
Introduccion Java
Unidad 2
Tema 1-2 identificadores - variable y constante
37 tarazona karen programacion
Variables de-programación
Estructuras en C
Tipos de datos ok
Algoritmos y lenjuage de programacion
Curso lenguaje c_segundo_modulo_
Tema 3: Tipos y clases en Haskell
Ola k ase
Lenguajes de Programación: Tutorial csharp
Guía de Algoritmo y Programación en C
TIPOS DE DATOS PARA C++
Publicidad

Destacado (20)

DOC
PROGRAMACION EN C
PDF
Curso basico de programacion en c
PDF
Clase1 c
PPTX
Lenguaje de programacion en c
PDF
Certificate
PDF
Projet du Nouveau Code d’Investissement
PDF
Novacet-al-207-JusticeHomeless2006
PPTX
Evaluación nacional final grupo.8
PDF
JESÚS ROSAS
PPTX
The Miami Heat Postseason Results
PPSX
Presentacion1 lenguaje de-programacion_c
PDF
Squash Republic Sport Logos
PPT
Introduccion Lenguaje C Blanca
PPTX
quadrupole mass analyser Faiza hassan
PPT
Curso c i
PPTX
Lenguaje C_Curso Secap
PDF
Lenguaje C (pdf)
PPSX
Introducción a la codificación en lenguaje C
PROGRAMACION EN C
Curso basico de programacion en c
Clase1 c
Lenguaje de programacion en c
Certificate
Projet du Nouveau Code d’Investissement
Novacet-al-207-JusticeHomeless2006
Evaluación nacional final grupo.8
JESÚS ROSAS
The Miami Heat Postseason Results
Presentacion1 lenguaje de-programacion_c
Squash Republic Sport Logos
Introduccion Lenguaje C Blanca
quadrupole mass analyser Faiza hassan
Curso c i
Lenguaje C_Curso Secap
Lenguaje C (pdf)
Introducción a la codificación en lenguaje C
Publicidad

Similar a C curso intr (20)

PPTX
Tutorial lenguaje c
PPTX
Tutorial lenguaje c
PPSX
OC_Programación_S2.ppsx
PPT
Lenguaje C
PDF
03 iteracion
PPT
Clase lenguaje c xxxxxx
PPT
Clase lenguaje c xxxxxx
PPT
Clase lenguaje c
PDF
Material de Clases TP 03 - Programación Computacional
PPT
Estructura de lenguaje C++
PPTX
Estructuras de control de flujo
PPT
Clase 3introduccion a_lenguace_c
PDF
Trabajo Final de Programación
DOCX
Trabajo de computacion
PDF
Lenguaje c
PPT
Lenguajec
PPT
2 estructura programa-c
PPT
IntroLenguajeC.ppt
PPT
Wilfreddy barco
Tutorial lenguaje c
Tutorial lenguaje c
OC_Programación_S2.ppsx
Lenguaje C
03 iteracion
Clase lenguaje c xxxxxx
Clase lenguaje c xxxxxx
Clase lenguaje c
Material de Clases TP 03 - Programación Computacional
Estructura de lenguaje C++
Estructuras de control de flujo
Clase 3introduccion a_lenguace_c
Trabajo Final de Programación
Trabajo de computacion
Lenguaje c
Lenguajec
2 estructura programa-c
IntroLenguajeC.ppt
Wilfreddy barco

Último (20)

PPTX
Contexto Normativo NSR10, presentacion 2025
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PDF
manual-electricidad-automotriz-sistemas-electricos-bateria-alumbrado-iluminac...
PDF
TESTAMENTO DE DESCRIPTIVA ..............
DOCX
Cumplimiento normativo y realidad laboral
PPTX
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
PDF
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PDF
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PDF
Estrategias de apoyo de tecnología 2do periodo pdf
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
PDF
1132-2018 espectrofotometro uv visible.pdf
DOC
informacion acerca de la crianza tecnificada de cerdos
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
PPTX
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
PDF
Informe Estudio Final Apagon del 25 de febrero
Contexto Normativo NSR10, presentacion 2025
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
manual-electricidad-automotriz-sistemas-electricos-bateria-alumbrado-iluminac...
TESTAMENTO DE DESCRIPTIVA ..............
Cumplimiento normativo y realidad laboral
CAPACITACIÓN DE USO ADECUADO DE EPP.pptx
Sugerencias Didacticas 2023_Diseño de Estructuras Metalicas_digital.pdf
Manual ISO9001_2015_IATF_16949_2016.pptx
MATRIZ IDENTIFICACIÓN EVALUACION CONTROL PRL.pdf
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
Estrategias de apoyo de tecnología 2do periodo pdf
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
1132-2018 espectrofotometro uv visible.pdf
informacion acerca de la crianza tecnificada de cerdos
clase MICROCONTROLADORES ago-dic 2019.pptx
Electricidad-Estatica-Peligros-Prevencion.pdf
MARITIMO Y LESGILACION DEL MACO TRANSPORTE
Informe Estudio Final Apagon del 25 de febrero

C curso intr

  • 1. 1 Curso Introductorio Al Lenguaje De Programación En “C” 1. Directivas del preprocesador 2. Definiciones de tipos de datos 3. Declaraciones de funciones. • Entre ellas el programa principal Estructura De Un Programa Objeto abstracto donde se almacena un valor. Sintaxis A. tipo_de_datos nombre_de_variable; B. tipo_de_datos nombre_de_variable, nombre_de_variable, ... ; C. tipo_de_datos nombre_de_variable = valor_inicial; Declaración 1. Asociar un identificador 2. Reservar espacio en memoria 3. Opcionalmente, asignar un valor (inicialización) Variables Enteros Tipo int unsigned int short int unsigned short int long int unsigned long int [-32,768 , 32,767] [0, 65,535] [-32768, 32767] [0, 65535] [-2,147,483,648, 2,147,483,647] [0, 4,294,967,295] Rango Tamaño 16 bits 16 bits 16 bits 16 bits 32 bits 32 bits Formato %d %u %d %u %ld %lu
  • 2. 2 Reales Tipo float double long double ± 3.4 * (10**-38) a ± 3.4 * (10**+38) ± 1.7 * (10**-308) a ± 1.7 * (10**+308) ±3.4 * (10**-4932) a ± 1.1 * (10**+4932) Rango Tamaño 4 bytes 8 bytes 16 bytes Formato %f,%e,%g %f,%e,%g %f,%e,%g Caracter Tipo unsigned char char 0 <= X <= 255 -128 <= X <= 127 Rango Tamaño 1 byte 1 byte • Forma pre-fija y post-fija de ++ y -- . Ejemplo: z++; x = ((++z) - (w--)) % 100; x = (z - w) % 100; w--; • Operación y asignación de forma compacta. i = i + 5; i += 5; x = x * (y + 2); x*=(y+2) variable=expresion • Fórmula matemática que especifica un valor • Asignación: • Operadores: Cambio de signo - Un Incremento ++ Operando Decremento -- Suma + Resta - Dos Multiplicación * Operandos División / Módulo % Expresiones Aritméticas • Condiciones básicas en sentencias condicionales e iterativas • Operadores: Menor que < Mayor que > Menor o igual que <= Mayor o igual que >= Igual que == Distinto que != • Resultado lógico: falso cero cierto distinto de cero Ejemplos: 4 > 8 falso 3 <= 24 cierto 23 == 22 falso 4 != 5 cierto No confundir asignación (=) con comparación (==) x = 3 es también una expresión, no cero cierto Expresiones Relacionales
  • 3. 3 • Expresiones condicionales • Operadores: Conjunción ó Y lógico && Disyunción ó O lógico || Negación ó NO lógico ! • Ejemplos: 3 && 0 falso !(7 > 1) falso (x < x - 8) || 1 cierto (5 <= 0) || !(x > x -1) falso 2 && (4 > 9) falso (8 == 4 * 2) && (5 > 2) cierto • Tabla de verdad cierto cierto falso falso A cierto falso cierto falso B falso falso cierto cierto !A cierto falso falso falso A&&B cierto cierto cierto falso A||B Expresiones Lógicas Prioridad De Operadores Menor que Menor o igual que Mayor que Mayor o igual que < <= > >= Izq. A Der. Operador Símbolo Asociatividad Paréntesis ( ) Izq. A Der. Negación Lógica Más Unario Menos Unario Incremento Decremento ! + - ++ -- Der. A Izq. Suma Resta + - Izq. A Der. Multiplicación División Módulo * / % Izq. A Der. Asignación = ,*=, /=, %=, += ,-=,&=, |= Der. A Izq. Igual a Diferente a == != Izq. A Der. Y lógico O lógico && || Izq. A Der + - Ejercicios 1. Realizar un programa que obtenga el volumen de un cubo. 2. Realizar un programa que obtenga el área de una circunferencia y el volumen de una esfera de la misma longitud de radio. 3. Realizar un programa que obtenga el perímetro de un triángulo escaleno. 4. A partir de una cantidad en segundos, proporcionar a cuantas horas, minutos y segundos es equivalente. • Estructuras: A. if B. Switch • En las expresiones relacionales: a) Falso : valor 0 b) Cierto : cualquier valor distinto de 0 Estructuras Condicionales
  • 4. 4 • Evalua la condición (expresión entera) • Si la expresión o condición es cierta, entonces se ejecuta la primer sentencia o grupo de sentencias • Si la expresión es falsa, se ejecuta la sentencia o grupo de sentencias después del else, si es que este fue definido. • En ambos casos se continua con la siguiente instrucción en orden secuencial if (condición) { grupo_de_sentencias_1; } else { grupo_de_sentencias_2; } Instrucción if Ejemplo if- else Ejemplos: ... if (n > 0) if (a > b) z = a; else z = b; ... ... if (n > 0) { if (a > b) z = a; } else z = b; ... • else asociado a if más cercano. • { } para romper ambigüedad. Alternativa múltiple: if-else-if • Evaluación secuencial de arriba hacia abajo • Si ninguna condición es cierta se realizan el grupo de sentencias por defecto • El último else es opcional • De acuerdo a { } y sangrado/indentación para mejor legibilidad if (condición_1) { grupo_de_sentencias_1; } else if (condición_2) { grupo_de_sentencias_2; } . . . else if (condición_N) { grupo_de_sentencias_N; } else { grupo_de_sentencias_por_defecto; } Estructura switch • Alternativa múltiple de forma compacta y legible, • expresión y constantes: tipo entero o caracter, • break finaliza forzadamente la ejecución de un bloque de código, • default es opcional. switch ( expresión ) { case constante_1: { grupo_de_sentencias_1; break; } case constante_2: { grupo_de_sentencias_2; break; } . . . case constante_n: { grupo_de_sentencias_n; break; } default: { grupo_de_sentencias_por_defecto; break; } }
  • 5. 5 Ejemplo Estructura switch #include <stdio.h> void main() { // capturar un número switch ( num ) { case 1 : { printf("Uno.n"); break; } case 2 : { printf("Dos.n"); break; } . . . case 5 : { printf("Cinco.n"); break; } default : { printf("No esperado.n"); break; } } } Ejercicios • Realizar un programa que de tres números capturados indique cual es el mayor de ellos. • Escribir un programa que a partir de un valor entero determine si el número leído es múltiplo de 3 y 6, si es multiplo solo de 3, o ninguna de las anteriores. • Escribir un programa que con un número y un par de valores para un límite cerrado; muestre una leyenda en pantalla para describir si el número se encuentra dentro de los límites o fuera de ellos. Ejercicios • Escribir que a partir de un caracter indique si el caracter tecleado es un dígito, una letra mayúscula o una letra minúscula. • Escribir un programa que dados dos operandos y un operador muestre el resultado de aplicar dicho operador a ambas entradas númericas. Los operadores pueden ser: +,-,*,/,%,&&,||. • A partir de un caracter, desplegar la palabra correspondiente como se indica en la tabla: f o c e d p i file open close edit delete paste insert • Ejecución repetida de un grupo de sentencias: • De acuerdo a ciertas condiciones, o • un número prefijado de veces • Estructuras: • while • do-while • for Estructuras Iteractivas
  • 6. 6 while (expresión_condicional) sentencia; while (expresión_condicional) { grupo_de_sentencias; } Estructura while La sentencia o grupo de sentencias se repite hasta que el valor de la expresión condicional alcance un valor de falso, o mientras que al evaluar la expresión condicional de un resultado de verdadero do sentencia; while (condición); do { grupo_de_sentencias; } while (condición); • Similar a while • Primero se ejecuta el conjunto de instrucciones y después se verifica la condición • El grupo de instrucciones se ejecuta entre 1 y N veces • Tanto while como do-while suelen usarse cuando el número de iteraciones no se desconoce a priori Estructura do ... while for (sentencia_inicial; condición; incr/decr) sentencia; for (sentencia_inicial; condición; incr/decr) { grupo_de_sentencias; } Estructura for i=13 Ejemplo: Σi=0 (i3-i2) #include <stdio.h> void main() { int i; float cuad,cubo,suma; suma = 0; for (i = 1 ; i <= 13 ; i++) { cuad = i*i; cubo = cuad * i; suma += cubo - cuad; } // imprimir el resultado de suma } Ejemplo for
  • 7. 7 for (sentencia_inicial; condición; incr/decr) { grupo_de_sentencias; } sentencia_inicial; while (condición) { grupo_de_sentencias; incremento/decremento; } Equivalencia for-while Ejercicios I Estructuras Iteractivas 1. Escribir un programa que con números capturados indefinidamente calcule la suma de los 20 primeros números múltiplos de 5 o de 7 y al cumplirse esta condición termine. 2. Crear un programa que calcule la potencia de un número entero, solicitando su valor y el del exponente. 3. Escribir un programa que lea N números enteros y muestre el mayor y el menor de todos ellos. 4. Realizar un programa que escriba la tabla de multiplicar de un número entero leído por teclado. Ejercicios II Estructuras Iteractivas 5. Escribir un programa que determine si un número entero dado es primo o no lo es. 6. Desarrollar un programa que calcule el factorial de un número entero leído por teclado. 7. Escribir un programa que calcule la suma de todos los números múltiplos de 5 comprendidos entre dos enteros leídos por teclado. Tipos de datos Estructurados: Tablas
  • 8. 8 Introducción • Creación de tipos de datos complejos: vectores, matrices, tablas multidimensionales y cadenas de caracteres • Colección de datos del mismo tipo básico • Referenciados mediante un mismo nombre • Almacenados en posiciones de memoria contiguas: • Dirección de memoria más baja primer elemento, y • Dirección de memoria más alta último elemento Vectores - Una dimensión • tipo_de_datos: tipo de los elementos del vector • nombre_tabla: identificador para el vector y sus elementos • tamaño: expresión constante que indica el número de elementos del vector tipo_de_datos nombre_tabla[tamaño]; primer elemento del vector último elemento del vector Acceso a un elemento • Indice entre 0 y N-1 !!! • Ejemplos: nombre_vector[índice]; int contador[10]; int i, j, x; ... x = contador[1]; x = contador[i]; contador[i*2+j] = 24; ... #define TAM 100 void main () { int vector[TAM], i; for (i=0; i<TAM; i++) vector[i] = 0; } Ejemplo de Vectores • Normalizar un conjunto de números reales #include <math.h> define MAX 100 void main () { float v[MAX], modulo; int i; /* Lectura del vector */ for (i=0; i<MAX; i++) scanf("%f", &v[i]); /* Calcular el módulo */ modulo = 0.0; for (i=0; i<MAX; i++) modulo += (v[i]*v[i]); modulo = sqrt(modulo); /* Normalización */ for (i=0; i<MAX; i++) v[i] /= modulo; /* Escritura del vector */ for (i=0; i<MAX; i++) printf("v[%d]=%fn", i, v[i]); }
  • 9. 9 Matrices - Dos dimensiones • tamaño1 : número de filas • tamaño2 : número de columnas • almacenamiento por filas: (0,0), (0,1), ..., (0,M-1), (1,0), etc. tipo_de_datos nombre_tabla[tamaño1][tamaño2]; Ejemplo de Matrices • Traspuesta de una matriz de enteros: #define MAX 20 #include <stdio.h> void main () { int m[MAX][MAX], mt[MAX][MAX]; int fil, col, i, j; /* Lectura de la matriz */ // capturar cantidad de fila de matriz en variable fil // capturar cantidad de columnas de matriz en variable col for (i=0; i<fil; i++) for (j=0; j<col; j++) { // capturar los elementos m[i][j] } /* Traspuesta */ for (i=0; i<fil; i++) for (j=0; j<col; j++) mt[j][i] = m[i][j]; /* Escritura de la matriz */ for (i=0; i<fil; i++) for (j=0; j<col; j++) // imprimir elementos mt[i][j] } Tablas multidimensionales • Declaración: • Acceso • Almacenadas por orden de dimensión: filas, columnas, etc. • Rara vez se usan tablas de más de tres dimensiones tipo_de_datos nombre_tabla[tam1][tam2]...[tamN]; nombre_tabla[índice1][índice2]...[índiceN] Tablas multidimensionales
  • 10. 10 Cadenas de caracteres • Vectores de tipo caracter (char) con un tratamiento especial • El último elemento útil del vector debe ser el caracter nulo (código ASCII 0)  ’0’ • Cadena de N caracteres  declarar un vector con N+1 elementos • Ejemplo: char cadena[6]; reserva suficiente espacio para almacenar una cadena de hasta 5 caracteres: • Definición de constantes mediante comillas: Inicialización de Cadenas • Consulta: igual que en los vectores • Asignación, diferentes maneras: char cadena[10]; ... cadena[0] = ’h’; cadena[1] = ’o’; cadena[2] = ’l’; cadena[3] = ’a’; cadena[4] = ’0’; • Cadena vacía: char cadena[12] = "Una frase"; ... cadena = ’0’; /* Ahora es una cadena vacia */ char nombre[10] = {’J’,’E’,’S’,’U’,’S’,’0’}; char nombre[10] = “JESUS"; char nombre[] = “JESUS"; Funciones para uso de Cadenas de caracteres • Funciones de manipulación en string.h: • strlen: longitud de una cadena, • strcpy: copiar una cadena en otra, • strcat: concatenar dos cadenas, • strcmp: comparar dos cadenas, etc. • Entrada y salida (stdio.h): • Funciones gets y puts Ejemplo de Cadenas de caracteres • Leer dos cadenas, concatenarlas, convertir minúsculas en mayúsculas y viceversa: #include <stdio.h> #include <string.h> void main () { char cad1[80], cad2[80], cad3[160]; int i, delta; printf("nCadena 1: "); gets(cad1); printf("nCadena 2: "); gets(cad2); /* cad3 = cad1 + cad2 */ strcpy(cad3, cad1); strcat(cad3, cad2); i = 0; delta = ’a’ - ’A’; while (cad3[i] != ’0’) { if ((cad3[i]>=’a’) && (cad3[i]<=’z’)) cad3[i]-=delta; /* Convierte en mayúscula */ else if ((cad3[i]>=’A’) && (cad3[i]<=’Z’)) cad3[i]+=delta; /* Convierte en minúscula */ i++; } printf("La cadena resultante es: %sn", cad3); }
  • 11. 11 Ejercicios I de Arreglos • ¿Dónde está el error en el siguiente programa? void main () { int vector[10]; int x = 1; for (x=1; x<=10; x++) vector[x]=23; } • Escribir un programa que lea del teclado un vector de 10 números enteros, lo invierta, y finalmente lo muestre de nuevo. • Escribir un programa que cuente el número de palabras separadas por espacio en una frase. La frase se almacena en forma de vector y el último elemento es el caracter ’.’. • Escribir un programa que lea del teclado dos números enteros de hasta 20 dígitos y los sume. Usar vectores para almacenar los dígitos. • Escribir un programa que calcule la moda de un conjunto de números enteros almacenados en un vector. Ejercicios II de Arreglos • ¿Dónde está el error en el siguiente programa? void main () { int matriz[10][3]; int x, y; for (x=0; x<3; x++) for (y=0; y<10; y++) matriz[x][y]=0; } • Escribir un programa que inicialice cada elemento de una matriz de enteros con el valor de la suma de su número de fila y columna. • Escribir un programa que calcule la suma de dos matrices. • Escribir un programa que calcule los puntos de silla de una matriz de enteros. Un elemento de la matriz es un punto de silla si es el mínimo de su fila y el máximo de su columna. • Escribir un programa que determine si una matriz es simétrica. • Escribir un programa que multiplique dos matrices. Ejercicios III de Arreglos • Escribir un programa que dada una cadena de caracteres y un entero correspondiente a una posición válida dentro de ella, genere una nueva cadena de caracteres que contenga todos los caracteres a la izquierda de dicha posición, pero en orden inverso. • Escribir un programa que dada una cadena de caracteres, le quite los caracteres de espacios en blanco blancos. Escribir dos versiones, una utilizando una cadena auxiliar y otra versión que realice los cambios sobre la misma cadena. • Escribir un programa que lea dos cadenas de caracteres, las compare e informe de si son iguales o diferentes. • Escribir un programa que convierta un número entero positivo, capturado en una cadena de caracteres, de cualquier base menor o igual a base 16 a un número en base decimal. • Escribir un programa que convierta un número en base decimal, capturado en una cadena, a un número en cualquier base menor o igual a 16.