¿Cómo desarrollar la capacidad de convertir entre lenguaje de programación C y lenguaje natural?
Descargue un software de conversión de diagramas de flujo y convierta un programa de archivo C ".cpp" completo en un diagrama de flujo. Es fácil de entender. Además, en su estudio diario, preste más atención al uso del pensamiento de clases y objetos para ver el mundo. Esto cultivará su capacidad para abstraer clases. Por ejemplo, puede encontrar sus atributos cuando ve un reloj y conceptualizar sus. forma cuando ves una taza de té. Todos los programas de computadora están diseñados en función de las necesidades de la vida. Para aprenderlo bien, primero debe observar la vida con atención y usar la sintaxis de programación para encontrar los puntos más comunes entre los dos y luego abstraerlos. En cuanto a la gramática, lo más importante es C. C es mejor que C, pero si nos remontamos a la fuente, C sigue siendo muy importante.
Para diseñar un programa, primero debe saber qué puede hacer el programa, por ejemplo:
#include?lt;iostream.hgt;
#include?lt;math.hgt;
#include?lt;string.hgt;
¿clase?
{
amigo?ostream?amp;operatorlt;lt; (ostream? amp;, const?Complex?amp;);
amigo?
público:
Complejo(doble?r=0, doble?i =0) ;
void?setRe(double?r);//establecer parte real
void?setIm(double?i);//establecer parte imaginaria
double?getRe()?Constant; //Obtener la parte real
double?getIm()?Constant //Obtener la parte imaginaria
double?getABS() ?Constant; // Obtener el módulo de un número complejo
void?show()?const;//Mostrar el número complejo
const?Complex?amp; operator=(const?Complex?amp;) ;//assign
Complex?con()?const; //toma el yugo sangriento
Complex?operator (Complex ?amp;z); //obtener el módulo del número complejo
Complex?amp;z);//agregar
Complex?operator-(Complex?amp;z) ;//restar
Complejo?operador*(Complejo?amp;z);//Multiplicar
Complejo?operador/(Complejo?amp;z);//Dividir p>
int?operator== (const?Complex?amp; z)?const; //Juzgar igual
int?operator!=(const?Complex?amp;z)?const; //Juzgar no igual
privado:
doble?Re;
doble?Im;
};
int?main()
{
Complex?z;
coutlt;lt; "Ingrese números plurales, separados o terminados en forma de " , " o "; "! " lt; lt; endl;
coutlt; lt; "Por favor, introduzca el plural z="lt; lt; endl;
cingt; gt; z;
coutlt;lt;zlt;lt;endl;
retorno?;
}
Complejo::Complejo(doble?r,doble?i)
{
Re=r;
Estoy=i;
}
void?Complex::setRe(double? r )
{
Re=r;
}
void?Complex::setIm(doble?i)
{
Estoy=i;
}
¿doble?Complex::getRe()?Constante
{
Retorno?Re;
}
doble?Complex::getIm()?Constante
{
return?Im;
}
doble?Complex::getABS()?const
{
return?sqrt (Re*Re Im*Im);
}
void?Complex::show()?const
{
if (Estoy==0) coutlt;lt;Re; if(Re==0amp;amp;Estoy!=0amp;amp;Estoy!=1amp;amp;Estoy!=-1) coutlt;lt;Imlt;lt; i";
if(Re==0amp;amp;Im==1.0) coutlt;lt; "i";
if(Re==0amp;amp;Im= =-1) coutlt;lt;"-i";
if(Re!=0amp;amp;Imgt;0amp;amp;Im!=1.0) coutlt;lt; lt;lt;Imlt;lt; "i";
if(Re!=0amp;amp;Im==1.0) coutlt;lt;Relt;lt;lt; ; "yo";
if(Re!=0amp;amp;Estoy lt;0amp;amp;Estoy!=-1) coutlt;lt;Relt;lt;Imlt;lt;
if(Re!=0amp;amp;Im==-1) coutlt;lt;Relt;lt;"-i";
}
const?Complejo? amp;Complex::operator=(const?Complex?amp;temp)
{
if(amp;temp!=this)//verificar autoasignación
{ Re =temp.Re; Estoy=temp.Estoy;
}
regresar?*esto;
}
¿Complejo?Complejo::con()?const
{
Complejo?temp(0,0);
temp.Re=Re;
temp.Im=-1*Estoy;
return?temp;
}
¿Complejo?Complejo::operador (¿Complejo?amp; z)
{
Complejo?temp(0,0);
temp.Re=Re z.Re;
temp .Im=Estoy z.Im;
return?temp;
}
¿Complejo?Complejo::operador-(Complejo?amp;z) p> p>
{
Complejo?temp(0,0);
temp.Re=Re-z.Re;
temp. Im= Im-z.Im;
¿regresar?I
m;
return?temp;
}
¿Complejo?Complejo::operador*(Complejo?amp;z)
{
¿Complejo?temp(0,0);
temp.Re=Re*z.Re-Im*z.Im;
temp.Im= Re*z.Im Im*z.Re;
return?temp;
}
¿Complejo?Complejo::operador/(Complejo?amp;z )
{
¿Complejo?temp(0,0);
if(z.Re==0amp;amp;z.Im==0) { coutlt;lt; "¡Error! ¡El divisor no puede ser 0!"lt;lt;endl; return?temp }? temp.Re=((Re*z.Re Im*z.Im)/(z . getABS()*z.getABS())); temp.Im=((Im*z.Re-Re*z.Im)/(z.getABS()*z.getABS())); }
}
int?Complex::operator==(const?Complex?amp;z)?const
{
if(Re==z.Reamp;amp;Im==z.Im) return?; else?return?0;
}
int?Complex::operador! = (const?Complex?amp;z)?const
{
if(Re!===z.Re||Im!=z.Im) return?1 ) else ?return?0
}
ostream?amp;operatorlt;lt;(ostream?amp;output,const?Re;
if(z. Re ===0amp;amp;z.Im!=0amp;amp;z.Im!=1amp;amp;z.Im!=-1) salidalt;lt;z.Imlt;amp;lt;
if(z.Re==0amp;amp;z.Estoy! salidalt;lt;"i";
if(z.Re===0amp;amp;z .Im===-1) salidalt;lt;"-i";
if(z.Re!= 0amp;amp;z.Imgt;0amp;amp;z.Im!=1 ) salidalt;lt;z.Relt;lt; " "lt;lt;z.Imlt;lt; "i";
if(z.
if(z. Re! =0amp;amp;z.Im==1) salidalt;lt;z.Relt;lt; " "lt;lt; "i";
if(z.Re!=0amp; amp; z.Imlt;0amp;amp;z.Im! =-1) salidalt;lt;z. z.Imlt;lt; "i";
if(z.Re!=0amp;amp;z.Im==-1) salidalt;lt;z.Relt ;lt; "-i";
retorno?salida
}
istream ?amp;operatorgt;g
t (istream?amp; input, Complex?amp; z)
{
int?n=0, me=0, be=0, bi=1, mi= 1, fe=-1, len=0;
char?*ptr;
ptr=new?char[100];
hacer
{ inputgt;gt;ptr[n];? if((ptr[n]==' '||ptr[n]=='-')amp;amp;n!=0 ) { yo=n; if(ptr[n]=='-') mi=-1 } if(ptr[n]=='i') { fe=n;
} if(ptr[ 0]=='-') { ser=1; bi=-1 }n;
}
mientras(ptr[n-1] ]!=','amp;amp;ptr[n-1]!=';');
ptr[n-1]='\0';
len =strlen(ptr);
if(fe==-1)
{ int?i=0, p=len; double?k=1.0, temp=0; (i=0; i lt; len; i ) { if(ptr[i]=='.')
{ p=i
break; (i=0;ilt;len-p-1;i) { k=0.1*k; } for(i=len-1;igt;=be;i--) { if (ptr[i]! =' .') { temp=temp k*(ptr[i]-48); k=k*10; } } } z.Re=bi*temp; /p>
if (fe==yo)//i
{ z.Re=0;
z.Im=1} ; p>
p>
z.Im=1;
}
if(fe==1amp;amp;me==0)
{ if( be)//-i; { z.Re=0; z.Im=-1 } if(!be)/2i, 3i, 4i, 5i, 6i, 7i, 8i, 9i; z.Re=0 ; z.Im=ptr[0]-48; }
}
if(fegt;1amp;amp;me==0)?/123i, -123i,1.23i, -1.23i;
{ int?i=0, p=len; doble?k=1.0, temp=0.0; { if(ptr[ i]=='.') { p=i; break; *k; } for (i=fe-1;igt;=be;i--) { if(ptr[i]! ='.') { temp=temp k*(ptr[i]-48); =k*10; } } } z.Re=0; z.Im=bi*temp;
}
if(megt; 0amp; amp; fe==yo 1 )?//1 i, 1-i, 123 i, -123-i, 1.23 i, -1.23-i;
{
int?i=0, p= len;
doble?k=1.0, temp=0.0;
para(
i=0; ilt; len; i ) {
if(ptr[i]=='.') { p=i; 1;i) { k=0.1*k; } for(i=me-1;igt;=be;i--) {? if(ptr[i]! ='.') { temp=temp k*( ptr[i]-48); k=k*10; } } } z.Re=bi*temp; z.Im=mi;}
if(megt; 0amp;amp;fegt;me 1)?//123 123i,-123-123i,1.23 1.23i,-1.23-1.23i;
{
int?i=0 , p[2]={len, len};
doble?k1=1.0, k2=1.0, temp1=0.0, temp2=0.0; ilt; len; i )
{ if(ptr[i]=='.' amp; amp; ilt; yo) p[0]=i; 'amp;amp;igt;me) p[1]=i;
}
for(i=0;ilt;me-p[0]-1;i)
{ k1=0.1*k1;
}
for(i=0; ilt; fe-p[1]-1; i ) p>
{ k2=0.1*k2;
} for(i=me-1;igt;=be;i--)
{ if(ptr[i ]! ='.') { temp1=temp1 k1*(ptr[i]-48; k1=k1*10); --)
{ if(ptr[i]!='.') { temp2=temp2 k2*(ptr[i]-48); p>} z.Re=bi*temp1; z.Im=mi*temp2;
}
¿eliminar?[]?ptr;
regresar? input;
}
Lo anterior es una clase compleja No hace falta decir sobre la abstracción de la clase, en la sobrecarga de entrada y salida, para cumplir con la entrada compleja general. hábitos, el flujo de entrada ha sido objeto de algún procesamiento, que es de especial a bebime?mi?fi?len?p[0]?p[1]
¿Registrar el flujo de entrada por separado?p>
Registre respectivamente en la cadena de entrada: la posición del bit inicial, el símbolo del bit inicial, la posición del segundo " " o "-", el símbolo, la posición de "i", la posición de punto decimal 1, y el punto decimal La posición de 2;
Luego enumere (comenzando desde el número entero), enumere 1, -1, 123, -123, i, , 2i, -i, 123i, -123i, 1 i, -1 respectivamente Los valores característicos de -i, 123 123i, 123-123i, -123-123i se pueden discutir y clasificar según las similitudes y diferencias de los valores para prescribir el medicamento correcto. .
Otro punto es leer los programas de otras personas, como un compilador de computadora, para que puedas encontrar errores y practicar tu propia lógica. En resumen, si realmente quieres aprender bien C/C, debes hacerlo. ¡practiquelo repetidamente!