Archivos en la Categoría: informatica

el placer de descubrir

Voy a empezar a promocionar libros en este blog, y comienzo con esta maravilla: “El placer de descubrir”, una recopilación de entrevistas, conferencias y artículos del gran físico del siglo pasado, Richard P. Feynman, Premio Nobel de 1965, de quien ya he hablado en varias ocasiones, y que para mi es el modelo a seguir en ciencia.

La grandeza de Feynman no se debe solo a sus descubrimientos sobre electrodinámica cuántica o a que sea, como le bautizaron, el “padre de la nanotecnología”. Su grandeza se debe a que todos sus pasos los dio con gran humor, imaginación y humildad, hasta el punto de que uno de los libros que tratan sobre él se titula: “¿Está usted de broma, señor Feynman?”.

En “El placer de descubrir” podremos aprender mucho sobre cómo debe pensar alguien verdaderamente interesado en descubrir, y trata los siguientes temas:

Infancia:

En varios capítulos descubrimos cómo desde pequeño fue educado por su padre para amar la ciencia, dando paseos por el bosque y analizando cada minúsculo detalle, jugando con secuencias lógicas de colores y números, y analizando la mecánica clásica con un simple coche de ruedas:

Un día estaba yo jugando con lo que llamamos un vagón exprés (…). Tenía dentro una bola (lo recuerdo bien) y me fijé en un detalle del movimiento de la bola, así que le dije a mi padre: “Papá, he notado algo: cuando tiro del vagón la bola rueda hacia la parte trasera, y cuando estoy tirando y de repoente dejo de hacerlo, la bola rueda hacia la parte delantera (…), ¿por qué pasa eso?” (…) “Nadie lo sabe. Hay un principio general que dice que las cosas que están en movimiento tratan de seguir en movimiento, y las cosas que están en reposo tienden a permanecer en reposo a menos que ejerzas una fuerza sobre ellas (…). Esta tendencia se llama inercia pero nadie sabe por qué es verdad. (…) Si te fijas bien verás que no es la bola la que rueda hacia la parte trasera del vagón, sino que es la parte trasera del vagón la que tú estás tirando hacia la bola; verás que la bola sigue quieta o que quizá empieza a moverse debido a la fricción, pero en realidad se mueve hacia adelante y no hacia atrás.”

Asimismo, podemos incluir en su época joven experimentos acerca de si es posible o no contar mientras se lee o se habla, con resultados interesantes.

Participación en el Proyecto Manhattan:

De su participación en el proyecto de la bomba atómica podemos encontrar un joya de capítulo en este libro, donde Feynman nos cuenta cómo era la estancia en Los Álamos, y un sinfín de anécdotas: cómo consiguió tener una habitación para él solo, cómo filtraba información “disimuladamente”, cómo aprendió a desvalijar cajas fuertes escuchando sonidos o probando con constantes universales, cómo tuvo algunos golpes de suerte para contestar adecuadamente en situaciones en las que estaba despistado, cómo consiguió ser la primera persona que vió una bomba atómica en fase de pruebas sin gafas de protección cubriéndose con la luna de un coche de la radiacción ultravioleta, cómo conoció al Premio Nobel Niels Bohr sin dudar en preguntarle si estaba loco, y más situaciones como la que sigue:

