[{"data":1,"prerenderedAt":856},["ShallowReactive",2],{"doc:\u002Fex03":3},{"id":4,"title":5,"body":6,"description":849,"extension":850,"meta":851,"navigation":120,"path":852,"seo":853,"stem":854,"__hash__":855},"docs\u002Fex03.md","Ejercicio 03: ft_print_numbers",{"type":7,"value":8,"toc":830},"minimark",[9,13,20,82,88,93,342,346,353,367,373,383,389,392,398,411,417,428,434,452,458,465,470,478,482,485,508,527,551,555,563,567,633,637,716,720,811,815,826],[10,11,5],"h1",{"id":12},"ejercicio-03-ft_print_numbers",[14,15,16],"blockquote",{},[17,18,19],"p",{},"Muestra, en una sola línea y en orden creciente, todos los dígitos.",[21,22,23,36],"table",{},[24,25,26],"thead",{},[27,28,29,33],"tr",{},[30,31,32],"th",{},"Dato",[30,34,35],{},"Valor",[37,38,39,51,61,71],"tbody",{},[27,40,41,45],{},[42,43,44],"td",{},"Carpeta",[42,46,47],{},[48,49,50],"code",{},"ex03\u002F",[27,52,53,56],{},[42,54,55],{},"Archivo",[42,57,58],{},[48,59,60],{},"ft_print_numbers.c",[27,62,63,66],{},[42,64,65],{},"Prototipo",[42,67,68],{},[48,69,70],{},"void ft_print_numbers(void);",[27,72,73,76],{},[42,74,75],{},"Funciones autorizadas",[42,77,78,79],{},"solo ",[48,80,81],{},"write",[17,83,84],{},[85,86,87],"em",{},"Hecho con amor para Laura, por Bogdan.",[89,90,92],"h2",{"id":91},"el-archivo","El archivo",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-c shiki shiki-themes github-light github-dark","#include \u003Cunistd.h>\n\n\u002F*\n** Copia local de ft_putchar: el enunciado solo permite entregar este archivo.\n** Escribe un unico caracter en la salida estandar.\n*\u002F\nstatic void put_char(char c)\n{\n    write(1, &c, 1);\n}\n\n\u002F*\n** Muestra los diez digitos en orden creciente, en una sola linea.\n** Los digitos tambien son consecutivos en ASCII: '0' + 1 es '1'.\n*\u002F\nvoid    ft_print_numbers(void)\n{\n    char    digit;\n\n    digit = '0';\n    while (digit \u003C= '9')\n    {\n        put_char(digit);\n        digit++;\n    }\n}\n","c","",[48,101,102,115,122,129,135,141,147,174,180,206,212,217,222,228,234,239,254,259,268,273,288,305,311,320,331,337],{"__ignoreMap":99},[103,104,107,111],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"szBVR","#include",[103,112,114],{"class":113},"sZZnC"," \u003Cunistd.h>\n",[103,116,118],{"class":105,"line":117},2,[103,119,121],{"emptyLinePlaceholder":120},true,"\n",[103,123,125],{"class":105,"line":124},3,[103,126,128],{"class":127},"sJ8bj","\u002F*\n",[103,130,132],{"class":105,"line":131},4,[103,133,134],{"class":127},"** Copia local de ft_putchar: el enunciado solo permite entregar este archivo.\n",[103,136,138],{"class":105,"line":137},5,[103,139,140],{"class":127},"** Escribe un unico caracter en la salida estandar.\n",[103,142,144],{"class":105,"line":143},6,[103,145,146],{"class":127},"*\u002F\n",[103,148,150,153,156,160,164,167,171],{"class":105,"line":149},7,[103,151,152],{"class":109},"static",[103,154,155],{"class":109}," void",[103,157,159],{"class":158},"sScJk"," put_char",[103,161,163],{"class":162},"sVt8B","(",[103,165,166],{"class":109},"char",[103,168,170],{"class":169},"s4XuR"," c",[103,172,173],{"class":162},")\n",[103,175,177],{"class":105,"line":176},8,[103,178,179],{"class":162},"{\n",[103,181,183,186,188,192,195,198,201,203],{"class":105,"line":182},9,[103,184,185],{"class":158},"    write",[103,187,163],{"class":162},[103,189,191],{"class":190},"sj4cs","1",[103,193,194],{"class":162},", ",[103,196,197],{"class":109},"&",[103,199,200],{"class":162},"c, ",[103,202,191],{"class":190},[103,204,205],{"class":162},");\n",[103,207,209],{"class":105,"line":208},10,[103,210,211],{"class":162},"}\n",[103,213,215],{"class":105,"line":214},11,[103,216,121],{"emptyLinePlaceholder":120},[103,218,220],{"class":105,"line":219},12,[103,221,128],{"class":127},[103,223,225],{"class":105,"line":224},13,[103,226,227],{"class":127},"** Muestra los diez digitos en orden creciente, en una sola linea.\n",[103,229,231],{"class":105,"line":230},14,[103,232,233],{"class":127},"** Los digitos tambien son consecutivos en ASCII: '0' + 1 es '1'.\n",[103,235,237],{"class":105,"line":236},15,[103,238,146],{"class":127},[103,240,242,245,248,250,252],{"class":105,"line":241},16,[103,243,244],{"class":109},"void",[103,246,247],{"class":158},"    ft_print_numbers",[103,249,163],{"class":162},[103,251,244],{"class":109},[103,253,173],{"class":162},[103,255,257],{"class":105,"line":256},17,[103,258,179],{"class":162},[103,260,262,265],{"class":105,"line":261},18,[103,263,264],{"class":109},"    char",[103,266,267],{"class":162},"    digit;\n",[103,269,271],{"class":105,"line":270},19,[103,272,121],{"emptyLinePlaceholder":120},[103,274,276,279,282,285],{"class":105,"line":275},20,[103,277,278],{"class":162},"    digit ",[103,280,281],{"class":109},"=",[103,283,284],{"class":113}," '0'",[103,286,287],{"class":162},";\n",[103,289,291,294,297,300,303],{"class":105,"line":290},21,[103,292,293],{"class":109},"    while",[103,295,296],{"class":162}," (digit ",[103,298,299],{"class":109},"\u003C=",[103,301,302],{"class":113}," '9'",[103,304,173],{"class":162},[103,306,308],{"class":105,"line":307},22,[103,309,310],{"class":162},"    {\n",[103,312,314,317],{"class":105,"line":313},23,[103,315,316],{"class":158},"        put_char",[103,318,319],{"class":162},"(digit);\n",[103,321,323,326,329],{"class":105,"line":322},24,[103,324,325],{"class":162},"        digit",[103,327,328],{"class":109},"++",[103,330,287],{"class":162},[103,332,334],{"class":105,"line":333},25,[103,335,336],{"class":162},"    }\n",[103,338,340],{"class":105,"line":339},26,[103,341,211],{"class":162},[89,343,345],{"id":344},"línea-por-línea","Línea por línea",[347,348,350],"h3",{"id":349},"include-unistdh",[48,351,352],{},"#include \u003Cunistd.h>",[17,354,355,356,358,359,362,363,366],{},"Declara ",[48,357,81],{},". Sin ella, ",[48,360,361],{},"-Werror"," corta la compilación con\n",[48,364,365],{},"implicit declaration of function 'write'",".",[347,368,370],{"id":369},"static-void-put_charchar-c",[48,371,372],{},"static void put_char(char c)",[17,374,375,376,379,380,382],{},"La misma copia privada de ",[48,377,378],{},"ft_putchar"," que usan los ejercicios 01 y 02. ",[48,381,152],{},"\nevita que choque con la función pública si algún día compilas varios archivos\njuntos.",[347,384,386],{"id":385},"void-ft_print_numbersvoid",[48,387,388],{},"void ft_print_numbers(void)",[17,390,391],{},"No devuelve nada y no recibe parámetros. Es la firma que pide el enunciado.",[347,393,395],{"id":394},"char-digit",[48,396,397],{},"char digit;",[17,399,400,401,403,404,407,408,366],{},"Guarda el dígito que toca imprimir. ",[48,402,166],{}," es suficiente: solo hay diez valores\nposibles, de ",[48,405,406],{},"'0'"," a ",[48,409,410],{},"'9'",[347,412,414],{"id":413},"digit-0",[48,415,416],{},"digit = '0';",[17,418,419,420,422,423,427],{},"Arranca en el primer dígito. ",[48,421,406],{}," es un ",[424,425,426],"strong",{},"carácter",", no el número 0. Su código\nASCII es 48. Esa distinción es la clave de todo el ejercicio.",[347,429,431],{"id":430},"while-digit-9",[48,432,433],{},"while (digit \u003C= '9')",[17,435,436,437,407,439,441,442,444,445,448,449,366],{},"Diez vueltas, de ",[48,438,406],{},[48,440,410],{},". El ",[48,443,299],{}," incluye el último dígito; con ",[48,446,447],{},"\u003C"," se\nquedaría en el ",[48,450,451],{},"8",[347,453,455],{"id":454},"put_chardigit",[48,456,457],{},"put_char(digit);",[17,459,460,461,464],{},"Escribe el carácter actual. Lo que se imprime es ",[48,462,463],{},"digit"," tal cual, no una\nconversión: ya es un carácter.",[347,466,467],{"id":463},[48,468,469],{},"digit++;",[17,471,472,473,407,475,477],{},"Avanza al siguiente dígito. Los códigos de ",[48,474,406],{},[48,476,410],{}," son consecutivos (48 a\n57), así que sumar uno da el siguiente carácter.",[89,479,481],{"id":480},"la-conversión-que-vas-a-reutilizar","La conversión que vas a reutilizar",[17,483,484],{},"Este ejercicio parece trivial, pero esconde la operación que necesitan los\nejercicios 06, 07 y 08:",[94,486,488],{"className":96,"code":487,"language":98,"meta":99,"style":99},"put_char('0' + number);   \u002F* 0 → '0', 7 → '7' *\u002F\n",[48,489,490],{"__ignoreMap":99},[103,491,492,495,497,499,502,505],{"class":105,"line":106},[103,493,494],{"class":158},"put_char",[103,496,163],{"class":162},[103,498,406],{"class":113},[103,500,501],{"class":109}," +",[103,503,504],{"class":162}," number);",[103,506,507],{"class":127},"   \u002F* 0 → '0', 7 → '7' *\u002F\n",[17,509,510,511,513,514,516,517,519,520,523,524,366],{},"Funciona porque la distancia entre ",[48,512,406],{}," y ",[48,515,410],{}," es la misma que entre 0 y 9.\nNo es magia: ",[48,518,406],{}," vale 48, y ",[48,521,522],{},"48 + 7"," es 55, que es ",[48,525,526],{},"'7'",[17,528,529,530,533,534,537,538,541,542,545,546,366],{},"Ese truco ",[424,531,532],{},"no"," se generaliza a cualquier número. ",[48,535,536],{},"'0' + 42"," no da una letra:\nda otro carácter. Para números de varias cifras hay que separarlas con ",[48,539,540],{},"\u002F"," y\n",[48,543,544],{},"%",", como hace el ",[547,548,550],"a",{"href":549},"\u002Fex06","ejercicio 06",[89,552,554],{"id":553},"salida-esperada","Salida esperada",[94,556,561],{"className":557,"code":559,"language":560,"meta":99},[558],"language-text","0123456789\n","text",[48,562,559],{"__ignoreMap":99},[89,564,566],{"id":565},"casos-límite","Casos límite",[21,568,569,579],{},[24,570,571],{},[27,572,573,576],{},[30,574,575],{},"Detalle",[30,577,578],{},"Decisión",[37,580,581,589,606,619],{},[27,582,583,586],{},[42,584,585],{},"Salto de línea final",[42,587,588],{},"no se imprime",[27,590,591,596],{},[42,592,593],{},[48,594,595],{},"digit \u003C= '9'",[42,597,598,599,602,603,605],{},"incluye el ",[48,600,601],{},"9","; con ",[48,604,447],{}," te dejarías el último dígito",[27,607,608,611],{},[42,609,610],{},"Diez vueltas",[42,612,613,614,616,617],{},"exactas: no hay dígitos fuera de ",[48,615,406],{},"–",[48,618,410],{},[27,620,621,630],{},[42,622,623,624,627,628],{},"Usar ",[48,625,626],{},"int"," en vez de ",[48,629,166],{},[42,631,632],{},"también funcionaría, pero sobra memoria",[89,634,636],{"id":635},"errores-típicos","Errores típicos",[21,638,639,652],{},[24,640,641],{},[27,642,643,646,649],{},[30,644,645],{},"Mensaje o síntoma",[30,647,648],{},"Causa",[30,650,651],{},"Solución",[37,653,654,670,688,702],{},[27,655,656,659,667],{},[42,657,658],{},"imprime símbolos raros",[42,660,661,662,627,665],{},"empezaste en ",[48,663,664],{},"0",[48,666,406],{},[42,668,669],{},"usa el carácter",[27,671,672,677,683],{},[42,673,674,675],{},"falta el ",[48,676,601],{},[42,678,679,680],{},"usaste ",[48,681,682],{},"digit \u003C '9'",[42,684,685,686],{},"cambia a ",[48,687,299],{},[27,689,690,693,699],{},[42,691,692],{},"no termina",[42,694,695,696],{},"olvidaste ",[48,697,698],{},"digit++",[42,700,701],{},"añádelo en el cuerpo",[27,703,704,707,713],{},[42,705,706],{},"no compila",[42,708,709,712],{},[48,710,711],{},"digit = \"0\""," con comillas dobles",[42,714,715],{},"comillas simples",[89,717,719],{"id":718},"comprobarlo","Comprobarlo",[94,721,725],{"className":722,"code":723,"language":724,"meta":99,"style":99},"language-sh shiki shiki-themes github-light github-dark","cat > \u002Ftmp\u002Fmain.c \u003C\u003C'EOF'\nvoid    ft_print_numbers(void);\n\nint main(void)\n{\n    ft_print_numbers();\n    return (0);\n}\nEOF\ncc -Wall -Wextra -Werror ex03\u002Fft_print_numbers.c \u002Ftmp\u002Fmain.c -o \u002Ftmp\u002Fex03\n\u002Ftmp\u002Fex03\n","sh",[48,726,727,744,749,753,758,762,767,772,776,781,806],{"__ignoreMap":99},[103,728,729,732,735,738,741],{"class":105,"line":106},[103,730,731],{"class":158},"cat",[103,733,734],{"class":109}," >",[103,736,737],{"class":113}," \u002Ftmp\u002Fmain.c",[103,739,740],{"class":109}," \u003C\u003C",[103,742,743],{"class":113},"'EOF'\n",[103,745,746],{"class":105,"line":117},[103,747,748],{"class":113},"void    ft_print_numbers(void);\n",[103,750,751],{"class":105,"line":124},[103,752,121],{"emptyLinePlaceholder":120},[103,754,755],{"class":105,"line":131},[103,756,757],{"class":113},"int main(void)\n",[103,759,760],{"class":105,"line":137},[103,761,179],{"class":113},[103,763,764],{"class":105,"line":143},[103,765,766],{"class":113},"    ft_print_numbers();\n",[103,768,769],{"class":105,"line":149},[103,770,771],{"class":113},"    return (0);\n",[103,773,774],{"class":105,"line":176},[103,775,211],{"class":113},[103,777,778],{"class":105,"line":182},[103,779,780],{"class":113},"EOF\n",[103,782,783,786,789,792,795,798,800,803],{"class":105,"line":208},[103,784,785],{"class":158},"cc",[103,787,788],{"class":190}," -Wall",[103,790,791],{"class":190}," -Wextra",[103,793,794],{"class":190}," -Werror",[103,796,797],{"class":113}," ex03\u002Fft_print_numbers.c",[103,799,737],{"class":113},[103,801,802],{"class":190}," -o",[103,804,805],{"class":113}," \u002Ftmp\u002Fex03\n",[103,807,808],{"class":105,"line":214},[103,809,810],{"class":158},"\u002Ftmp\u002Fex03\n",[89,812,814],{"id":813},"descargar","Descargar",[816,817,818],"ul",{},[819,820,821],"li",{},[547,822,824],{"href":823,"download":60},"..\u002Fcode\u002Fft_print_numbers.c",[48,825,60],{},[827,828,829],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":99,"searchDepth":117,"depth":117,"links":831},[832,833,843,844,845,846,847,848],{"id":91,"depth":117,"text":92},{"id":344,"depth":117,"text":345,"children":834},[835,836,837,838,839,840,841,842],{"id":349,"depth":124,"text":352},{"id":369,"depth":124,"text":372},{"id":385,"depth":124,"text":388},{"id":394,"depth":124,"text":397},{"id":413,"depth":124,"text":416},{"id":430,"depth":124,"text":433},{"id":454,"depth":124,"text":457},{"id":463,"depth":124,"text":469},{"id":480,"depth":117,"text":481},{"id":553,"depth":117,"text":554},{"id":565,"depth":117,"text":566},{"id":635,"depth":117,"text":636},{"id":718,"depth":117,"text":719},{"id":813,"depth":117,"text":814},"Los diez dígitos y la conversión de número a carácter.","md",{},"\u002Fex03",{"title":5,"description":849},"ex03","2yzo74_DDC9qe1ZzRwgYQGlk8ENKRU5u0vc2-VQDXLQ",1793539815757]