Está en la página 1de 34

Instituto Politécnico Nacional

Escuela Superior De Ingeniería


Mecánica Y Eléctrica

Unidad Culhuacán

Unidad De Aprendizaje:

Fundamentos De Programación

Profesor:
Trabajo: Balderrama López Javier

Evidencias 3° Parcial

García Peña Erick Fernando

1MM3
Ejercicios de Funciones en
C

1. Escribir una función que tenga una argumento de tipo entero y que devuelva la letra P si
el número es positivo, y la letra N si es negativo o cero.
#include <stdio.h>

int funcion(int a);

main(){

int x;

char resultado;

scanf("%i",&x);

resultado=funcion(x);

//resultado= b;

printf("%c",resultado);

return 0;

int funcion(int a){

char b;

if(a>0){

b = 'P';

else{

b = 'N';

return b;

2. Escribir una función lógica de dos argumentos enteros, que devuelva true si uno divide
al otro o false en caso contrario.
#include <stdio.h>

#include <stdlib.h>

int numero1=0;

int numero2=0;
double resultado=0.0;

double division(int a,int b);

int main() {

printf("Introduce un numero entero: ");

scanf("%d", &numero1);

printf("Introduce otro numero entero: ");

scanf("%d", &numero2);

resultado = division(numero1,numero2);

if (resultado!=-1) {

printf("\nla division de %d entre %d es %lf", numero1,numero2,resultado);}

double division(int a,int b) {

if(b != 0) {return (double)a/b;}

else {

printf("Error. No se puede dividir entre cero. ");

return -1;

return 0;

}
3. Escribir una función que convierta una temperatura dada en grados Celsius a
grados Fahrenheit. La fórmula de conversión es:

4. Escribir una función lógica digito que determine si un carácter es uno de los dígitos de 0
a 9.

#include <stdio.h>
#include <stdlib.h>
void digito();
void digito(){
int n;
printf("Ingresa un numero cualquiera\n");
scanf("%d",&n);
if(n>=0&& n<=9){
printf("El numero %d esta dentro del rango 0-9",n);
}
else
printf("El numero %d esta fuera del rango 0-9",n);
}
int main()
{
printf("programa que quetecta numeros dentro del rango 0-9\n");
digito();
return 0;
}
5. Escribir una función lógica Vocal que determine si un carácter es una vocal.
#include <conio.h>
#include <stdio.h>
int main()
{
char letra;
printf( "\n \t Introduzca un caracter: " );
scanf( "%c", &letra );

if ( letra == 'a' || letra == 'A' || letra == 'e' || letra == 'E'|| letra == 'i' || letra == 'I' ||
letra == 'o' || letra == 'O' || letra == 'u' || letra == 'U' )
printf( "\n Es una vocal" );
else
printf( "\n No es una vocal" );
getch();
return 0;
}

6. Escribir una función que se llame redondeo que acepte un valor real “Cantidad” y un
valor entero “Decimales” y devuelva el valor “Cantidad” redondeado al número
especificado de Decimales.
#include <iostream>
#include<math.h>
using namespace std;

int main(){

float flotante;
double redondeo;

cout<<("digite una cantidad:"); cin>>redondeo;


cout<<round(redondeo);

return 0;
}

2) #include <iostream>
#include<iomanip>
#include<conio.h>
#include<ios>
using namespace std;
float redondeo(float cantidad, int decimal){
std::cout<<std::setprecision(decimal)<<std::fixed;
return cantidad;
}
int main (){
int b, s;
float a;
do{
cout<<"ingrese un numero real:";cin>>a;
cout<<"¿a cuantos decimales desea redondear?";
cin>>b;
cout<<"resultado:"<<redondeo(a,b)<<endl;
cout<<"¿desea ingresar otro numero? si=1, NO=2"<<endl;
cin>>s;
}while (s==1);
}

7. Determinar y visualizar el número más grande de dos números dados mediante


una función.
#include <stdio.h>

#define tamano 20

double media (double*, int);

double maximo (double*, int);

double minimo (double*, int);

double semisuma (double, double);

void main(void)

double vector[tamano];

int numeroValores, i;

printf("Introduzca el número de valores a calcular:\n");

printf("(el número debera ser menor de 20): ");

scanf("%d", &numeroValores);

printf("\n");

printf("Introduce los %d valores numéricos:\n", numeroValores);

for (i = 0; i < numeroValores; i++)

printf("Valor %d: ", i + 1);

scanf("%lf", &vector[i]);

printf("\n");

printf("media= %5.2lf \n", media (vector, numeroValores));

printf("maximo= %5.0lf \n", maximo (vector, numeroValores));

printf("minimo= %5.0lf \n", minimo (vector, numeroValores));

printf("semisuma= %5.2lf \n", semisuma (maximo(vector, numeroValores), minimo(vector,


numeroValores)));

double media (double* valores, int num)

double suma=0.0, med;


int i;

for (i = 0; i < num; i++)

suma += valores[i];

med = suma / num;

return (med);

double minimo (double* valores, int num)

int i;

double min;

min = valores[0];

for (i = 1; i < num; i++)

if (valores[i] < min)

min = valores[i];

return (min);

double maximo (double* valores, int num)

int i;

double max;

max = valores[0];

for (i = 1; i < num; i++)

if (valores[i] > max)

max = valores[i];

return (max);

}
double semisuma (double max, double min)

return ((max + min) / 2.0);

8. Escribir una función que reciba una cadena de caracteres y la devuelva en forma inversa.
#include <stdio.h>
#include <stdlib.h>
char *invertir(char *p);
int main(void)
{
char cadena[] = "jennifer";

printf("Invertida: \"%s\"\n", invertir(cadena));

return EXIT_SUCCESS;
}
char *invertir(char *p)
{
char *rv;
char *q;
char temp;

rv = p;
for (q = p; *q != '\0'; q++)
;

if (q - p > 1)
for (q--; p < q; p++, q--){
temp = *p;
*p = *q;
*q = temp;
}
return rv;
}
9. Escribir una función que determine si una cadena de caracteres es un palíndromo (se
lee igual en sentido inverso la palabra, ejemplo “radar”).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char palindromo(char cadena[100]);
main(){
char palabra[100];
int resultado;
printf("Ingrese una palabra:\n");
scanf("%s",&palabra);
resultado=palindromo(palabra);
return 0;
}
char palindromo(char cadena[100]){
char copia[100];
char p;
for(int i=(strlen(cadena)-1);i>=0;i--){
copia[strlen(cadena)-1-i]=cadena[i];
}
copia[strlen(cadena)]='\0';
if(strcmp(cadena,copia)==0){
printf("Es palindroma");
}
else{
printf("La palabra no es palindroma");
}
}

10. Escribir un programa que mediante una función convierta coordenadas polares
a rectangulares de un vector de dos dimensiones.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define PI 3.14159265
int coord (int x, int y);
main(){
int q, r;
double resultado;
printf("Introduzca el valor polar\n");
scanf("%i",& q);
printf("Introduzca los grados\n");
scanf("%i",& r);
resultado=coord( q , r);
printf("", resultado);
return 0;
}
int coord (int x, int y){
double a;
double b;
a = cos(y*PI/180) * x;
b = sin(y*PI/180) * x;
printf("%g , %g", a, b);
}
Ejercicios de arreglos en C

1. Escribir un programa en c que pida al usuario las calificaciones de alumnos y calcule el


promedio global así como presente en pantalla la calificación más alta y la más baja.
#include <stdio.h>
int main()
{
float calificaciones[100];
float n1=0;
float promedio = 0;
int mayor=0;
printf("¿Cuantos alumnos tiene?\n");
scanf("%f",&n1);
printf("Ingresé sus calificaciones");
for(int i = 0; i < n1; i++){
printf("\nDame la calificacion %d: ", i+1);
scanf("%f", &calificaciones[i]);
promedio +=calificaciones[i];
if(calificaciones[i] >mayor){
mayor=calificaciones [i];
printf("\n");
}
}
printf("El promedio de las calificaciones es: %.2f\n\n",promedio/n1);
printf("La calificación mayor es: %d",mayor);
return 0;
}
Ejemplo 2
11-( 1arreglos)
#include<cstdlib>
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
int n,i,j;
float promedio,suma=0,mayor=0,menor=100,aux;
cout<<"*CALIFICACIONES DEL GRUPO*"<<endl;
cout<<"Numero de alumnos: "<<endl;
cin>>n;
float* tabla;

tabla=new float [n];


for(i=0;i<n;i++)
{
cout<<"Calificaciones del alumno: "<<i+1<<endl;
cin>>tabla[i];
suma+=tabla[i];
if(tabla[i]>mayor)
{
mayor=tabla[i];
}
if(tabla[i]<menor)
{
menor=tabla[i];
}
}
promedio=suma/n;
cout<<"Promedio del grupo :"<<promedio<<endl;
cout<<"Calificacion mayor: "<<mayor<<endl;
cout<<"Calificacion menor: "<<menor<<endl;
system("PAUSE");
return 0;
}
2. Supóngase las siguientes declaraciones : int i,j,k;
int Primero[21], Segundo[21]; int
Tercero[6][12];

Determine la salida de cada segmento de programa (en los casos que se necesite, se indica
debajo el archivo de entrada correspondiente).

a) for (i=1;i<=6; i++) scanf(“%d”,&Primero[i]); for (i=3;i>0; i--) printf(“%4d”, Primero[2*i]);


……….
3 7 4 -1 0 6

b) scanf(“%d”,&k) for
(i=1;i<=6) scanf(“d”,Segundo[i+
+]); j=4; printf(“%d %d\
n”,Segundo[k],Segundo[j+1]);
…….
6 3 0 1 9

c) for (i=0;i<10; i++)