Y así llega el día, el primer día de la censura. ¡Teléfono! ¡Riiiiing! Yo: “¿Qué?” “Venga, por favor.” Yo voy. “¿Qué es esto?” Es una carta de mi padre. “Bien, ¿qué es?” Hay un papel rayado, y hay unas líneas con puntos: cuatro puntos abajo, un punto arriba, dos puntos abajo, un punto arriba, un punto debajo de un punto. “¿Qué es esto?” Yo dije: “Es un código.” Y ellos: “sí, es un código; pero ¿qué dice?”. Yo dije: “No sé lo que dice.” Dijeron: “Bien, ¿cuál es la clave del código; cómo lo descrifra?”. Yo dije: “Pues no lo sé.” Entonces ellos dijeron: “¿Qué es esto?”. Yo dije: “Es una carta de mi mujer.” “dice TJXYWZ TW1X3. ¿Qué es esto?” Yo dije: “Otro código.” “¿Cuál es la clave?” “No lo sé.” Dijeron: “¿Usted está recibiendo mensajes en clave y no la conoce?” “Exactamente. Juego con ellos. Les reto a que me envíen un código que no pueda descifrar, ¿ven ustedes? De modo que se inventan códigos y me envían mensajes sin decirme cuál es la clave.” Ahora bien, una de las reglas de la censura era que no iban a interferir en nada que uno hiciera normalmente en el correo. Así que dijeron: “Bien, usted va a tener que decirles que por favor envíen la clave con el mensaje.” Dije: “¡Pero yo no quiero saber la clave!” Dijeron: “Muy bien, nosotros sacaremos la clave.” Y llegamos a ese compromiso.

Reflexiones Éticas:

Encontramos también en el libro entrevistas y conferencias en las que Richard expone su opinión sobre cómo se está menospreciando la ciencia en la sociedad, y que es vergonzoso que las pseudociencias (astrología, tarot, sanadores…) ganen tanto terreno:

Pienso, y todos ustedes deben saberlo por experiencia, que la gente (quiero decir la persona media, la gran mayoría de las personas, la inmensa mayoría de las personas) son lamentablemente, penosamente, absolutamente ignorantes de la ciencia en el mundo en el que viven, y pueden seguir así. No quiero decir nada de ellos; lo que quiero decir es que pueden seguir sin que les preocupe lo más mínimo (sólo tibiamente) y cuando ocasionalmente ven la CP mencionada en los periódicos, preguntan qué es eso. Y una cuestión interesante de la relación entre ciencia y sociedad moderna es precisamente ésa: ¿por qué es posible que la gente en una sociedad moderna permanezca tan penosamente ignorante, y pese a todo razonablemente felíz, cuando hay tanto conocimiento al que no pueden acceder?

Conferencia “Hay Mucho Sitio al Fondo”:

Esta conferencia, que el libro reproduce integramente, le valió a Feynman el ya mencionado título de “padre de la nanotecnología”, pues en ella aseguraba, algo adelantado a su época, que en un futuro cercano sería posible usar los propios átomos para procesar cada bit de un ordenador, de modo que todos los libros del mundo podrían grabarse con láser sobre nada menos que 2/3 de la punta de un alfiler.

En resumen, es un libro interesante, sobre una persona muy interesante, y que cautivará a cualquiera que esté interesado en el tema.

Dados los diferentes periodos de rotación y traslación de los distintos planetas la duración de los años y los días en cada uno de ellos son dispares. Calcula con este programa compilable con programas como “Dev c++” tu edad en cada uno de ellos. Las ecuaciones van incluidas en el código, siendo “a” los años de vida, y siendo “b” los días.

int main(int argc, char *argv[]){
int opcion;
float a,b;
do{
printf(“\n1.Calcular tu edad en los otros planetas\n2.Salir\n”);
scanf(“%d”,&opcion);
if(opcion==1){
printf(“\nIntroduce tus dias terrestres de vida\n”);
scanf(“%f”,&b);
a=b/365.75;
printf(“\nEn Mercurio tienes %f años”,4.16*a);
printf(“\nEn Mercurio tienes %f dias”,0.017*b);
printf(“\nEn Venus tienes %f años”,1.62*a);
printf(“\nEn Venus tienes %f dias”,0.0041*b);
printf(“\nEn Marte tienes %f años”,0.53*a);
printf(“\nEn Marte tienes %f dias”,0.97*b);
printf(“\nEn Jupiter tienes %f años”,0.084*a);
printf(“\nEn Jupiter tienes %f dias”,2.44*b);
printf(“\nEn Saturno tienes %f años”,0.034*a);
printf(“\nEn Saturno tienes %f dias”,2.22*b);
printf(“\nEn Urano tienes %f años”,0.012*a);
printf(“\nEn Urano tienes %f dias”,1.39*b);
printf(“\nEn Neptuno tienes %f años”,0.0059*a);
printf(“\nEn Neptuno tienes %f dias”,1.49*b);
}
}
while(opcion!=2);
system(“PAUSE”);
return 0;
}

