1.2: Preguntas frecuentes
- Page ID
- 82099
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)
( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\id}{\mathrm{id}}\)
\( \newcommand{\Span}{\mathrm{span}}\)
\( \newcommand{\kernel}{\mathrm{null}\,}\)
\( \newcommand{\range}{\mathrm{range}\,}\)
\( \newcommand{\RealPart}{\mathrm{Re}}\)
\( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)
\( \newcommand{\Argument}{\mathrm{Arg}}\)
\( \newcommand{\norm}[1]{\| #1 \|}\)
\( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)
\( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)
\( \newcommand{\vectorA}[1]{\vec{#1}} % arrow\)
\( \newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow\)
\( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vectorC}[1]{\textbf{#1}} \)
\( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)
\( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)
\( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)
\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)
\( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)
\(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)¿Por qué aprender programación en lenguaje C?
C es quizás el lenguaje de desarrollo más utilizado hoy en día. Eso por sí solo es una buena razón para considerarlo pero hay más:
- Se trata de un lenguaje estructurado moderno que ha sido estandarizado (ANSI).
- Es modular, permitiendo la reutilización del código.
- Es ampliamente compatible, permitiendo que el código fuente se use para varias plataformas diferentes simplemente recompilando para el nuevo destino.
- Su popularidad significa que varios complementos de terceros (bibliotecas y módulos) están disponibles para “estirar” el idioma.
- Tiene comprobación de tipo que ayuda a detectar errores.
- Es muy potente, permitiéndote acercarte “al metal”.
- Generalmente, crea código muy eficiente (espacio pequeño y ejecución rápida).
¿Cuál es la diferencia entre C y C ++?
C++ es un superconjunto de C. Primero vino C, luego vino C++. De hecho, el nombre C++ es una broma de programador porque ++ es el operador de incremento en C. Así, C++ significa literalmente “incremento C”, o tal vez “dame la siguiente C”. C++ hace todo lo que hace C más mucho más. Estas características adicionales no son gratuitas y las aplicaciones integradas generalmente no pueden permitirse la sobrecarga. En consecuencia, aunque mucho trabajo de escritorio se realiza tanto en C++ como en C, la mayor parte del trabajo incrustado se realiza en C. Los sistemas de desarrollo de escritorio generalmente se denominan sistemas C/C++, lo que significa que harán ambas cosas. Los sistemas de desarrollo embebidos pueden ser estrictamente C o incluso una variante del mismo (como es el nuestro).
¿Dónde puedo comprar una placa de desarrollo Arduino?
La placa Arduino Uno está disponible en una variedad de fuentes, incluyendo Digi-Key, Mouser, Parts Express y otras. ¡Compra alrededor!
¿Cuál es la diferencia entre el desarrollo de PC de escritorio y la programación integrada?
El desarrollo de escritorio se enfoca en aplicaciones para computadoras de escritorio. Estos incluyen cosas como procesadores de texto, utilidades gráficas, juegos, programas CAD, etc. Estas son las cosas en las que la mayoría de la gente piensa cuando escucha la palabra “computadora”. La programación integrada se centra en la miríada de aplicaciones casi invisibles que nos rodean todos los días. Los ejemplos incluyen el código que ejecuta su horno microondas, sistema de administración de motores de automóviles, teléfono celular y muchos otros. En términos de unidades totales, las aplicaciones integradas superan con creces a las aplicaciones de escritorio. Es posible que tenga una o incluso algunas PC en su casa, pero probablemente use docenas de aplicaciones integradas todos los días. Los microcontroladores integrados tienden a ser mucho menos potentes pero también mucho menos costosos que sus homólogos de PC. Las diferentes técnicas de programación son parte integral de este curso y dedicaremos un tiempo considerable a examinarlas.
¿Cómo se compara C con Python?
Si, como muchos estudiantes que toman este curso, tu formación es con el lenguaje Python, puedes encontrar ciertos aspectos de C un poco raros al principio. Algo de ello puede parecer demasiado complicado. Sin embargo, no se alarme. El núcleo del lenguaje es realmente simple. Python tiende a ocultar cosas al programador mientras que C no lo hace. inicialmente, esto parece complicar las cosas, y lo hace para los programas más simples, pero para tareas más complicadas C tiende a cortar al meollo del asunto. Muchos tipos de manipulación de datos y hardware son mucho más directos y eficientes en C que en otros lenguajes. Una consideración práctica es que C es un lenguaje compilado mientras que la mayoría de las versiones de Python se interpretan esencialmente. Esto significa que hay un paso extra en el ciclo de desarrollo, pero el programa compilado resultante es mucho más eficiente. Examinaremos por qué esto es así un poco más tarde.
¿Cómo se compara C con el lenguaje ensamblador?
El ensamblaje se ha utilizado tradicionalmente cuando el espacio de código y la velocidad son de suma importancia. Hace años, prácticamente todo el trabajo incrustado se hacía en el montaje. A medida que los microcontroladores han aumentado en potencia y los compiladores C han mejorado, las tablas han dado vuelta. La desventaja del montaje ahora pesa en su contra. El ensamblaje es específico del procesador, no estructurado, no estandarizado, ni particularmente fácil de leer o escribir. C ofrece ahora características de rendimiento similares al montaje pero con todas las ventajas de un lenguaje estructurado moderno.