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("<stdio.h>", .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(" 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(" 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("<stdio.h>", .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
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);
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);
209
210 custom_tag("div", .close = true);
211 custom_tag("div", .close = true);
212
213 end_file(&index);
214 return 0;
215 }