La estructuración del programa es un simple menu.

Para introducir dilataciones o compresiones se hace como cocientes. Es decir, si quieres una dilatacion en la que el tiempo dure el triple solo tendras que poner un 3. Si quieres una contracion en la que el espacio se comprima a una cuarta parte deberas introducir 1/4, o sea se, 0,25.

Cuando el programa devuelva 1.#INF00 el resultado valdrá infinito.

Se puede compilar con cualquier programa que use “c” como lenguaje de programación. Por ejemplo Dev_c++.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define c 300000000

int main(){
int eleccion1,eleccion2,velocidadA,dilatacionmedida,eleccion3,velocidadB;
float cocienteA,gammaA,dilatacion,cocienteB,gammaB,velocidadAA,cocienteC,gammaC,compresionmedida,gammaD,velocidadBB;
do{
printf(“Sobre que desea trabajar?:\n1.Dilatacion del tiempo\n2.Compresion del espacio\n3.Salir\n\n”);
scanf(“%d”,&eleccion1);
if(eleccion1==1){
do{
printf(“1.Medir una dilatacion temporal\n2.Calcular la velocidad de una dilatacion temporal\n3.Volver atras\n\n”);
scanf(“%d”,&eleccion2);
if(eleccion2==1){
printf(“Introduzca la velocidad relativa en m/s\n\n”);
scanf(“%d”,&velocidadA);
if(velocidadA>=0 && velocidadA<=c){
cocienteA=pow(velocidadA,2)/pow(c,2);
gammaA=sqrt(1-cocienteA);
dilatacion=1/gammaA;
printf(“La dilatacion es de %f\n\n”,dilatacion);
}
else{
printf(“La velocidad indicada es imposible\n\n”);
}
}
if(eleccion2==2){
printf(“Indicar la dilatacion medida\n\n”);
scanf(“%d”,&dilatacionmedida);
if(dilatacionmedida>=1){
cocienteB=1/pow(dilatacionmedida,2);
gammaB=sqrt(1-cocienteB);
velocidadAA=c*gammaB;
printf(“La velocidad relativa es de %f m/s\n\n”,velocidadAA);
}
else{
printf(“La dilatacion indicada es imposible\n\n”);
}
}
}
while(eleccion2!=3);
}
if(eleccion1==2){
do{
printf(“1.Medir una compresion espacial\n2.Calcular la velocidad de una compresion espacial\n3.Volver atras\n\n”);
scanf(“%d”,&eleccion3);
if(eleccion3==1){
printf(“Introduzca la velocidad relativa en m/s\n\n”);
scanf(“%d”,&velocidadB);
if(velocidadB>=0 && velocidadB<=c){
cocienteC=pow(velocidadB,2)/pow(c,2);
gammaC=sqrt(1-cocienteC);
printf(“La compresion es de %f\n\n”,gammaC);
}
else{
printf(“La velocidad indicada es imposible\n\n”);
}
}
if(eleccion3==2){
printf(“Indicar la compresion medida\n\n”);
scanf(“%f”,&compresionmedida);
if(compresionmedida<=1 && compresionmedida>=0){
gammaD=sqrt(1-pow(compresionmedida,2));
velocidadBB=c*gammaD;
printf(“La velocidad relativa es de %f m/s\n\n”,velocidadBB);
}
else{
printf(“La compresion indicada es imposible\n\n”);
}
}
}
while(eleccion3!=3);
}
}
while(eleccion1!=3);
system(“PAUSE”);
return 0;
}

Códigos escritos por Santiago Codesido Sánchez

