Professional Documents
Culture Documents
NRC: 3717
Fecha: 09-05-18
Cuaderno Digital
Programación
Problema Solución
Problema
Ejemplo:
Computador no
enciende
Numero: 3482
Residuos:
2
Algoritmo
2. Guardar el cociente
3. Guardar el residuo
4. Escribir residuo
Prueba de Escritorio
9538 953 8 8
953 95 3 3
95 9 5 5
9 0 9 9
0 - - -
Algoritmo: Conjunto de pasos realizados de manera ordenada para solucionar un
problema.
12. Servir
Resolución de Problemas
mi programa
comunicación con el computador a través de instrucciones que cumplen con una sintaxis
Análisis
Fase 1: Diseño Verificación
Codificación
Ejecución Verificación
Diseño: Los pasos deben ser claros y el algoritmo debe ser: preciso, finito y definido
Proceso:
171893438-1
1*2=2
1*2=2
9*2=18-9=9
4*2=8
8*2=18-9=9
Suma= 28
7+8+3+3=21
28+21=49
50-49=1
Cedula incorrecta
Entrada: valor_del_lado
Proceso:
L*L
Resultado= El área
Algoritmo:
Inicio
Fin
Proceso:
Luego de hervir el agua en la tetera colocar en la taza, agregar café, azúcar y servir
Algoritmo
Inicio
esperar
12. Servir
Fin
Inicio
1. Ingresar el año
3. Guardar residuo
6. Si residuo1=residuo2 entonces
9. Caso contrario
Fin
Prueba de escritorio
Inicio
1. Ingresar un número
2. Colocar 0 en sumar
5. Guardar residuo
6. Sumar residuo
11. Si residuo es 0
Fin
menor o igual a 99 se repite el proceso hasta que la resta sea mayor a 99.
Salida: Numero es divisible para 7
Inicio
Ingresar un número
Guardar residuo
Si el residuo es 0 entonces
Sino
Fin_si
Sino
Repetir
Guardar multiplicación
Restar multiplicación de cociente
Guardar resta
Guardar residuo
Sino
Fin_si
Fin
434 43 4 8 35
Número divisible
para 7
Realizar el algoritmo para verificar si un número es divisible para 11 o no
Proceso:
Inicio
1. Ingresar el número
Guardar residuo
Sino
Fin_si
4. Sino
Colocar 1 en aviso
Repetir
Si aviso es 1 entonces
Sino
Fin_si
Restar suma1-suma2
Guardar residuo
Escribir” Es divisible”
Sino
Escribir “No es divisible”
Fin_si
5. Fin_si
Fin
48222 1 0 2 2 4822
4822 0 2 2 482
482 1 2 10 2 48
48
Validación de datos
Proceso: Verificar si los números son positivos y ver qué número es el mayor
Inicio
1. Ingresar un número1
3. Ingresar un numero2
6. Sino
Fin
Realizar un algoritmo para leer 2 números si el primer número es mayor mostrar la suma de
resultado, en caso de que los 2 números sean iguales restar los 2 números y presentar el
Inicio
1. Ingresar un número1
2. Ingresar un numero2
Guardar multiplicar1
Guardar multiplicar2
Guardar sumar
Sino
Fin
Representación de algoritmos
4. Lenguaje natural
5. Pseudocódigo
6. Diagrama de Flujo
Diagrama de Flujo
Son la representación gráfica sobre los datos a través de un proceso dando así una solución
al problema planteado. El diagrama de flujo utiliza ciertos símbolos para representar los
Símbolo Significado
Inicio
Proceso
Entrada/Salida
Decisión
Comentario
Impresión
Línea de flujo
Conector
Realizar un algoritmo para saber cuál es el mayor de dos números a raves del
diagrama de flujo
Inicio
Num1
Num2
Si No
Num1>
Num2
Numero1 Numero2
es mayor es mayor
Fin
Tipos de datos:
1. Entero
5. Parte entera
6. Parte decimal
7. Lógicos
1. Verdadero
2. Falso
1. Carácter
1. Alfanumérico
2. Especiales
3. Mayúsculas
4. Apostrofes
5. Numerales (carácter)
6. Apostrofes
Ejm: “a”
<tipo_dato>: identificador
Ej:
Num1=5
8. Entero: num3=2
Aritméticos
+,-,*,/,mod,div
A= 5 B=3
C= A+B 8
C= A-B 2
C= A*B 12
Relación
><;>=;<=;!=
==
a>b
5>1
8<>0 distinto
Operadores lógicos:
&&; ||; !
Y o not
Ej:
a=2 b= 0
c= a&&b
c= 0
10. Análisis
Entrada: 4 variables
despliega resultados
Algoritmo calc_sum_prod_prom
Var
Real: prom
//Const
//real: num=2
Inicio
Leer n2
Leer n3
Leer n4
sum= n1+n2+n3+n4
prod= n1*n2*n3*n4
//prom= sum/4
prom= (n1+n2+n3+n4) /4
Fin
Inicio
Num1
Num2
Num3
Num4
Diseñar el algoritmo que lee el peso de un individuo en libras y devuelva el peso en
kilogramos y gramos
12. Análisis
Entrada: Peso
desplegar en pantalla
Algoritmo conversión_libras_Kgr_gr
Var
Const
Real: libra=0.453592
Inicio
Leer peso
Kg= libra*peso
gr= Kg*1000
Fin
Inicio
Peso
Kg= lbxpeso
Gr= Kg*1000
“El peso en
kilogramos
es”Kg
“El peso en
gramos es”gr
Fin
Realizar un algoritmo para hacer una llamada telefónica
14. Análisis
Entrada: Número
Salida: La llamada
Algoritmo llamada_telefonica
Var
Carácter: contacto
Const
Cadena: Luis:0987545157
Inicio
Leer contacto
Sino
Realizar la llamada
Fin
Inicio
Contacto
Si No
Si contacto está
en cadena
Número
Número telefónico
telefónico=Contacto
Fin
Bucle
Proceso
Si
Condición
No
Proceso
Diseñar un algoritmo para ingresar números enteros entre 1 y 10, desplegar la suma
Inicio
de los números
Sum=0
Num=1
Sum=Sum+Num
Num=Num+1
Si
Num<=10
No
Sum
Fin
Realizar un diagrama de flujo para ver si un número es divisible para 3
Inicio
Sumar=0
Num
No Si
Num<=10
Cociente=Numdiv10
Si Num MOD 3==0
Residuo = NumMOD10 No
El numero es
El numero no es
divisible para 3
divisible para 3
Sumar= Sumar+Residuo
Número=Cociente
No
Cociente!=0
Si
Fin
Paradigmas de la programación
16. Estructurada:
2. Es secuencial
3. Orientada a objetos:
1. Funciones
2. Eventos
problema.
propósito
2. Ejecución del programa: Vemos los resultados del algoritmo y compruebo si los
#include<stdio.h>//.h head
//estándar input/output
Declaración de funciones
Implementación de funciones
{= inicio
Tipos de datos:
Entero: int
Caractere: char
objetos
Programación estructurada:
Es un paradigma de la programación que es utilizada para la escritura de un código de
programación, se considera como un estilo el cual tiene como objetivo lograr que el
programador elabore programas que al mismo tiempo sean sencillos y fáciles de entender,
esta programación se basa en un teorema fundamental, el cual nos dice que cualquiera que
sea el problema ya sea considerado un problema largo o difícil se lo puede resolver utilizando
únicamente las tres estructuras básicas las cuales son: secuencia, selección e iteración.
Características:
2. Secuencial: Esta nos indica que las instrucciones de un programa se deben ejecutar
la siguiente manera:
estructura propone la elección entre dos alternativas las cuales se basan en el resultado
manera:
6. Al momento de encontrar las fallas es mucho más fácil ya que existe una lógica en
los pasos.
7. Un programa que sea estructurado es mucho más fácil de ser leído por su secuencia.
cuales son considerados como entidades que combinan estado el cual son las propiedades o
conjunto de todos los objetos que colaboran entre si para realizar las tareas, lo cual permite
Características:
definidos.
Cuadro comparativo
programación
de programación, se
considera como un de los años 2. Puede ser leído bloque de
5. Al momento de
encontrar las
fallas es mucho
más fácil ya
lógica en los
pasos.
6. Da facilidades
al programador
Programación Es un paradigma de Surgió en 1. Se puede 6. No se Simula,
provoca que
4. Brinda mayor
su
rapidez al
modificación
desarrollar
sea muy
software.
trabajosa y
5. Relaciona el
difícil.
sistema al
mundo real.
de programación que una computadora interpreta para resolver un problema o una función
específica.
programación de alto nivel) a lenguaje máquina (código objeto) para que pueda ser
problema.
programación.
Instrucción: Una instrucción indica a la computadora la o las operaciones que ésta debe
Lenguaje de programación: Cualquier lenguaje artificial que puede utilizarse para definir
Lenguaje máquina: Está formado por las instrucciones que es capaz de ejecutar
humano, usando, para ello, una notación nemotécnica que resume en una pequeña cadena
de letras, la
aspectos
de encontrarlos aspectos principales que se pueden resolver, requerimientos, los datos que
se han de
cumple
Especificación: Proceso de analizar problemas del mundo real y determinar en forma clara
univoca el contexto, las precondiciones el resultado esperado, del cual se derivan las
postcondiciones.
programación.
Operadores y expresiones en C
2. Lógicos
3. Relacionales
Sentencia de Control
Sentencias de condición
If: (1 condición)
If-else: (2 decisiones/condiciones)
If-else-If: (+2 decisiones)
Ejemplos:
Int num;
Scanf(“%d”,&num);
If(num<=0);
Int num;
Scanf(“%d”,&num);
If (num%2==0)
Printf(“Escriir par”);
Else
Printf(“Escribir impar”);
Algoritmo
Inicio
Var
Entero num1,num2;
Leer num1;
Leer num2;
Si (num1>num2) entonces
Caso contrario
Fin
C++
int main () {
int num1,num2;
scanf (“%d”,&num1);
scanf (“%d”,&num2);
if (num1>num2)
printf(“numero1 es mayor numero2”);
else if (num2>num1)
else
printf(“numeros iguales”); }
no
Ingresar tres notas parciales, sacar su promedio si su promedio es mayor igual a 14
Switch() : Para enteros y para char cuando es una decicison multiple no para flotantes
Sintaxis:
Switch (variable)
Case valor1:
Break;
Case valor2:
Break;
Case valor3:
Break;
Default:
Ejemplo:
Switch (dia)
Case1:
Printf(“Lunes”);
Break;
Case2:
Printf(“Martes”);
Break;
Case3:
Printf(“Miercoles”);
Break;
Case4:
Printf(“Jueves”);
Break;
Case5:
Printf(“Viernes”);
Break;
Case6:
Printf(“Sabado”);
Break;
Case7:
Printf(“Domingo”);
Break;
Default:
Printf(“Error”);
El if y el switch nos sirve para una decision multiple pero el switch solo enteros y
caracteres
I multiplique dos numeros O divida dos numeros. Controlar con otro caracter
letra incorrecta
Sentencias de repetición:
Do{
}while (condición)
While (condición)
Validación de datos
Cero veces
For: cuando sabe el número de veces que voy a realizar una actividad
-=
%= *=
Ejemplo:
Sum=5
Do{
Sum+=3;
]While (sum<15);
While
Sum=5;
While (sum<15)
Sum+=3;
Operadores Unitarios
Operadores de Incremento ++
Operadores de Decremento –
Estos operadores solo pueden afectar a un operando y pueden estar antes o después del
operando.
Ejemplos:
a=15;
++a;
Esto quiere decir que la variable se incrementa en uno eso significa que ahora a tiene 16
b=3;
b++;
j=5;
j--;
j=8;
--j;
El orden del operador ++ o – se puede colocar antes o después y cumple con la función de
Este operador se puede combinar con el operador asignación = y ahí si se debe poner
Ejem:
x=5;
y=2;
x=y++;
x Y
5 2
2 3
x=5;
y=2;
x=++y;
x Y
5 2
3 3
a) (3*i-2*j)%(2*d-c)*j!=6
b) - -j-!(i<=j)
c) i++ %2*x+y==0
donde:
int i=8,j=5;
float x=0.005,y=-0,001;
char c=’c’,d=’d’;
Bucles
1. for()
for()
2. for()
for()
for()
3. for()
for()
for()
for()
for()
do()
4. do()
for()
5. do()
while()
Acumuladores
Sumatorias: ∑(signo)
Inicializar el acumulador
Acum+=valor;
Inicializar el acumulador
Acum*=valor;
Ejercicios:
Escribir un programa que realice el cálculo de calorías consumida por una persona, en
Ejecución:
Alimento1= 500
Alimento2= 50 calorías_por_alimento
Bucle
Alimento3= 1400
Alimento4= 700
Alimento5= 10
Alimento6= 5
Alimento7= 250
Alimento8= 100
Variables
Auxiliares= Con
Do While
While
For
Prueba de escritorio
Maximo y minimo
Cambios de base
86 B10,B2,B8
Decimal a binario
Binario a Decimal
Palíndromos: Que sea el mismo número al revés
Sucesiones y series numéricas
∞ n
N=1 i=1
∞ n
n=1 i=1
Segmento de código que me permite cumplir un propósito o una función, hace que mi
Ventajas:
Modular
números
Realizar con funciones un programa que permite ingresar un número y el numero
o no
#include <stdio.h>
#include <conio.h>
#include<math.h>
printf("Ingrese el dato:");
scanf("%d",&x);
return(x);
if (x>y)
return(x);
else
return(y);
if (x<y)
return(x);
else
return(y);
int mcd()
int n1,n2,ma,me,res,maximo;
n1=ingreso(n1);
n2=ingreso(n2);
ma=mayor(n1,n2);
me=menor(n1,n2);
do
{
res=ma%me;
if (res==0)
maximo=me;
else
ma=me;
me=res;
}while (res!=0);
return(maximo);
bool primo()
int n1,raiz,cont=0,res;
n1=ingreso(n1);
raiz=sqrt(n1);
for(int i=1;i<=raiz;i++)
{
res=n1%i;
if(res==0)
cont++;
if (cont>1)
return(false);
else
return(true);
void tabla ()
int n1,i;
n1=ingreso(n1);
for (i=1;i<=12;i++)
}
}
void menu ()
int opc;
do
printf("\nMENU PRINCIPAL:");
printf("\n5. SALIR");
scanf("%d",&opc);
switch(opc)
case 1:
case 2:
if (primo()==true)
else
break;
case 3:
//separar cifras();
break;
case 4:
tabla();
break;
case 5:
getch();
break;
default:
printf("Opcion no valida");
}
}while (opc<=4);
int main()
menu();
return 0;
}
Arreglo:
Es una estructura de memoria continua que puede almacenar un mismo tipo de datos
Cada casillero se le llama subíndice la estructura debe tener cualquier tipo de variable
Declaración de un arreglo
Ejemplo:
Int A[5];
Float NUMEROS[10];
Lectura arreglo
for (i=0;i<5;i++)
printf(“Ingrese el dato”);
scanf(%d”,&A[i]);
0 Ingrese un dato
1 Ingrese un dato
3
2 Ingrese un dato
3 Ingrese un dato
4 Ingrese un dato
Escritura de un arreglo
For (i=0;i<5;i++)
Printf(“%d”,A[i])
0 5
1 3
2 1
3 2
4 4
I=0;
For(;i<5;)
I++;
For(i=0,=1,k=5,i<5,j<10,k>0;i++,j--,k++)
Método Burbuja:
0 Ingrese un dato
1 Ingrese un dato
2 Ingrese un dato
3 Ingrese un dato
7
4 Ingrese un dato
Aux=a
A=b
B=aux
Aux a b
5 5 3
3 5
For (i<0;i<dim;i++)
For (j=i+1;j<dim;j++)
If(A[i]>A[j])
Aux=A[i]
A[i]=A[j]
A[j]=aux
}
Cadena de caracteres
Scanf (
Cadena de caracteres :
Ejemplo :
char nombre[7]:
A N I T A \0 ?
Librería
<String.h>
Lectura
o scanf(“%s”,nombre);
o gets(nombre);
impresión
o scanf(“%s”,nombre);
%c 1 carácter
%s una cadena
Scanf(“%s”,Nombres[0])
Scanf (“%c”,&Nombres[0][0])
Carácter espacio “ “
Do
While(frase[i]!=´\0´)
If (frase[i]==´ ´)
Funcion
Int i;
I=strlen(Nombre);
Printf(“%d”,strlen(Nombre));
Char*Nombre=”Hola”
Strcpy()=
Strcpy(c2,c1);
Char*nombre=”hola”
Char*nombre;
Nombre=”Hola” No se puede
memcpy:
Copia los valores de núm bytes desde la ubicación apuntada por la fuente directamente al
El tipo subyacente de los objetos apuntados por los punteros tanto de origen como de destino
son irrelevantes para esta función; El resultado es una copia binaria de los datos.
Para evitar desbordamientos, el tamaño de las matrices a las que apuntan los parámetros de
Ejemplo:
#include <stdio.h>
#include <string.h>
struct {
char name[40];
int age;
} person, person_copy;
int main ()
person.age = 46;
return 0;
memmove:
Copia los valores de núm bytes desde la ubicación apuntada por fuente al bloque de memoria
El tipo subyacente de los objetos apuntados por los punteros tanto de origen como
de destino son irrelevantes para esta función; El resultado es una copia binaria de los datos.
Para evitar desbordamientos, el tamaño de las matrices señaladas tanto por los parámetros
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
memmove (str+20,str+15,11);
puts (str);
return 0;
memchr:
Búsquedas dentro de los primeros num bytes del bloque de memoria apuntado por ptr para
puntero a la misma.
Tanto el valor como cada uno de los bytes verificados en la matriz ptr se interpretan como
busca un valor a partir de una dirección de memoria dada y devuelve un puntero a la primera
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
char * pch;
if (pch!=NULL)
else
return 0;
memcmp:
Compara los primeros num bytes del bloque de memoria apuntado por ptr1 a los
primeros num bytes apuntados por ptr2 , volviendo cero si todo el fósforo o un valor diferente
de cero que representa que es mayor si no lo hacen.
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
int n;
return 0;
memset:
Establece el primer num bytes del bloque de memoria apuntado por ptr a la
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
memset (str,'-',6);
puts (str);
return 0;
strcat:
Esta permite añadir un bloque de memoria a otro. Los dos bloques deben terminar con un
mismos strcat añade una cadena a otra pasándole dos punteros a los bloques de memoria
cadena).
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
char str[80];
strcat (str,"concatenated.");
puts (str);
return 0;
strncat:
Añade los primeros caracteres numéricos de origen a destino , más un carácter nulo de
terminación.
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
char str1[20];
char str2[20];
puts (str1);
return 0;
strchr:
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
char * pch;
pch=strchr(str,'s');
while (pch!=NULL)
pch=strchr(pch+1,'s');
return 0;
strrchr:
#include <stdio.h>
#include <string.h>
int main ()
char * pch;
pch=strrchr(str,'s');
return 0;
strcmp:
Compara la cadena C str1 con la cadena C str2 . Esta función comienza comparando el
primer carácter de cada cuerda. Si son iguales entre sí, continúa con los siguientes pares
hasta que los caracteres difieran o hasta que se llegue a un carácter nulo de terminación.
Esta función realiza una comparación binaria de los caracteres. Para una función que tenga
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
char buffer[80];
do {
fflush (stdout);
scanf ("%79s",buffer);
return 0;
strncmp:
Esta función comienza comparando el primer carácter de cada cuerda. Si son iguales entre
sí, continúa con los siguientes pares hasta que los caracteres difieran, hasta que se llegue a
un carácter nulo de terminación, o hasta que los caracteres numéricos coincidan en ambas
Ejemplo:
#include <stdio.h>
#include <string.h>
int main ()
int n;
if (strncmp (str[n],"R2xx",2) == 0)
return 0;
strcoll:
seleccionada.
Esta función comienza comparando el primer carácter de cada cuerda. Si son iguales entre
sí, continúa con el siguiente par hasta que los caracteres difieran o hasta que se alcance un
Strcpy: Copia la cadena C apuntada por fuente en la matriz apuntada por destino, incluido
Para evitar desbordamientos, el tamaño de la matriz señalada por el destino debe ser lo
suficientemente largo como para contener la misma cadena C que la fuente (incluido el
Ejemplo:
/* strcpy example */
#include <stdio.h>
#include <string.h>
int main ()
char str2[40];
char str3[40];
strcpy (str2,str1);
return 0;
final de la cadena C de origen (que se señala mediante un carácter nulo) antes de que se hayan
copiado los caracteres numéricos, el destino se rellena con ceros hasta que se le escriban un
total de núm caracteres. No se agrega implícitamente un carácter nulo al final del destino si
la fuente es más larga que num. Por lo tanto, en este caso, el destino no se considerará una
superpondrán.
Ejemplo:
/* strncpy example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str1[]= "To be or not to be";
char str2[40];
char str3[40];
puts (str1);
puts (str2);
puts (str3);
return 0;
strerror: Interpreta el valor de errnum, generando una cadena con un mensaje que describe
la condición de error como si estuviera configurada en errno por una función de la biblioteca.
El puntero devuelto apunta a una cadena asignada estáticamente, que no debe ser modificada
por el programa. Las llamadas posteriores a esta función pueden sobrescribir su contenido
Las cadenas de error producidas por strerror pueden ser específicas para cada sistema y la
implementación de la biblioteca.
Ejemplo:
#include <stdio.h>
#include <string.h>
#include <errno.h>
int main ()
FILE * pFile;
if (pFile == NULL)
return 0;
determinada por el carácter nulo de terminación: Una cadena C es tan larga como el número
Ejemplo:
/* strlen example */
#include <stdio.h>
#include <string.h>
int main ()
char szInput[256];
return 0;
strspn: Devuelve la longitud de la porción inicial de str1 que consta solo de caracteres que
son parte de str2. La búsqueda no incluye los caracteres nulos de terminación de ninguna de
Ejemplo:
/* strspn example */
#include <stdio.h>
#include <string.h>
int main ()
int i;
i = strspn (strtext,cset);
return 0;
Strcspn: Escanea str1 para la primera aparición de cualquiera de los caracteres que son parte
de str2, devolviendo la cantidad de caracteres de str1 leídos antes de esta primera aparición.
La búsqueda incluye los caracteres nulos de terminación. Por lo tanto, la función devolverá
Ejemplo:
/* strcspn example */
#include <stdio.h>
#include <string.h>
int main ()
int i;
i = strcspn (str,keys);
return 0;
que son parte de str2, o un puntero nulo si no hay coincidencias. La búsqueda no incluye los
caracteres nulos de terminación de ninguna de las cadenas, sino que termina allí.
Ejemplo:
/* strpbrk example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "This is a sample string";
char * pch;
printf ("\n");
return 0;
Strstr: Devuelve un puntero a la primera aparición de str2 en str1, o un puntero nulo si str2
no es parte de str1.
allí.
/* strstr example */
#include <stdio.h>
#include <string.h>
int main ()
char * pch;
pch = strstr (str,"simple");
strncpy (pch,"sample",6);
puts (str);
return 0;
Strtok: Una secuencia de llamadas a esta función divide str en tokens, que son secuencias
de caracteres contiguos separados por cualquiera de los caracteres que forman parte de los
delimitadores.
En una primera llamada, la función espera una cadena C como argumento para str, cuyo
primer carácter se usa como la ubicación inicial para escanear tokens. En llamadas
posteriores, la función espera un puntero nulo y utiliza la posición justo después del final del
ubicación inicial para el primer carácter que no está contenido en los delimitadores (que se
convierte en el comienzo del token). Y luego escanea comenzando desde este principio del
token para el primer carácter contenido en delimitadores, que se convierte en el final del
Este final del token se reemplaza automáticamente por un carácter nulo, y la función devuelve
el token.
Una vez que se encuentra el carácter nulo de terminación de str en una llamada a strtok, todas
las llamadas posteriores a esta función (con un puntero nulo como primer argumento)
Ejemplo:
/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
char * pch;
printf ("%s\n",pch);
return 0;
solo la longitud, al especificar un puntero nulo para el destino y cero para num.
Ejemplo:
#include <stdio.h>
#include <string.h>
int main () {
char dest[20];
char src[20];
int len;
return(0);
carácter nulo.
Ejemplo:
#include <string.h>
#include <stdio.h>
intmain(void)
strrev(forward);
#include <string.h>
#include <stdio.h>
printf("Ingrese el nombre:");
scanf("%s",x);}
printf("%s\n",x);}
int i;
return(i);}
int i;
strcpy(y,"Hola");
int i;
if (i==0)
printf("\ncadenas iguales");
else
printf("\ncadenas distintas");}
int main()
char Nombre[20];
char Cad1[10],Cad2[30];
ingresar_cadena(Nombre);
imprimir(Nombre);
dimension(Nombre);
comparacion(Nombre,Cad1,Cad2);
return 0;
Puntero
Tipo_dato*nom_puntero;
P=&n;
Printf(“%d”,n);
Printf(“%d”,*p);
Imprimir direcciones:
Printf(“%p”,&n) AB006
Printf(“%p”,&p); AB000
Pritnf(“%p”,p); AB006
q=&p; AB00
**q=8; guarda en n
T=&q;
***t=0; garda en n
#include <stdio.h>
int main()
int n,*p,**q,***t;
n=5;
p=&n;
printf("%d\n",n);
printf("%d\n",*p);
printf("%p\n",&n);
printf("%p\n",&p);
printf("%p\n",p);
q=&p;
**q=8;
printf("%d\n",*p);
t=&q;
***t=0;
printf("%d\n",*p);
return 0;
#include <stdio.h>
int main()
int a,b,c,*p,*q,*r;
p=&b;
q=&a;
scanf("%d",&*q);
scanf("%d",&*p);
c=*p+*q;
r=&c;
printf("La suma de los nos numeros %d y %d es:%d\n",*q,*p,*r);
return 0;
RAM
A3
Fa001
B5
Fa003
P Fa003
Fa005
Q Fa001
Fa007
C8
FA011
R Fa011
Fa013
Valor
return(a+b)}
Double aux;
Aux=*b
*b=*a;
*a=aux;
Main (){
Int x,y,z;
x=5;
y=3;
z=sumar(&x,&y);
imprimir (z);
intercambio (x,y);
imprimir (x);
imprimir(y);
#include <stdio.h>
printf("Ingrese el valor:");
scanf("%lf",&**a);}
return(a+b);
printf("%lf",a);}
double aux;
aux=*b;
*b=*a;
*a=aux;
double *x,*y,c,d;
x=&d;
y=&c;
ingreso (&x);
ingreso (&y);
imprimir (*x);
imprimir (*y);
intercambio (x,y);
imprimir (*x);
imprimir (*y);
return(0);
#include <stdio.h>
printf("Ingrese el valor:");
scanf("%lf",&**a);}
*c=a+b;
printf("%lf",a);}
double aux;
aux=*b;
*b=*a;
*a=aux;
}
double *x,*y,c,d,z;
x=&d;
y=&c;
ingreso (&x);
ingreso (&y);
imprimir (*x);
imprimir (*y);
sumar(*x,*y,&z);
intercambio (x,y);
imprimir (*x);
imprimir (*y);
return(0);
Estructura de datos
Struct Estudiantes {
Int edad;
Double nota;
Char nombre[20];
};
Int main(){
Estudiante e1,*p;
Scanf(“ld”,%e1.CI);
Scanf(“%d”%e1.edad);
Scanf(“%lf”%e1.nota);
Gets(e1.nombre);
P=&e1;
p->edad=20;
printf(“%lf”,p->nota);
CI CI CI CI
0 1 2 3
P=&A[0];
p->nota=2;
Estructuras anidadas
#include <stdio.h>
#define dim 3
struct Estudiante{
int edad;
};
struct Materia{
char codigo[5];
char nombre[15];
int creditos;
double notas[4];
};
struct Matricula{
char codigo[5];
Estudiante datos_est;
Materia datos_mat;
};
printf("Ingrese su cedula:");
scanf("%ld",&e->datos_est.CI);
fflush(stdin);
printf("\nIngrese su edad:");
scanf("%d",&e->datos_est.edad);
printf("\nIngrese su nombre:");
fflush(stdin);
scanf("%s",e->datos_est.nombre);
scanf("%s",e->datos_mat.codigo);
scanf("%s",e->datos_mat.nombre);
scanf("%s",e->datos_mat.creditos);
scanf("%lf",&e->datos_mat.notas[i]);}
printf("\nCedula:%ld",e.datos_est.CI);
printf("\nNombre:%s",e.datos_est.nombre);
printf("\nedad:%d",e.datos_est.edad);
printf("\ncodigo materia:%s",e.datos_mat.codigo);
printf("\nnombre materia:%s",e.datos_mat.nombre);
printf("\ncreditos:%d",e.datos_mat.creditos);
printf("\nnota%d:",i+1);
printf("%lf",e.datos_mat.notas[i]);}
printf("\n Promedio:%lf",e.datos_mat.notas[3]);}
double n;
n=((notas[0]+notas[1]+notas[2])/3);
return(n);}
int main()
Matricula e1;
ingreso(&e1);
e1.datos_mat.notas[3]=promedio(e1.datos_mat.notas);
imprimir(e1);
return 0;
#include <stdio.h>
#define dim 3
struct Estudiante{
char nombre[20];
int edad;
};
struct Materia{
char codigo[5];
char nombre[15];
int creditos;
double notas[4];
};
struct Matricula{
char codigo[5];
Estudiante datos_est;
Materia datos_mat;
};
printf("\nIngrese su cedula:");
scanf("%ld",&e->datos_est.CI);
fflush(stdin);
printf("\nIngrese su edad:");
scanf("%d",&e->datos_est.edad);
printf("\nIngrese su nombre:");
fflush(stdin);
scanf("%s",e->datos_est.nombre);
scanf("%s",e->datos_mat.codigo);
scanf("%s",e->datos_mat.nombre);
printf("\nIngrese el numero de creditos:");
scanf("%d",&e->datos_mat.creditos);
scanf("%lf",&e->datos_mat.notas[i]);}
printf("\nCedula:%ld",e.datos_est.CI);
printf("\nNombre:%s",e.datos_est.nombre);
printf("\nedad:%d",e.datos_est.edad);
printf("\ncodigo materia:%s",e.datos_mat.codigo);
printf("\nnombre materia:%s",e.datos_mat.nombre);
printf("\ncreditos:%d",e.datos_mat.creditos);
printf("\nnota%d:",i+1);
printf("%lf",e.datos_mat.notas[i]);}
printf("\n Promedio:%lf",e.datos_mat.notas[3]);}
double promedio(double notas[]){
double n;
n=((notas[0]+notas[1]+notas[2])/3);
return(n);}
/*
double c=0;
c+=datos_mat.notas[3];
return(c);*/
int main()
double c;
Matricula e1[3];
// ingreso (e1);
e1[i].datos_mat.notas[3]=promedio(e1[i].datos_mat.notas);
imprimir(e1[i]);
c+=e1[i].datos_mat.notas[3];
return 0;
Objetivo:
Crear un programa usando archivos o ficheros logrando así mantener en un archivo externo
los datos ingresados.
Poner en práctica lo aprendido respecto al manejo, escritura y lectura de archivos.
Marco teórico:
Archivos:
El estándar de C contiene varias funciones para la edición de ficheros, éstas están definidas
en la librería <stdio.h> e inician con la letra f, haciendo referencia a file(archivo).
Adicionalmente se agrega un tipo FILE, el cual se usará como apuntador a la información
del fichero. La secuencia que usaremos para realizar operaciones será la siguiente:
Parametros:
“r” abre un archivo para lectura (capturar información)
“w” abre un archivo para realizar escritura.
“r+” abre un archivo para realizar lectura y escritura a la vez.
“w+” se crea un archivo para realizar lectura y escritura.
“rb” abre un archivo de forma binaria para hacer lectura.
“rb+” abre un archivo de forma binaria para realizar acciones de lectura y escritura.
fclose:
Esta función sirve para cerrar un archivo o fichero que se haya abierto y devuelve a la
variable FILE* que se ha creado, el valor cero indicando que ese archivo se cerró
correctamente.
Es necesario que se lo haga para que el contenido de archivo no resulte defectuoso, si
resulta un error dentro de fclose, como esta función es de tipo entera, devuelve un 1 si
acabó en un error.
Funciones de escritura:
- fputc(); Es homólogo a fgetc(), escribe un carácter en el archivo, este devuelve el carácter
escrito
- fputs(); Escribe una cadena a un fichero, para escribirlo necesita de la ayuda de una
variable auxiliar tipo char[] que contenga el valor de cadena deseada.
- fscanf(); Funciona como un fprintf pero en vez de imprimir un contenido de una variable,
escribe con la ayuda de una variable auxiliar el contenido en el fichero a la vez que lo
amuestra por pantalla.
Funciones de lectura:
fgetc(); Recorre el archivo leyendo los caracteres que lo contiene, a cada que se llama a la
función, este devuelve dicho caracter y recorre al siguiente. Si devuelve el caracter EOF
significa que se ha recorrido a lo último del archivo
fgets(); Al igual que fgetc pero lee cadenas de caracteres, dejará de leer cuando se
encuentre un “\n” o un EOF
fscanf(); Funciona como un scanf, pero en vez de leer en el teclado, lo lee en un archivo.
(no lee espacios)