\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Briana} \pdfinfo{ /Title (lenguaje-c.pdf) /Creator (Cheatography) /Author (Briana) /Subject (Lenguaje C Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{0DA399} \definecolor{LightBackground}{HTML}{EFF9F8} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Lenguaje C Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Briana} via \textcolor{DarkBackground}{\uline{cheatography.com/66326/cs/16552/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Briana \\ \uline{cheatography.com/briana} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 5th August, 2018.\\ Updated 6th August, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{0.89586 cm} x{4.08114 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Operadores}} \tn % Row 0 \SetRowColor{LightBackground} ||/| & Or \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \&\&/\& & And \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} == & Igual que \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} ! & Not \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} != & Diferente de \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} + - / * \% & Operadores aritméticos \tn % Row Count 7 (+ 2) % Row 6 \SetRowColor{LightBackground} ++/ -{}- & Incremento/Decremento \tn % Row Count 8 (+ 1) % Row 7 \SetRowColor{white} \textless{} \textless{}= \textgreater{}= \textgreater{} & Comparaciones \tn % Row Count 10 (+ 2) % Row 8 \SetRowColor{LightBackground} ?: & condición? Expresión 1: Expresión 2;Si se cumple la condición se ejecuta la expresión 1 y si no se cumple se ejecuta la expresión 2 \tn % Row Count 15 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.64241 cm} x{3.33459 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Comentarios y salto de línea}} \tn % Row 0 \SetRowColor{LightBackground} // & Comentario de una línea \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} /* */ & Comentario en bloque \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \textbackslash{}n & Salto de línea \tn % Row Count 3 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.75186 cm} x{1.75434 cm} x{1.2531 cm} p{0.4177 cm} } \SetRowColor{DarkBackground} \mymulticolumn{4}{x{5.377cm}}{\bf\textcolor{white}{Tipos de datos}} \tn % Row 0 \SetRowColor{LightBackground} char & 'a' & Rango: 0..255 & \%c \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} short & -15 & \seqsplit{Rango:-128...127} & \%hi \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} int & 1012 & \seqsplit{Rango:-32768}...32767 & \%i \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} \seqsplit{unsigned} int & 128 & \seqsplit{Rango:0...65535} & \%u \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} long & 123456 & & \%li \tn % Row Count 9 (+ 1) % Row 5 \SetRowColor{white} float & 15.4 & & \%f \tn % Row Count 10 (+ 1) % Row 6 \SetRowColor{LightBackground} double & 123123.123123 & & \%lf \tn % Row Count 11 (+ 1) % Row 7 \SetRowColor{white} long double & Número muy grande con decimales & & \%Lf \tn % Row Count 13 (+ 2) % Row 8 \SetRowColor{LightBackground} char X{[}50{]} & string & & \%s \tn % Row Count 15 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}----} \SetRowColor{LightBackground} \mymulticolumn{4}{x{5.377cm}}{En el string, "X" es la variable y {[}50{]} es la cantidad de espacios} \tn \hhline{>{\arrayrulecolor{DarkBackground}}----} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Directivas del preprocesador}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{\# include: Para la inclusión de archivos \newline % Row Count 1 (+ 1) \# define: Para la definición de macros \newline % Row Count 2 (+ 1) \# if: Se usa para inclusiones condicionales \newline % Row Count 3 (+ 1) \# undef {\bf{numero}}: Indefino a {\bf{numero}}, es decir, anulo su definición previa% Row Count 5 (+ 2) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Estructura general de un programa}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{\#include \textless{}stdio.h\textgreater{} /* Cabecera estándar de entrada/salida de datos/* \newline % Row Count 2 (+ 2) Prototipos /* Aquí se definen los prototipos de las funciones se usarán dentro de la función main /* \newline % Row Count 5 (+ 3) int main()\{ // Función principal \newline % Row Count 6 (+ 1) instrucciones; \newline % Row Count 7 (+ 1) return 0; // Buena praxis de programación \newline % Row Count 8 (+ 1) \}% Row Count 9 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.69218 cm} x{3.28482 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Entradas y salidas de datos}} \tn % Row 0 \SetRowColor{LightBackground} printf( ) & Muestra en pantalla los datos \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} scanf("\%i",\&variable) & Guarda un dato que el ususario digitó \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} gets( ) & Se usa para cadenas de strings, dado que el scanf solo lee hasta que haya un espacio \tn % Row Count 8 (+ 4) % Row 3 \SetRowColor{white} puts( ) & Muestra datos en pantalla pero solo si está dentro de un condicional \tn % Row Count 11 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{\%i: Define el tipo de dato que se está guardando. \newline \&variable:Define en qué posición de memoria se guardará el dato, seguido del nombre de la variable donde se guardará.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Sentencia if-else}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{if(condición)\{ \newline % Row Count 1 (+ 1) instrución; \newline % Row Count 2 (+ 1) \} \newline % Row Count 3 (+ 1) else\{ \newline % Row Count 4 (+ 1) instrucción; \newline % Row Count 5 (+ 1) \}% Row Count 6 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Sentencia switch}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{switch(selector)\{ \newline % Row Count 1 (+ 1) case etiqueta1: sentencia1;break; \newline % Row Count 2 (+ 1) case etiqueta2: sentencia2;break; \newline % Row Count 3 (+ 1) case etiqueta3: sentencia3;break; \newline % Row Count 4 (+ 1) default: sentencia; \newline % Row Count 5 (+ 1) \}% Row Count 6 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{-El selector de un switch solo puede ser de tipo entero o char. \newline -Si no se cumple ninguno de los casos, entra al default.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Funciones matemáticas}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{ceil(x): Redondea a techo siempre \newline % Row Count 1 (+ 1) fabs(x): Devuelve el valor absoluto de x \newline % Row Count 2 (+ 1) floor(x): Redondea a piso \newline % Row Count 3 (+ 1) fmod(x,y): Calcula el residuo de la división de x/y \newline % Row Count 5 (+ 2) pow(x,p): Eleva x a la potencia p \newline % Row Count 6 (+ 1) sqrt(x): Devuelve la raíz cuadrada de x% Row Count 7 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Otros}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{getch( ): Para hacer que el ejecutable no se cierre inmediatamente, si no hasta que se presione una tecla \newline % Row Count 3 (+ 3) fflush(stdin): Para limpiar el buffer% Row Count 4 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Para usar {\bf{getch( )}} ocupo incluir la biblioteca \textless{}conio.h\textgreater{}.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Bucles}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{While}} \newline % Row Count 1 (+ 1) while( )\{ \newline % Row Count 2 (+ 1) instrucciones; \newline % Row Count 3 (+ 1) \} \newline % Row Count 4 (+ 1) {\bf{For}} \newline % Row Count 5 (+ 1) for(inicialización;condición;incremento)\{ \newline % Row Count 6 (+ 1) instrucciones; \newline % Row Count 7 (+ 1) \} \newline % Row Count 8 (+ 1) {\bf{Do while}} \newline % Row Count 9 (+ 1) do\{ \newline % Row Count 10 (+ 1) instrucciones; \newline % Row Count 11 (+ 1) \} while( );% Row Count 12 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Arrays unidimensionales}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Sintaxis del array: \newline % Row Count 1 (+ 1) TipoDeDato nombreArray {[}numeroElementos{]} \newline % Row Count 2 (+ 1) Ejemplo: \newline % Row Count 3 (+ 1) int numeros{[}5{]} = \{1,2,3,4,5\}% Row Count 4 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{-\{1,2,3,4,5\}: Forma de asignar elementos a un array o también se le pueden pedir al usuario. \newline -int numeros{[}0{]}=1} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Arrays Bidimensionales (matrices)}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Sintaxis para la declaración: \newline % Row Count 1 (+ 1) TipoDeDato nombreDelArray {[}numeroFilas{]} {[}numeroColumnas{]} \newline % Row Count 3 (+ 2) Ejemplo: \newline % Row Count 4 (+ 1) int matriz{[}2{]}{[}3{]} = \{\{41,42,43\},\{44,45,46\}\};% Row Count 5 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{-\{\{41,42,43\},\{44,45,46\}\}: Así declaramos los elementos que van a rellenar la matriz, el primer grupo de números es la primera fila, por lo tanto el segundo es la segunda fila y se agrupan de 3 en 3 porque es el número de columnas. \newline - int matriz{[}0{]}{[}1{]}=42} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Estructuras}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Es una colección de datos de diferente tipo. \newline % Row Count 1 (+ 1) Declaración de una estructura: \newline % Row Count 2 (+ 1) {\bf{struct}} nombreDeLaEstrucutra \{ \newline % Row Count 3 (+ 1) tipoDeDato nombreDeMiembro; \newline % Row Count 4 (+ 1) tipoDeDato nombreDeMiembro; \newline % Row Count 5 (+ 1) tipoDeDato nombreDeMiembro; \newline % Row Count 6 (+ 1) \}; Aquí declaro las variables, las cuales contienen cada uno de los miembros de la estructura y puedo accesar a ellos por medio del {\bf{.}} \newline % Row Count 9 (+ 3) Ejemplo: \newline % Row Count 10 (+ 1) {\bf{struct}} persona\{ \newline % Row Count 11 (+ 1) char nombre{[}20{]}; \newline % Row Count 12 (+ 1) int edad; \newline % Row Count 13 (+ 1) \} \newline % Row Count 14 (+ 1) persona1= \{"Briana",17\}, \newline % Row Count 15 (+ 1) persona2= \{"Paula",19\}; \newline % Row Count 16 (+ 1) int main()\{ \newline % Row Count 17 (+ 1) printf("Su nombre es: \%s ",persona1{\bf{.}}nombre); \newline % Row Count 18 (+ 1) printf("\textbackslash{}n Su edad es: \%i ", persona1{\bf{.}}edad); \newline % Row Count 19 (+ 1) return 0; \newline % Row Count 20 (+ 1) \}% Row Count 21 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{También le puedo pedir al usuario que me digite la información de las variables. Por ejemplo la edad la guardaría con un scanf("\%i",\&persona1.edad);} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Arreglos de estructuras}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Ejemplo: \newline % Row Count 1 (+ 1) {\bf{struct}} persona\{ \newline % Row Count 2 (+ 1) char nombre{[}20{]}; \newline % Row Count 3 (+ 1) int edad; \newline % Row Count 4 (+ 1) \}personas{[}5{]}; // persona1,...persona5 \newline % Row Count 5 (+ 1) int main( ) \{ \newline % Row Count 6 (+ 1) int i; \newline % Row Count 7 (+ 1) for(i=0;i\textless{}5;i++) \{ \newline % Row Count 8 (+ 1) fflush(stdin); \newline % Row Count 9 (+ 1) printf("\%i. Digite su nombre: ",i+1); \newline % Row Count 10 (+ 1) gets(personas{[}i{]}.nombre); \newline % Row Count 11 (+ 1) printf("\%i. Digite su edad: ",i+1); \newline % Row Count 12 (+ 1) scanf("\%i",\&personas{[}i{]}.edad); \newline % Row Count 13 (+ 1) \}% Row Count 14 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Punteros}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Declaración de un puntero: \newline % Row Count 1 (+ 1) tipoDeDato {\bf{*}}nombreDePuntero; \newline % Row Count 2 (+ 1) Ejemplo: \newline % Row Count 3 (+ 1) int main ( )\{ \newline % Row Count 4 (+ 1) int numero=50; \newline % Row Count 5 (+ 1) int *p\_numero; //puntero \newline % Row Count 6 (+ 1) p\_numero = \№ \newline % Row Count 7 (+ 1) // \&numero: Posición de memoria de numero \newline % Row Count 8 (+ 1) printf("Dato: \%i",numero); //imprime 50 \newline % Row Count 9 (+ 1) printf("Dato: \%i",*p\_numero); /*Así también me imprime 50 que es el valor de la variable numero. */ \newline % Row Count 12 (+ 3) printf("Posicion de memoria: {\bf{\%p}} ",p\_numero); \newline % Row Count 13 (+ 1) printf("Posicion de memoria: {\bf{\%p}} ",\&numero); /*Las dos formas imprimen la posición de memoria*/ \newline % Row Count 16 (+ 3) return 0; \newline % Row Count 17 (+ 1) \}% Row Count 18 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}