ESCRIBA UN PROGRAMA QUE CALCULE LA LONGITUD DE UNA CADENA DE CARACTERES.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *str;
printf(“Introduzca una cadena de caracteres: “);
scanf(“%s”,str);
printf(“Su longitud es %d\n”,strlen(str));
system(“PAUSE”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CONCATENE EL NOMBRE, LOS APELLIDOS Y LA EDAD DE UNA PERSONA.

#include <stdio.h>
#include <stdlib.h>

#include <string.h>

int main(int argc, char *argv[])
{
char nom[128];
char apu[128];
char apd[128];
char eda[128];
char fin[4*128+3];
printf(“Introduzca el nombre: “);
scanf(“%s”,nom);
printf(“Introduzca el primer apellido: “);
scanf(“%s”,apu);
printf(“Introduzca el segundo apellido: “);
scanf(“%s”,apd);
printf(“Introduzca la edad: “);
scanf(“%s”,eda);

strcat(fin,nom);
strcat(fin,” “);
strcat(fin,apu);
strcat(fin,” “);
strcat(fin,apd);
strcat(fin,” “);
strcat(fin,eda);
printf(“%s\n”,fin);
system(“PAUSE”);
return 0;
}

Códigos escritos por Santiago Codesido Sánchez

ESCRIBA UN PROGRAMA QUE CALCULE EL MÓDULO DE UN VECTOR DE NÚMEROS ENTEROS.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int n;
float sum=0,vec;
printf(“Dimension del vector:”);
scanf(“%d”,&n);
for(int i=0;i<n;i++){
scanf(“%f”,&vec);
sum+=vec*vec;
}
printf(“El modulo es %f”,sqrt(sum));
system(“PAUSE”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE LA MEDIA DE LOS COMPONENTES DE UN VECTOR DE NÚMEROS ENTEROS.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int n;
float sum=0,vec;
printf(“Dimension del vector:”);
scanf(“%d”,&n);
for(int i=0;i<n;i++){
scanf(“%f”,&vec);
sum+=vec;
}
printf(“La media es %f”,sum/n);
system(“PAUSE”);
return 0;
}

ESCRIBA UN PROGRAMA QUE DETECTE LA POSICIÓN DEL PRIMER NÚMERO NEGATIVO EN UN VECTOR DE NÚMEROS ENTEROS (POSITIVOS Y NEGATIVOS).

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int len;
printf(“Introduzca el tamaño del vector: “);
scanf(“%d”,&len);
int x[len];
printf(“Introduzca los valores:\n”);
for(int i=0;i<len;i++){
scanf(“%d”,x+i);
}
int found=1;
for(int i=0;i<len;i++){
if(*(x+i)<0){
found=*(x+i);
printf(“El primer numero negativo es %d en la posicion %d\n”,found,i+1);
break;
}
}
if(found>0) printf(“No hay numeros negativos\n”);
system(“PAUSE”);
return 0;
}

ESCRIBA UN PROGRAMA QUE INTERCAMBIE EL ELEMENTO DEL VECTOR v QUE OCUPA LA POSICIÓN p, CON EL ÚLTIMO ELEMENTO DEL VECTOR.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int len,pos,temp;
printf(“Introduzca el tamaño del vector: “);
scanf(“%d”,&len);
int x[len];
printf(“Introduzca los valores:\n”);
for(int i=0;i<len;i++){
scanf(“%d”,x+i);
}
do{
printf(“Introduzca la posicion a intercambiar (1-%d):”,len);
scanf(“%d”,&pos);
}while(pos<=0 || pos>len);
temp=*(x+len-1);
*(x+len-1)=*(x+pos-1);
*(x+pos-1)=temp;
for(int i=0;i<len;i++){
printf(“%d”,*(x+i));
}
printf(“\n”);
system(“PAUSE”);
return 0;
}

