1 #include "../c2html.h"
  2 #include <stdbool.h>
  3 
  4 int main(void) {
  5 
  6     const char *css_file = "../../style.css";
  7     const char *js_file = NULL;
  8 
  9     C2HTML_OBJ(index, css_file, js_file);
 10 
 11     setup_file(&index, "Primeiro Programa em C");
 12 
 13     custom_tag("center");
 14     custom_tag("h1");
 15     add_text("Seu primeiro programa em C");
 16     custom_tag("h1", .close = true);
 17     custom_tag("center", .close = true);
 18     custom_tag("hr");
 19 
 20     custom_tag("div", .css_class = "centered");
 21     custom_tag("div", .css_class = "justified");
 22 
 23     custom_tag("table", .css_class = "center");
 24     custom_tag("tr align");
 25     {
 26         custom_tag("td");
 27 
 28         span("Olá, mundo!", .css_class = "big");
 29         br();
 30         br();
 31 
 32         add_text("Objetivo", .strong = true);
 33         add_text("Criar um programa que escreva \"Olá, mundo!\" na tela.");
 34         br();
 35 
 36         add_text("O famoso programa de computador \"Olá, mundo!\", ou mais comumente \"Hello, World!\"", .no_br = true);
 37         add_text(" é um programa comumente usado para exempos e testes simples.", .strong = true);
 38         br();
 39 
 40         add_text("Por onde começar?", .strong = true);
 41         add_text("Começa-se criando um arquivo de texto com a extenção ", .no_br = true);
 42         add_text(".c", .strong = true);
 43         br();
 44 
 45         add_text("Como é um programa de Olá mundo?", .strong = true);
 46         add_text("Um programa de olá mundo moderno em C se parece com isso:");
 47         br();
 48 
 49         custom_tag("div", .css_class = "rounded-box");
 50         {
 51             span("#include ", .css_class = "StorageClass");
 52             span("&ltstdio.h&gt", .css_class = "String");
 53             br();
 54             br();
 55 
 56             span("int ", .css_class = "Type");
 57             span("main(");
 58             span("void", .css_class = "Type");
 59             span(") {");
 60             br();
 61             br();
 62             span("&nbsp;    printf(");
 63             span("\"Hello, World!", .css_class = "String");
 64             span("\\n", .css_class = "StorageClass");
 65             span("\"", .css_class = "String");
 66             span(");");
 67             br();
 68             br();
 69             span("&nbsp;    return ", .css_class = "StorageClass");
 70             span("0", .css_class = "Number");
 71             span(";");
 72             br();
 73             span("}");
 74         }
 75         custom_tag("div", .close = true);
 76         br();
 77 
 78         add_text("Explicação:", .strong = true);
 79         br();
 80 
 81         span("#include ", .css_class = "StorageClass");
 82         span("&ltstdio.h&gt", .css_class = "String");
 83         br();
 84         br();
 85 
 86         add_text("Essa linha de código é responsavel por incluir a ", .no_br = true);
 87         add_text("biblioteca padrão de entrada e saída, ", .strong = true);
 88         /* STanDart Input and Output library*/
 89         add_text("(", .no_br = true);
 90         add_text("ST", .strong = true, .no_br = true);
 91         add_text("an", .no_br = true);
 92         add_text("D", .strong = true, .no_br = true);
 93         add_text("art ", .no_br = true);
 94         add_text("I", .strong = true, .no_br = true);
 95         add_text("nput and ", .no_br = true);
 96         add_text("O", .strong = true, .no_br = true);
 97         add_text("utput library)");
 98 
 99         add_text("Que é uma das bibliotecas padrão que servem para controlar a ", .no_br = true);
100         add_text("Entrada (input), e saída (output) de informações do nosso programa via terminal;");
101         add_text("Nesse exemplo, usamos somente a saída, escrevendo para a tela.");
102         br();
103         br();
104 
105         span("int ", .css_class = "Type");
106         span("main(");
107         span("void", .css_class = "Type");
108         span(") {");
109         br();
110         br();
111 
112         add_text("Essa linha, define a função ", .no_br = true);
113         add_text("main ", .strong = true, .no_br = true);
114         add_text("(principal), do nosso programa.");
115         add_text("É por ela onde o computador começa a executar o nosso programa.");
116         add_text("Definimos tambem que a função principal retorna um numero inteiro, e não aceita argumentos.");
117         br();
118         br();
119 
120         add_text("{", .strong = true, .no_br = true);
121         add_text(" e ", .no_br = true);
122         add_text("}", .strong = true);
123         add_text("Server para delimitar um \"escopo\", nesse caso, são usadas para delimitar a função principal");
124         br();
125         br();
126 
127         span("printf(");
128         span("\"Hello, World!", .css_class = "String");
129         span("\\n", .css_class = "StorageClass");
130         span("\"", .css_class = "String");
131         span(");");
132         br();
133         br();
134 
135         add_text("Nessa linha, estamos chamando a função ", .no_br = true);
136         add_text("printf", .strong = true, .no_br = true);
137         add_text(", que escreve textos formatados para o terminal ou linha de comando");
138         add_text("Aqui, passamos \"Hello, World!\\n\" como argumento para a função.");
139         add_text("o diretivo ", .no_br = true);
140         add_text("\\n", .strong = true, .no_br = true);
141         add_text(" indica, que, ao escrever a mensagem na tela, a proxima mensagem deve ser escrita em uma linha nova.");
142         br();
143         br();
144 
145         span("return ", .css_class = "StorageClass");
146         span("0", .css_class = "Number");
147         span(";");
148         br();
149         br();
150 
151         add_text("Essa linha indica ao programa que a função principal deve retornar 0");
152         add_text("A função principal tem uma caracteristica especial, que, ao retornar, o programa termina sua execução");
153         add_text("O valor 0, tem significado especial, nesse caso, ele indica que ");
154         add_text("não houve erro algum durante a execução, e tudo ocorreu corretamente", .strong = true);
155         br();
156         br();
157 
158         custom_tag("td", .close = true);
159 
160         /*--------------------*/
161         custom_tag("td width=50px", .in_line = true);
162         /*--------------------*/
163         custom_tag("td");
164         add_img("../../images/hello_world.png", .width = 200);
165         custom_tag("td", .close = true);
166     }
167     custom_tag("tr", .close = true);
168     custom_tag("table", .close = true); /* center table */
169 
170     span("O primeiro Hello, World! em C", .css_class = "big");
171     br();
172     add_text("Aqui temos o primeiro programa de Hello, World! escrito em C, em um papel, e assinado por um de seus criadores");
173     custom_tag("center");
174     add_img("../../images/hello_world_papel.png", .width = 500);
175     custom_tag("center", .close = true);
176 
177     add_text("Algumas diferenças notáveis", .strong = true);
178     add_text("Nas primeiras verções do C, toda variavel que não tinha um tipo especificado, automaticamente emplicava ", .no_br = true);
179     add_text("int", .strong = true);
180     add_text("Não era nessesario afirmar que a função principal não aceita argumentos, isso viria a causar problemas futuramente.");
181     add_text("Não era necessario incluir a biblioteca stdio.h, porque todo seu conteudo era embutido em todo programa, ", .no_br = true);
182     add_text("que futuramente viria causar problemas para plataformas com menor suporte a biblioteca padrão.");
183     add_text("Não era necessario retornar 0 explicitamente, o que pode causar erros de direcionalidade atualmente.");
184     add_text("Hoje em dia, é preferivel que se diga explicitamente o que você quer ou não incluso no seu programa.");
185 
186     br();
187     custom_tag("hr");
188     br();
189 
190     custom_tag("table", .css_class = "center");
191     custom_tag("tr align");
192     {
193         add_text("Programas em C não são sómente para escrever texto e fazer caulculos simples", .strong = true);
194         br();
195 
196         add_text("Por exemplo, Essa página, qual você esta lendo nesse momento, apesar de atualmente ser feita em ", .no_br = true);
197         add_text("html ", .strong = true, .no_br = true);
198         add_text("e ", .no_br = true);
199         add_text("css", .strong = true, .no_br = true);
200         add_text(", as linguagens de páginas da web, esse website foi ", .no_br = true);
201         add_text("gerado em C usando uma biblioteca desenvolvida especialmente para esse projeto.");
202 
203         add_text("Você pode conferir o código usado para gerar essa pagina ", .no_br = true);
204         custom_tag("a target=\"_blank\" href=\"codigo_pagina.html\"", .in_line_text = "aqui");
205         add_text(".");
206     }
207     custom_tag("tr", .close = true);
208     custom_tag("table", .close = true); /* center table */
209 
210     custom_tag("div", .close = true);
211     custom_tag("div", .close = true);
212 
213     end_file(&index);
214     return 0;
215 }