Primero[i]=i+3; scanf(“%d
%d”,&j,&k); for (i=j;i<=k;)
printf(“%d\n”, Primero[i++]);
………
7 2 3 9
d) for (i=0;i<12; i++)
scanf(“%d”,&Primero[i]); for
(j=0;j<6; j++)
Segundo[j]=Primero[2*j]+j; for (k=3;k<=7; k++)
printf(“%d %d\n”, Primero[k+1], Segundo[k-1]); ….
….
2 7 3 4 9 -4
6 -5 0 5 -8 1
3. Escribir un programa en c que pida al usuario una lista de 30 temperaturas medidas en el
mismo lugar a la misma hora en el día y que calcule la mediana y la moda de esos datos,
presente el valor más alto y el más bajo de temperatura.
#include <iostream>
using namespace std;
int main()
{
int i,j,k;
int Primero[21], Segundo[21];
int Tercero[6][12];
scanf("%d",&k);
for (i=1;i<=6; i++)
scanf("d",Segundo[i++]);
j=4;
printf("%d %d\n",Segundo[k],Segundo[j+1]);
return 0;
}

4. Escribir un programa que acepte dos vectores ya sea de coordenadas polares o


rectangulares y que realice la suma y resta de los mismos.

#include<stdio.h>

#include<string.h>