ESCRIBA UN PROGRAMA QUE TRANSFORME UN VECTOR v DE N ENTEROS DE MANERA QUE EL ELEMENTO k PASE A ALMACENAR LA SUMA DE LOS ELEMENTOS DEL VECTOR DESDE 0 HASTA k. ES DECIR, EL ELEMENTO k ALMACENARÁ v[0] + v[1] + v[2] +…+ v[k].

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int len,read,sum=0;
printf(“Introduzca el tamaño del vector: “);
scanf(“%d”,&len);
int x[len];
printf(“Introduzca los valores:\n”);
for(int i=0;i<len;i++){
scanf(“%d”,&read);
sum+=read;
*(x+i)=sum;
}
printf(“(“);
for(int i=0;i<len-1;i++){
printf(“%d,”,*(x+i));
}
printf(“%d)\n”,*(x+len-1));
system(“PAUSE”);
return 0;
}

Códigos escritos por Santiago Codesido Sánchez

ESCRIBA UN PROGRAMA QUE CALCULE EL FACTORIAL DE UN NÚMERO, PERO UTILIZANDO LA ESTRUCTURA while.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int n,i=1,r=1;
printf(“Introduzca n: “);
scanf(“%d”,&n);
while(i<=n){
r*=i;
i+=1;
}
printf(“%d!=%d\n”,n,r);
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE REALICE LAS SIGUIENTES OPERACIONES: SUMA, RESTA, MULTIPLICACIÓN Y DIVISIÓN.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int opt;
float r,m,n;
printf(“Menu:\n\t1:Suma\n\t2:Resta\n\t3:Multiplicación\n\t4:División\n\n”);
scanf(“%d”,&opt);
while(opt<0 || opt>4){
scanf(“%d”,&opt);
}
printf(“Introduzca los números\n”);
scanf(“%f”,&m);
scanf(“%f”,&n);
if(opt==1){
r=m+n;
}else if(opt==2){
r=m-n;
}else if(opt==3){
r=m*n;
}else{
r=m/n;
}
printf(“\n%f\n”,r);
system(“pause”);
return 0;
}

MODIFIQUE EL PROGRAMA DEL EJERCICIO ANTERIOR, AÑADIENDO LA POSIBILIDAD DE CERRARLO.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int opt;
float r,m,n;
while(true){
printf(“Menu:\n\t1:Suma\n\t2:Resta\n\t3:Multiplicación\n\t4:División\n\t5:salir\n\n”);
scanf(“%d”,&opt);
if(opt==5) break;
while(opt<0 || opt>4){
scanf(“%d”,&opt);
}
printf(“Introduzca los números\n”);
scanf(“%f”,&m);
scanf(“%f”,&n);
if(opt==1){
r=m+n;
}else if(opt==2){
r=m-n;
}else if(opt==3){
r=m*n;
}else{
r=m/n;
}
printf(“\n%f\n”,r);
}
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE UN VALOR APROXIMADO DE LA SIGUIENTE SERIE INFINITA EN UN PUNTO x: ex=1+x+x2/2!+x3/3!+…+xn/n!+…

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
double x,ex=1,tn=1,i=1;
printf(“Introduzca el exponente: “);
scanf(“%lf”,&x);
while(tn>0.000001){
tn*=x/i;
ex+=tn;
i++;
}
printf(“e^x=%lf\n”,ex);
system(“pause”);
return 0;
}

Códigos escritos por Santiago Codesido Sánchez

MODIFIQUE EL PROGRAMA NÚMERO 4 DE LA SESIÓN ANTERIOR PARA QUE CALCULE LA RAÍZ CUADRADA DE UN NÚMERO, QUE PUEDE SER POSITIVO O NEGATIVO.

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

int main(int argc, char *argv[])
{
int n;
printf(“Introduzca el número: “);
scanf(“%d”,&n);
if(n<0){
printf(“La raíz cuadrada de %d es %lfi\n”,n,sqrt(-n));
}else{
printf(“La raíz cuadrada de %d es %lf\n”,n,sqrt(n));
}
system(“pause”);
return 0;
}
ESCRIBA UN PROGRAMA QUE RECIBA UN NÚMERO Y LO CLASIFIQUE COMO NEGATIVO, POSITIVO MENOR O IGUAL QUE 100 O POSITIVO MAYOR QUE 100 .

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n;
printf(“Introduzca un número:”);
scanf(“%d”,&n);
printf(“\n\n%d es “,n);
if(n<0){
printf(“negativo.\n”);
}else if(n<=100){
printf(“mayor que 0 y menor o igual que 100.\n”);
}else{
printf(“mayor que 100.\n”);
}
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE RECIBA UNA NOTA Y LA CLASIFIQUE DE ACUERDO AL SIGUIENTE CRITERIO: SUSPENSO (SI LA NOTA ES MAYOR QUE 0 Y MENOR QUE 5.0), APROBADO (SI ES MAYOR O IGUAL QUE 5.0 Y MENOR QUE 7.0), NOTABLE (SI ES MAYOR O IGUAL QUE 7.0 Y MENOR QUE 9.0), SOBRESALIENTE (SI ES MAYOR O IGUAL QUE 9.0 Y MENOR QUE 10.0), MATRÍCULA DE HONOR (SI ES 10.0) Y ERRÓNEA EN CUALQUIER OTRO CASO.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float n;
printf(“Introduzca la nota:”);
scanf(“%f”,&n);
if(n<0 || n>10){
printf(“Error de formato\n”);
system(“pause”);
return 1;
}
printf(“\nEl alumno tiene “);
if(n<5){
printf(“suspenso.\n”);
}else if(n<7){
printf(“aprobado.\n”);
}else if(n<9){
printf(“notable.\n”);
}else if(n<10){
printf(“sobresaliente.\n”);
}else{
printf(“matrícula de honor.\n”);
}
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE EL FACTORIAL DE UN NÚMERO.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,f=1;
printf(“Introduzca un número: “);
scanf(“%d”,&n);
if(n<0){
printf(“n>0\n”);
system(“pause”);
return 1;
}
for(int i=1;i<=n;i++){
f*=i;
}
printf(“n!=%d\n”,f);
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE LA SUMA DE LOS N PRIMEROS TÉRMINOS DE LA SIGUIENTE SERIE: 1/(r*r), PARA r=1,2,…,N.

#include <stdio.h>
#include <stdlib.h>
//Suma de los n primeros miembros de la serie Sumatorio de 1/(i*i)
int main(int argc, char *argv[])
{
int n;
double S=0,x;
printf(“n=”);
scanf(“%d”,&n);
if(n<=0){
printf(“n>0\n”);
system(“pause”);
return 1;
}
for(int i=1;i<=n;i++){
x=i;
S+=1/(x*x);
}
printf(“S=%lf\n”,S);
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE, A PARTIR DEL NÚMERO DE FILAS (f) Y COLUMNAS (c) PROPORCIONADAS POR EL USUARIO, IMPRIMA EN PANTALLA UNA TABLA DE ASTERISCOS DE TAMAÑO fxc.

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int f,c;
printf(“Número de filas:”);
scanf(“%d”,&f);
printf(“Número de columnas:”);
scanf(“%d”,&c);
if(f<=0||c<=0){
printf(“Error\n”);
system(“pause”);
return 1;
}
for(int i=0;i<f;i++){
for(int j=0;j<c;j++){
printf(“*”);
}
printf(“\n”);
}
system(“pause”);
return 0;
}

Códigos escritos por Santiago Codesido Sánchez

ESCRIBA UN PROGRAMA QUE CALCULE LA SUPERFICIE DE UNA ESFERA (S=4*3.1416*r*r) A PARTIR DEL RADIO (r)

#include <stdio.h>
#define PI 3.14159