#include<conio.h>

main(){

int
vector_a[20],vector_b[20],vector_suma[20],vector_resta[20],vector_coordenada_polar_a[20],
vector_coordenada_polar_b[20];

int opcion,i,n,cp;
printf("numero de elementos del vector: ");

scanf("%d",&n);

printf("\n\ndigite la coordenada polar: ");

scanf("%d",&cp);

printf("\n\nelementos del vector A \n\n");

for(i=0;i<n;i++) {

printf("vector A [ %d ]= ",i);

scanf("%d",&vector_a[i]);

printf("\n\nelementos del vector B \n\n");

for(i=0;i<n;i++) {

printf("vector B [ %d ]= ",i);

scanf("%d",&vector_b[i]);

printf("\n\nQue operacion realizara?...\n\n\t 1. A+B\n\t 2. A-B\n\t 3. coordenada polar x


a\n\t 4. coordenada polar x b\n\t 5. Salir \n\n\t opcion ");

scanf("%d",&opcion);

if(opcion==1){

for(i=0;i<n;i++){

vector_suma[i]=vector_a[i]+vector_b[i];

printf("\nvector A+B = %d",vector_suma[i]);

else if(opcion==2){

for(i=0;i<n;i++){
vector_resta[i]=vector_a[i]-vector_b[i];

printf("\nvector A-B = [ %d ]",vector_resta[i]);

else if(opcion==3){

for(i=0;i<n;i++){

vector_coordenada_polar_a[i]=cp*vector_a[i];

printf("\nvector coordenada polar*a[ %d ] =


%d",i,vector_coordenada_polar_a[i]);

else if(opcion==4){

for(i=0;i<n;i++){

vector_coordenada_polar_b[i]=cp*vector_b[i];

printf("\nvector coordenada polar*b [ %d ] =


%d",i,vector_coordenada_polar_b[i]);

else if(opcion==5){

return 0;

}getch();

}
Ejercicios de Programación arreglos

1.- Escribir un programa de facturación de clientes, los clientes tienen un nombre, el número de unidades
solicitadas, el precio de cada unidad y el estado en que se encuentra: moroso, atrasado, pagado. El
programa debe generar a los diversos clientes.
#include <stdio.h>
#include <stdlib.h>
main(){
int n;
char nombre[100][100];
int unidades[100][100];
float precio[100][100];
float pago[100][100];
float pre,pag;
char estado[100][100];
printf("Introduzca el numero de clientes a facturar\n");
scanf("%i",&n);
for(int i=0;i<n;i++){
for(int j=0;j<1;j++){
printf("Ingrese el nombre del cliente %i:\t",i+1);
scanf("%s",&nombre[i]);
}
}
for(int x=0;x<n;x++){
for(int y=0;y<1;y++){
printf("Ingrese el numero de unidades solicitadas por el cliente %i:\t",x+1);
scanf("%i",&unidades[x][y]);

for(int p=0;p<n;p++){
for(int r=0;r<1;r++){
printf("Ingrese el precio de las unidades del cliente %i:\t",p+1);
scanf("%f",&precio[p][r]);
printf("Ingrese el pago de la factura %i:\t",p+1);
scanf("%f",&pago[p][r]);
pre=precio[p][r];
pag=pago[p][r];
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(pag<pre)
{
printf("\t %s \t\tCliente moroso\n",nombre[i]);
}
else
{
printf("\t %s \t\tCliente pagado con factura mayor.\n",nombre[i]);
}
}
}

return 0;
}

2.- Del programa anterior modificarlo de tal suerte que se puedan obtener los siguientes listados.
-clientes en estado moroso
-clientes en estado pagado con factura mayor a una determinada cantidad.
#include <stdio.h>
#include <stdlib.h>

main(){

int n;
char nombre[100][100];
int unidades[100][100];
float precio[100][100];
float pago[100][100];
float pre,pag;
char estado[100][100];
printf("Introduzca el numero de clientes a facturar\n");
scanf("%i",&n);
for(int i=0;i<n;i++){
for(int j=0;j<1;j++){
printf("Ingrese el nombre del cliente %i:\t",i+1);
scanf("%s",&nombre[i]);
}
}
for(int x=0;x<n;x++){
for(int y=0;y<1;y++){
printf("Ingrese el numero de unidades solicitadas por el cliente %i:\t",x+1);
scanf("%i",&unidades[x][y]);

for(int p=0;p<n;p++){
for(int r=0;r<1;r++){
printf("Ingrese el precio de las unidades del cliente %i:\t",p+1);
scanf("%f",&precio[p][r]);
printf("Ingrese el pago de la factura %i:\t",p+1);
scanf("%f",&pago[p][r]);
pre=precio[p][r];
pag=pago[p][r];
}
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(pag<pre)
{
printf("\t %s \t\tCliente moroso\n",nombre[i]);
}
else
{
printf("\t %s \t\tCliente pagado con factura mayor.\n",nombre[i]);
}
}
}

return 0;
}

3.-Se requiere informatizar los resultados obtenidos por los equipos de baloncesto y de futbol de la localidad
de la ESIME Culhuacán . La información de cada equipo es:

-nombre del equipo


-número de victorias
-número de derrotas

Para los equipos de baloncesto añadir la información[on siguiente:


-número de pérdidas de balón
-número de rebotes recuperados
-nombre del mejor anotador de triples
-número de triples del mejor anotador

Para los equipos de futbol añadir la información siguiente:


-número de empates
-número de goles a favor -nombre del goleador del equipo
-número de goles del goleador

Escribir un programa para introducir la información para todos los integrantes de ambas ligas.

#include<stdio.h>
#include<conio.h>
#include<math.h>

int c, d, anotaciones, juegos, ganados, empates, perdidos, puntos;


char nombre[50], equipo[50];

main(){
printf("Cual deporte le gustaria guardar las estadisticas\n 1)Basquetbol\n 2)Futbol\n");
scanf("%d",&d);
if (d==1){
getch();
printf("Cual es el nombre del equipo\n");
scanf("%s", equipo);
printf("Cuantos partidos jugo?\n");
scanf("%d",&juegos);
printf("Cuantos partidos gano?\n");
scanf("%d",&ganados);
printf("Cuantos partidos empato?\n");
scanf("%d",&empates);
c = ganados*3;
puntos = c+empates;
perdidos = juegos-ganados-empates;
printf("Cual fue el mejor jugador?\n");
scanf("%s", nombre);
printf("Con cuantas anotaciones lo obtuvo?\n");
scanf("%d",&anotaciones);
printf("El equipo %s", equipo);
printf("jugo %d partidos\n",juegos);
printf("Obtuviendo la victoria de %d partidos\n",ganados);
printf("Empatando %d partidos\n",empates);
printf("Y perdiendo %d partidos\n",perdidos);
printf("Obtuvo %d puntos\n",puntos);
printf("El mayor anotador es %s\n", nombre);
printf("con %d canastas",anotaciones);

}
if(d==2){
getch();
printf("Cual es el nombre del equipo\n");
scanf("%s", equipo);
printf("Cuantos partidos jugo?\n");
scanf("%d",&juegos);
printf("Cuantos partidos gano?\n");
scanf("%d",&ganados);
printf("Cuantos partidos empato?\n");
scanf("%d",&empates);
c = ganados*3;
puntos = c+empates;
perdidos = juegos-ganados-empates;
printf("Cual fue el goleador del equipo?\n");
scanf("%s", nombre);
printf("Cuantos goles obtuvo?\n");
scanf("%d",&anotaciones);
printf("El equipo %s ", equipo);
printf("jugo %d partidos\n",juegos);
printf("Obtuviendo la victoria de %d partidos\n",ganados);
printf("Empatando %d partidos\n",empates);
printf("Y perdiendo %d partidos\n",perdidos);
printf("Obtuvo %d puntos\n",puntos);
printf("El goleador del equipo es %s\n", nombre);
printf("Con %d goles\n",anotaciones);

}
}

4.-Modificar el problema 3 (anterior) para obtener los siguientes informes o datos:


-listado de los mejores anotadores de triples de cada equipo.
-Máximo goleador de la liga de futbol
-Suponiendo que el partido ganado significa tres puntos y el empate 1 punto: equipo ganador de la liga de
futbol
-Equipo ganador de la liga de baloncesto
#include<stdio.h>
#include<conio.h>
#include<math.h>
int c, d, anotaciones, juegos, ganados, empates, perdidos, puntos;
char nombre[50], equipo[50], punto[50];
main(){
printf("\tListado de los mejores anotadores de triples de cada equipo\n\n 1)Basquetbol\n 2)Futbol\n");
scanf("%d",&d);
if (d==1){
printf("\t-Baloncesto -Futbol\n\n");
printf("\t-Fernando 9 -Leonardo 6\n");
printf("\t-Andres 7 -Alfredo 5\n");
printf("\t-Kevin 6 -Michel 2\n");
printf("\t-Ricardo 4 -Alejandro 1\n\n");
getch();
printf("\n Maximo goleador:\n");
scanf("%s", nombre);
printf("\n Ganador de la liga de baloncesto:\n");
scanf("%s",&equipo);
printf("\n Ganador de la liga de futbol:\n");
scanf("%s", punto);
printf("\n\tEl maximo goleador fue %s", nombre);
printf("\n\n\tEl ganador de la liga de baloncesto %s",equipo);
printf("\n\n\tEl ganador de la liga de futbol es %s", punto);
}
if(d==2){
getch();
printf("\t-Baloncesto -Futbol\n\n");
printf("\t-Karen 9 -Arely 6\n");
printf("\t-Wendy 7 -Magdalena 5\n");
printf("\t-Magaly 6 -Mishel 2\n");
printf("\t-Marcela 4 -Alejandra 1\n\n");
getch();
printf("\n Maxim@ goleador(a):\n");
scanf("%s", nombre);
printf("\n Ganador(a) de la liga de baloncesto:\n");
scanf("%s",&equipo);
printf("\n Ganador de la liga de futbol:\n");
scanf("%s", punto);
printf("\n\tEl maxim@ goleador(a) fue %s", nombre);
printf("\n\n\tEl ganad@r de la liga de baloncesto %s",equipo);
printf("\n\n\tEl ganad@r de la liga de futbol es %s", punto);
}
}

5.- Un punto en el plano se puede representar mediante una estructura con dos campos. Escribir un
programa que realice las siguientes operaciones con puntos en el plano:
- Dado dos puntos calcular la distancia entre ellos
-Dado dos puntos determinar la ecuación de la recta que pasa por ellos
-Dado tres puntos que representan los vértices de un triángulo calcular su área.
#include<iostream>
#include<math.h>
#include<conio.h>
using namespace std;
int main(){
float x1,x2,y1,y2,m,d,a,b,h;
cout<<"DISTANCIA Y PUNTO MEDIO DE DOS PUNTOS";
cout<<"introduzca x1:";
cin>> x1;
cout<<"introduzca y1:";
cin>> y1;
cout<<"introduzca x2:";
cin>> x2;
cout<<"introduzca y2:";
cin>> y2;
cout<<"AREA DE UN TRIANGULO";
cout<<"introduzca la base del triangulo:";
cin>> b;
cout<<"introduzca la altura del triangulo:";
cin>> h;
cout<<endl;

d=abs(sqrt(pow(x2-x1,2)+pow(y2-y1,2)));
m=(y2-y1)/(x2-x1);
a=(b*h)/2;

cout<<"La distancia de la recta es:"<< d;


cout<<"el punto medio de la recta es:"<< m;
cout<<"el area del triangulo es:"<< a;

return 0;

}
Análisis del problema y elaboración de algoritmos de programación
estructurada.

Codificación e implementación de un programa computacional.


Durante esta etapa se realizan las tareas que comúnmente se conocen como
programación; que consiste, esencialmente, en llevar a código fuente, en el
lenguaje de programación elegido, todo lo diseñado en la fase anterior. Esta tarea
la realiza el programador, siguiendo por completo los lineamientos impuestos en el
diseño y en consideración siempre a los requisitos funcionales y no funcionales
(ERS) especificados en la primera etapa.

Es común pensar que la etapa de programación o codificación (algunos la llaman


implementación) es la que insume la mayor parte del trabajo de desarrollo del
software; sin embargo, esto puede ser relativo (y generalmente aplicable a
sistemas de pequeño porte) ya que las etapas previas son cruciales, críticas y
pueden llevar bastante más tiempo. Se suele hacer estimaciones de un 30% del
tiempo total insumido en la programación, pero esta cifra no es consistente ya que
depende en gran medida de las características del sistema, su criticidad y el
lenguaje de programación elegido.7 En tanto menor es el nivel del lenguaje mayor
será el tiempo de programación requerido, así por ejemplo se tardaría más tiempo
en codificar un algoritmo en lenguaje ensamblador que el mismo programado en
lenguaje C.

Mientras se programa la aplicación, sistema, o software en general, se realizan


también tareas de depuración, esto es la labor de ir liberando al código de los
errores factibles de ser hallados en esta fase (de semántica, sintáctica y lógica).
Hay una suerte de solapamiento con la fase siguiente, ya que para depurar la
lógica es necesario realizar pruebas unitarias, normalmente con datos de prueba;
claro es que no todos los errores serán encontrados sólo en la etapa de
programación, habrá otros que se encontrarán durante las etapas subsiguientes.
La aparición de algún error funcional (mala respuesta a los requisitos)
eventualmente puede llevar a retornar a la fase de diseño antes de continuar la
codificación.

Durante la fase de programación, el código puede adoptar varios estados,


dependiendo de la forma de trabajo y del lenguaje elegido, a saber:
Código fuente: es el escrito directamente por los programadores en editores de
texto, lo cual genera el programa. Contiene el conjunto de instrucciones
codificadas en algún lenguaje de alto nivel. Puede estar distribuido en paquetes,
procedimientos, bibliotecas fuente, etc.
Código objeto: es el código binario o intermedio resultante de procesar con un
compilador el código fuente. Consiste en una traducción completa y de una sola
vez de este último. El código objeto no es inteligible por el ser humano
(normalmente es formato binario) pero tampoco es directamente ejecutable por la
computadora. Se trata de una representación intermedia entre el código fuente y el
código ejecutable, a los fines de un enlace final con las rutinas de biblioteca y
entre procedimientos o bien para su uso con un pequeño intérprete intermedio [a
modo de distintos ejemplos véase EUPHORIA, (intérprete intermedio), FORTRAN
(compilador puro) MSIL (Microsoft Intermediate Language) (intérprete) y BASIC
(intérprete puro, intérprete intermedio, compilador intermedio o compilador puro,
depende de la versión utilizada)].
El código objeto no existe si el programador trabaja con un lenguaje a modo de
intérprete puro, en este caso el mismo intérprete se encarga de traducir y ejecutar
línea por línea el código fuente (de acuerdo al flujo del programa), en tiempo de
ejecución. En este caso tampoco existe el o los archivos de código ejecutable.
Una desventaja de esta modalidad es que la ejecución del programa o sistema es
un poco más lenta que si se hiciera con un intérprete intermedio, y bastante más
lenta que si existe el o los archivos de código ejecutable. Es decir no favorece el
rendimiento en velocidad de ejecución. Pero una gran ventaja de la modalidad
intérprete puro, es que él está forma de trabajo facilita enormemente la tarea de
depuración del código fuente (frente a la alternativa de hacerlo con un compilador
puro). Frecuentemente se suele usar una forma mixta de trabajo (si el lenguaje de
programación elegido lo permite), es decir inicialmente trabajar a modo de
intérprete puro, y una vez depurado el código fuente (liberado de errores) se utiliza
un compilador del mismo lenguaje para obtener el código ejecutable completo, con
lo cual se agiliza la depuración y la velocidad de ejecución se optimiza.
Código ejecutable: Es el código binario resultado de enlazar uno o más
fragmentos de código objeto con las rutinas y bibliotecas necesarias. Constituye
uno o más archivos binarios con un formato tal que el sistema operativo es capaz
de cargarlo en la memoria RAM (eventualmente también parte en una memoria
virtual), y proceder a su ejecución directa. Por lo anterior se dice que el código
ejecutable es directamente «inteligible por la computadora». El código ejecutable,
también conocido como código máquina, no existe si se programa con modalidad
de «intérprete puro».
Tras analizar y diseñar una solución web para una institución de Gobierno, por
ejemplo, corresponde enfrentar la etapa de implementar la aplicación. Es la
construcción definitiva donde se elaboran, adaptan y añaden los elementos
previamente contemplados, o bien, se trabaja en casos adaptativos, es decir, se
adecuan aplicaciones de código abierto ya construidas que se ajusten a los
requerimientos del cliente.

El modelo diseñado en la fase anterior es la guía maestra para comenzar a


ejecutar los componentes y programar las funciones que deberá cumplir la
aplicación. Se deben respetar las especificaciones que recomiendan los
respectivos organismos al momento de elaborar o adaptar un software. El World
Wide Web Consortium es la institución que dicta las normas que debe cumplir un
sitio web.
Terminada esta fase se procede a probar la nueva herramienta. Estas pruebas
permiten verificar que los componentes de la aplicación cumplen con las
características del modelo y con la funcionalidad del sistema. La aplicación debe
responder a lo deseado. También se corrigen fallos y posibles vulnerabilidades.
Terminados estos análisis, se ejecuta el proceso de implantación.

 Implantación
En rigor, se habla de implantar cuando una aplicación se instala sin modificar su
código fuente. Cuando se realizan modificaciones al código, o se programan
nuevos elementos en la aplicación, es propio hablar de implementación.
La implantación es una de las fases más complejas del proceso. Incluye las
actividades de compilación, instalación y personalización. Tras esto, corresponde
realizar la migración de datos, capacitar a los usuarios y aportar los documentos y
manuales respectivos que permitirán trabajar de manera productiva y eficaz.
 Compilación
La compilación es la traducción del código fuente de la nueva aplicación en
lenguaje binario para que pueda ser interpretado por el procesador del
computador. Luego, utilizando un programa llamado instalador y un linker
(enlazador) se consigue un programa ejecutable final para ser utilizado por el
correspondiente sistema operativo.

 Personalización
Esta operación consiste en adaptar la aplicación a los requerimientos del usuario
final mediante un procedimiento llamado parametrización, donde se ajustan los
parámetros establecidos en el software a las particularidades que necesita el
cliente.

 Migración de datos
No es otra cosa que trasladar al programa nuevo los datos que el cliente desea
incorporar. Esta información se encuentra habitualmente dispersa en diversos
archivos, formatos y soportes. Habitualmente, corresponde al cliente ingresar esta
información. Puede llegar a ser un procedimiento complejo si se trata de una
organización que lleva mucho tiempo en funcionamiento.
De esta manera, se cumple con todas las fases de desarrollo de una herramienta
web: análisis, diseño, implementación, pruebas, implantación y puesta en marcha.
Para conocer aspectos de capacitación y soporte técnico sugerimos revisar la
información que se desarrolla en las páginas correspondientes.

Pruebas modulares e integrales de un programa computacional


La calidad del software es un conjunto de procesos bien definidos para lograr la
satisfacción de los clientes y usuarios con sistemas que cumplan de la mejor
manera su propósito. Existe un proceso dentro de la administración del ciclo de
vida de las aplicaciones que en los últimos 10 años ha sido de vital importancia
para impulsar la calidad de los sistemas: las pruebas de software.
Actualmente no podemos imaginar la operación y crecimiento de grandes
empresas (incluidas empresas derenombre) sin el apoyo y dirección de software
desarrollado de forma específica para cubrir las necesidades primordiales de los
clientes. El funcionamiento de maquinaria y equipamiento depende en gran
medida del software y la calidad en ellos como un sello distintivo para los usuarios.
Las pruebas de software se han convertido en un factor determinante para logar el
éxito de sistemas, de ahí la importancia de establecer una metodología que nos
guíe el camino para llegar a nuestro objetivo, un software con la mayor calidad
posible. Aunando en este tema ¿qué es calidad? y ¿cómo podemos estar seguros
que el sistema cubre todos y cada uno de los aspectos que conforman la calidad?,
estas preguntas y otros temas relacionados son los que veremos en el contenido
de este documento.
Las ventajas de establecer un proceso de calidad son:
 Detectar la mayor cantidad de errores posibles antes de salir a producción
 Ayudar a los administradores a la toma de decisiones
 Buscar los escenarios seguros para el uso del producto
 Evaluar la calidad
 Verificar la corrección del producto
 Asegurar la calidad

El proceso de pruebas define etapas que especifican en qué momento del desarrollo del software
comenzaremos a probar. Cada etapa tiene un objetivo diferente, técnicas que nos ayudan a definir
qué y cómo vamos a probar Lo anterior depende de la etapa en la que se comiencen las pruebas.
Por último, tenemos tipos de pruebas para validar la funcionalidad, para validar atributos no
funcionales e incluso para evaluar un sistema después de haber sufrido cambios.

¿Por qué probar el software?


Estos son los propósitos más relevantes de por qué probar software:
El propósito de las pruebas es:
 Detectar la mayor cantidad de errores posibles
 Ayudar a los administradores a la toma de decisiones
 Buscar los escenarios seguros para el uso del producto
 Evaluar la calidad
 Verificar la corrección del producto
 Asegurar la calidad
 Competitividad comercial
 Alcanzar mayor calidad en el software
 Cambios en la tecnología
 Reducción de costos y riesgos
 Incremento de productividad
En resumen las pruebas son una inversión, se mencionan tres puntos importantes
por los cuales se debe probar el software.
 Mejora de la calidad de un producto software. El proceso de pruebas ayuda
a suministrar o
aportar al software los atributos deseados, por ejemplo: retirar defectos que
conducen a fallos.
 Reducción del riesgo de detectar errores. Las actividades de pruebas de
software adecuadas
reducirán el riesgo de encontrar errores durante la fase de operación del software.
 Satisfacer compromisos. La ejecución de pruebas puede ser un requisito
obligatorio por parte del
cliente, debido a normas legales, así como al cumplimiento de estándares propios
de una industria.

Mantenimiento de un programa computacional o software


El Servicio de mantenimiento de software es una de las actividades en la
Ingeniería de Software y es el proceso de mejorar y optimizar el software
desplegado (revisión del programa), así como también remediar los defectos.
El mantenimiento de software es también una de las fases en el Ciclo de Vida de
Desarrollo de Sistemas (SDLC ó System Development Life Cycle), que se aplica al
desarrollo de software. La fase de mantenimiento es la fase que viene después del
despliegue (implementación) del software en el campo.
La fase de mantenimiento de software involucra cambios al software en orden de
corregir defectos y dependencias encontradas durante su uso tanto como la
adición de nueva funcionalidad para mejorar la usabilidad y aplicabilidad del
software

Tipos de mantenimiento
Tipos de servicio de mantenimientos existentes, y entre paréntesis el porcentaje
aproximado respecto al total de operaciones de mantenimiento:
 Perfectivo (60%): Mejora del software ( rendimiento , flexibilidad ,
reusabilidad ..) o implementación de nuevos requisitos. También se conoce
como mantenimiento evolutivo .
 Adaptativo (18%): Adaptación del software a cambios en su entorno
tecnológico (nuevo hardware, otro sistema de gestión de bases de datos ,
otro sistema operativo ...)

 Correctivo (17%): Corrección de fallos detectados durante la explotación.

 Preventivo (5%): Facilitar el mantenimiento futuro del sistema (verificar


precondiciones, mejorar legibilidad...).

También podría gustarte