int main(int argc, char *argv[])
{
int rad;
printf(“Introduzca el valor del radio (como entero): “);
scanf(“%d”,&rad);
printf(“La superficie de la esfera es %f\n”,rad*PI*4);

system(“PAUSE”)
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE EL ÁREA DE UN CÍRCULO, LA LONGITUD DE LA CIRCUNFERENCIA QUE LO DELIMITA, SU VOLUMEN (v=4*3.1416*r*r*r/3) Y SU SUPERFICIE (S=4*3.1416*r*r) A PARTIR DEL RADIO (r).

#include <stdio.h>
#include <stdlib.h>
#define PI 3.14159

int main(int argc, char *argv[])
{
float rad;
printf(“Introduzca el valor del radio (como entero): “);
scanf(“%f”,&rad);
printf(“La longitud de la circunferencia es %f\nEl área del círculo es %f\nEl volumen de la esfera es %f\nLa superficie de la esfera es %f\n”,2*PI*rad,rad*rad*PI,rad*rad*rad*4*PI/3,rad*rad*PI*4);
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE LA SUMA, DIFERENCIA Y PRODUCTO DE DOS NÚMEROS.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
float m,n;
printf(“Introduzca los valores de los números m y n:\n”);
scanf(“%f”,&m);
scanf(“%f”,&n);
printf(“m+n=%f\nm-n=%f\nm*n=%f\n”,m+n,m-n,m*n);
system(“pause”);
return 0;
}

ESCRIBA UN PROGRAMA QUE CALCULE LA RAÍZ CUADRADA DE UN NÚMERO POSITIVO.

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

int main(int argc, char *argv[])
{
int n;
printf(“Introduzca el número: “);
scanf(“%d”,&n);
printf(“La raíz cuadrada de %d es %lf\n”,n,sqrt(n));
system(“pause”);
return 0;
}

Una expresión de conmutación de “n” variables es una expresión algebraica en la que aparecen elementos y operaciones del álgebra de conmutación. Ejemplo: ƒ(a, b, c) = oa + a ob + b c. Os recuerdo que “o” delante de un elemento indica que es su complementario, por falta de otros recursos para escribirlo aquí.

Aplicando el Álgebra de Boole, algunas expresiones de conmutación son equivalentes: a b + oa = oa + b. Una forma de igualar dos funciones es por aplicación de teoremas, como en este nuevo ejemplo: a b + a ob + a c =a (b + ob) + a c = a 1 + a c = a (1 + c) = a.

Formas canónicas de las expresiones de conmutación:

  • Literal: variable con o sin complementación.
  • Término producto: literal o producto de literales.
  • Término suma, como a + ob + c.
  • Suma de productos: suma de términos producto.
  • Producto de sumas: producto de términos suma.
  • Minterm de “n” variables: término producto de “n” literales, donde cada variable aparece una y solo una vez. “n” variables → 2^n minterms.
  • Maxterm de “n” variables: término suma de “n” literales, “.

Suma de minterms canónica o 1ª Forma Canónica:

Suma de minterms en la que no hay ningún minterm repetido.

Producto de maxterms canónico o 2ªForma Canónica:

Producto de maxterms en el que no hay ningún elemento repetido.

Dar la 1ª Forma Canónica de ƒ(a, b, c) = a + ob + c.

a b c + a b oc + a ob c + a ob oc + oa ob c + oa ob oc + oa b c + oa ob c

Las funciones de conmutación describen cada una de las salidas de un sistema digital para todas las posibles combinaciones de entradas.

Para “n” variables hay 2^n posibles combinaciones de entradas en código binario.

La función o-constante es la que siempre vale 0.

La función identidad devuelve a cada digito su valor.

La función complmento da a cada dígito su valor opuesto.

La función 1-constante es la que siempre vale 1.

La función 0-exclusiva, NOR, o EXOR es la que vale 0 solo cuando todos los digitos de la combinación son iguales.

La función OR vale siempre 1 a no ser que todos los digitos valgan 0.

Funciones incompletamente especificadas.

Ciertas combinaciones de entradas se deconsidera que tienen valores indiferentes. Por ejemplo, una tabla en función de los valores de un dado en 3 bits no necesitará valores concretos para 0 y 7 porque son combinaciones que noo se van a dar.

Propiedades del Álgebra de Boole.

Un Álgebra de Boole afecta a un conjunto con dos operaciones internas binarias (+, *) que verifican los siguientes postulados:

  • Dichas operaciones son internas.
  • Son conmutativas.
  • Poseen elementos neutros.
  • Son distributivas una respecto la otra.
  • Cada elemento tiene su opuesto.
  • Al menos tiene que haber dos elementos distintos.