# data[].attributes.attachment_caption
LC0310 Arquitetura Organizacao Computadores 2020 1 1 

# data[].attributes.body
http://www.ic.uff.br/~aconci/evolucao.html#:~:text=Em 1946, surge o Eniac,realiza 4.500 cálculos por segundo

# data[].attributes.attachment_caption
A Segunda Geração de Computadores de Alto Desempenho da COPPe/UFRJ

# data[].attributes.body
https://www.fortics.com.br/inteligencia-artificial-e-ai-por-onde-comecar/

# data[].attributes.body
link pdf> https://www.cin.ufpe.br/~gtsa/Periodo/PDF/4P/SI.pdf

# data[].attributes.body
Link> https://www.youtube.com/watch?v=N0SY3EgVIio

# data[].attributes.attachment_link.title
A Revolução das Inteligências Artificiais

# data[].attributes.headline
Artigo: Inteligência Artificial: Conceitos e Aplicações

# data[].attributes.subject
Artigo: Inteligência Artificial: Conceitos e Aplicações

# data[].attributes.body
Autor: DENNIS DOS SANTOS GOMES

# data[].attributes.attachment_link.readable_text
Na Era da Informação, o desenvolvimento de softwares é uma das atividades mais valorizadas no mercado de trabalho.

Afinal, a internet e a computação assumem um protagonismo cada vez maior em nosso cotidiano.

A cada dia que passa, novas soluções tecnológicas surgem para mudar a maneira como fazíamos determinada tarefa.

É uma transformação digital e cultural, pois incita uma nova mentalidade na população em geral, mas principalmente nos empreendedores.

Aqueles que não entenderem a importância do software em seu negócio - seja qual for sua área de atuação - tendem a ficar para trás.

Neste texto, vamos abordar os seguintes tópicos:

O que é desenvolvimento de softwares?

O que é um sistema computacional?

Como funciona o desenvolvimento de softwares?

Principais linguagens do desenvolvimento de software

Conheça os tipos de metodologias de desenvolvimento

Principais etapas para o desenvolvimento de softwares

Levantamento de Requisitos

Análise de Requisitos

Análise Financeira

Produção

Testes

Implementação

7 dicas para iniciar seu projeto de desenvolvimento de softwares.

Esse é o conteúdo que você precisa para entrar de cabeça no mundo dos softwares.

Boa leitura!

O que é desenvolvimento de softwares?

Desenvolvimento de softwares é a atividade de criar programas de computação, executada por um desenvolvedor ou grupo de desenvolvedores.

Parece uma definição um tanto óbvia, não é mesmo? Mas você sabe como isso é feito ou, antes disso, o que é um software?

O software é um produto virtual, que consiste essencialmente em um conjunto de códigos - instruções escritas em determinada linguagem da computação.

Quando o usuário vai utilizar um software, porém, ele não enxerga códigos.

Isso porque essas instruções vão ser traduzidas pela tela do equipamento eletrônico e apresentadas de modo diferente ou até mesmo materializadas em ações em alguns tipos de aparelhos.

Os desenvolvedores (ou "devs", no jargão da categoria) são programadores, ou seja, eles escrevem o programa a partir dos já referidos códigos.

Mas nem todo programador é desenvolvedor.

Porque essa alcunha é atribuída aos profissionais que participam de todo o processo de desenvolvimento de softwares.

Não basta, portanto, apenas escrever códigos.

O desenvolvedor precisa saber conduzir um projeto, desde a concepção, entendendo quais são as necessidades do cliente.

Um trabalho que envolve ouvir, colher informações, fazer protótipos, testar, ajustar, homologar e implementar.

O desenvolvimento de softwares é uma atividade complexa, que exige bastante conhecimento técnico.

Daí o alto valor agregado da função.

O que é um sistema computacional?

O software, ou programa, é uma das partes que compõem um sistema computacional. A outra é o hardware.

Enquanto o software é, como acabamos de explicar, uma sequência de instruções codificadas, o hardware é o dispositivo eletrônico que vai receber essas instruções e traduzi-las em um formato que seja útil para o usuário.

Dessa forma, o software é a parte lógica e o hardware a parte física, que serve como interface entre o código e o usuário.

Mas quando falamos em sistema computacional, a referência é ao conjunto de hardwares capaz de processar as informações de um software.

O sistema computacional tem o objetivo de dar suporte a serviços de automação de tarefas ou apoiar atividades dos usuários com o processamento de informações.

Como funciona o desenvolvimento de softwares?

Ao descrever o trabalho de um desenvolvedor, já deve ter ficado claro que o desenvolvimento de softwares é um processo complexo.

Ele envolve várias etapas entre a concepção do projeto - seja um projeto pessoal ou uma demanda recebida de um cliente - e a sua conclusão.

Também se relaciona, principalmente quando se trata de uma equipe de desenvolvedores, a uma metodologia de trabalho para a gestão do projeto.

Detalharemos esses assuntos - as etapas e metodologias usadas no desenvolvimento de software - mais à frente.

Nada disso teria utilidade sem o código em si. Só se pode dar vida a um software, portanto, com instruções escritas em uma determinada linguagem.

O que são essas linguagens? São padrões de instruções reconhecíveis em determinados sistemas e dispositivos.

Utilizando as instruções certas de determinada linguagem, é possível fazer a mágica de transformar palavras em ações ou outros elementos na tela de um computador, tablet ou smartphone.

Vale destacar que nem todos os ambientes aceitam as mesmas linguagens.

É como fazer turismo: em alguns países, só sabendo determinado idioma você vai conseguir se comunicar.

Principais linguagens do desenvolvimento de software

No parágrafo anterior, comparamos as linguagens de programação com idiomas falados em diferentes países do mundo, mas há uma distinção importante a ser feita.

As linguagens de que estamos falando aqui servem no mundo inteiro.

São os dispositivos e sistemas que não vão aceitar necessariamente todas as linguagens.

A questão é que, dentro de uma linguagem, os mesmos comandos serão utilizados no mundo todo para dar determinadas instruções.

Por isso, é bom que o programador tenha um conhecimento básico em inglês, pois esse é o idioma base na criação da sintaxe da programação.

Sem mais delongas, vamos agora apresentar algumas das linguagens mais usadas no mundo todo para o desenvolvimento de software.

Java

Uma das linguagens mais usadas no mundo, é muito utilizada em ambientes corporativos e para desenvolver aplicativos para Android em tablets e smartphones.

JavaScript

Não confunda com a linguagem Java. Essa é completamente diferente, muito utilizada principalmente no frontend, para criar interatividade em aplicações da web.

Python

É uma linguagem bastante recomendada para aqueles que estão começando a se aventurar no mundo da programação, por ser intuitiva, de fácil aprendizado e de código aberto.

C++

Uma variação da linguagem C bastante popular no desenvolvimento de softwares mais pesados, como games e sistemas de gestão integrados.

PHP

Linguagem utilizada principalmente no backend de sites, na integração entre as informações de uma página da web e um banco de dados MySQL.

Conheça os tipos de metodologias de desenvolvimento

As metodologias de desenvolvimento são conjuntos de práticas pensadas para coordenar o trabalho de criação de softwares.

Projetos relevantes, como mostramos antes, envolvem muitas etapas e muitas pessoas. Por isso, não podem ser conduzidos de modo aleatório.

É preciso coordenar quem faz o quê, quando, como e onde. E não basta definir tudo isso em uma reunião, ficar na palavra e deixar assim até o fim do projeto.

As etapas avançam e as necessidades mudam, tudo é muito dinâmico.

Nesse contexto entram as metodologias de desenvolvimento de software, para dar ordem ao modo como o trabalho será conduzido e acompanhado.

Claro que tudo deve ser planejado com antecedência: a metodologia utilizada, quem serão as pessoas responsáveis, quais os prazos, etc.

Seja qual for a metodologia escolhida, o trabalho envolve, basicamente, as seguintes figuras:

Desenvolvedores: aqueles que receberão os requisitos e construirão o software

Gerente de projeto: responsável por controlar o andamento do trabalho, fazendo o possível para que as entregas sigam dentro dos prazos planejados

Podemos dividir as metodologias entre tradicionais e ágeis.

Nas tradicionais, como a metodologia estruturada, modelo em cascata e programação orientada a objetos, o escopo é pouco flexível.

Por isso, elas têm dado lugar a metodologias ágeis, uma exigência dos tempos de transformação digital, em que é preciso ter flexibilidade, etapas menores e feedbacks e alinhamento constantes.

Principais etapas para o desenvolvimento de softwares

A seguir, vamos falar um pouco sobre as principais etapas de um processo de desenvolvimento de softwares.

Dependendo da metodologia utilizada, pode haver uma divisão diferente das etapas, mas todas as fases descritas abaixo são essenciais para começar e terminar um projeto.

Levantamento de Requisitos

Todo projeto de criação de um software deve começar por aqui.

Ser negligente nessa primeira etapa pode colocar todo o trabalho a perder.

O risco de alguma etapa posterior empacar porque os requisitos não foram levantados é grande.

O levantamento de requisitos existe para saber quais são as reais necessidades dos clientes.

Requisitos são condições, ou seja, exigências que determinam que o software precisará seguir determinados padrões e especificações.

Podem ser requisitos funcionais (o que o software deve fazer), requisitos de usabilidade ou questões de confiabilidade, portabilidade e segurança.

Não é exagero dizer que essa etapa é de responsabilidade compartilhada entre cliente e gerente de projeto.

Pois cabe ao cliente fazer suas exigências, mas aquele que coordenará a equipe de desenvolvedores também precisa se esforçar para compreender totalmente as necessidades e problemas a serem resolvidos de quem o está contratando.

Análise de Requisitos

Após o levantamento dos requisitos, a fase seguinte consiste em avaliá-los, com o intuito de analisar a viabilidade do trabalho.

Primeiro, é preciso escrutinar as informações recebidas.

Está tudo claro ou há erros, contradições, ambiguidades, dados incompletos ou requisitos ocultos nas entrelinhas?

A partir daí, a equipe analisa se é possível realizar o serviço dentro das condições estabelecidas.

É bom destacar que, nessa etapa, estão em avaliação apenas as condições técnicas.

Então, para seguir adiante, é preciso que a equipe seja capaz de desenvolver o software com excelência, considerando todos os requisitos levantados.

Pode acontecer também de os requisitos serem tais que tornam o trabalho inviável, por ser tecnicamente irrealizável ou por não valer a pena tamanho esforço.

A partir dessa avaliação, conversa-se novamente com o cliente para, se necessário, fazer os ajustes necessários na lista de requisitos.

Análise Financeira

Agora que já se sabe exatamente quais são os requisitos para o projeto e sua complexidade, chegou a hora de estimar os custos que estarão envolvidos no serviço.

Qual a quantidade de recursos financeiros e humanos necessários para desenvolver o software dentro das condições requisitadas?

Quanto maior a complexidade do projeto, maior serão o custo para o fornecedor e o preço cobrado ao contratante, é claro.

Afinal, demandará mais tempo e mão de obra mais qualificada.

Aqui, como na maioria das empresas, deve haver margem para negociação - quem sabe até a eliminação de determinados requisitos para que o preço fique mais baixo.

Quaisquer que sejam as condições negociadas, elas precisam ser documentadas, registradas em um contrato que será assinado pelas duas partes.

Será a garantia mútua, pois nele constarão as obrigações que terão, durante o projeto, tanto do prestador de serviço quanto do cliente.

Produção

A etapa de produção pode se dividir em várias, de acordo com a complexidade do projeto e metodologia escolhida para conduzi-lo.

O desenvolvimento de grandes sistemas e softwares costuma prever entregas em módulos.

Isso quer dizer que, em vez de concluir tudo de uma vez, são liberadas, testadas e aprovadas diferentes partes do projeto, aos poucos.

As metodologias ágeis também preveem a aprovação por partes, mesmo em projetos que não são tão complexos, o que ajuda a acelerar o aprendizado, amadurecer a relação com o cliente e gerar insights valiosos para o resto do projeto.

A fase de produção pode envolver um momento de arquitetura de software, com uma apresentação abstrata da solução que será desenvolvida.

Depois de aprovada essa arquitetura, parte-se para a codificação, fase na qual os desenvolvedores trabalham para dar luz ao programa.

Testes

Um projeto jamais vai para o ar ou para o mercado sem passar por um período de testes.

É preciso submeter os códigos à utilização de usuários que vão testar todas suas funções.

Essa é a hora de encontrar erros.

Uma dica para quem está começando: é impossível evitá-los. Sim, os erros vão sempre aparecer.

O segredo é testar bem todas as possibilidades antes de lançar o produto, para diminuir a probabilidade de encontrar esses erros após a implementação.

Por isso, os testes precisam emular o uso real da aplicação, colocando-se no lugar da pessoa para quem ela será destinada.

É importante testar também a usabilidade, o que deve ser feito com testadores especializados ou usuários reais, uma vez que os desenvolvedores já estarão com o "olhar viciado".

Recomenda-se, ainda, documentar os testes.

Assim, caso surja, posteriormente, algum problema envolvendo uma funcionalidade já testada, haverá pistas a mais para encontrar a solução.

Implementação

Agora, sim, o projeto pode ser entregue.

Mas calma lá: ainda deve ocorrer mais uma etapa de testes, para se certificar de que tudo está funcionando da maneira correta.

A implementação também pode ocorrer em diferentes fases.

Dependendo da necessidade, pode haver sessões de treinamento para que o cliente aprenda a utilizar a solução que foi criada.

O contrato pode prever, ainda, o trabalho de manutenção futuro, caso sejam descobertos novos problemas com o passar do tempo.

7 dicas para iniciar seu projeto de desenvolvimento de softwares

Está prestes a encarar um projeto de desenvolvimento de software?

A seguir, apresentamos sete dicas para que o resultado saia com qualidade.

1. Entenda o negócio

Em todas as áreas do mercado, é cada vez mais importante que os profissionais desenvolvam a capacidade de pensar estrategicamente.

O desenvolvedor de destaque, portanto, não entende apenas de código.

Ele deve conseguir entender qual é o "core" do cliente, como ele gera valor.

2. Entenda a necessidade

Após entender o macro do negócio do cliente, o desenvolvedor precisa se debruçar na necessidade particular que motiva o desenvolvimento do software ou sistema.

Para que ele precisa disso?

Qual problema quer resolver ou oportunidade deseja explorar?

3. Amplie seus conhecimentos

Um desenvolvedor nunca pode parar de estudar, seja fazendo cursos ou por conta própria, buscando aprender novas linguagens ou maneiras de utilizá-las.

O mundo da tecnologia é muito dinâmico.

O tempo todo surgem novas tendências que o programador e o gerente de projetos precisam conhecer.

4. Aposte nas metodologias ágeis

Já deve ter ficado claro antes, mas não faz mal ressaltar: as metodologias ágeis estão mais alinhadas com as necessidades atuais do mercado.

É assim porque elas garantem aprendizado rápido e projetos mais flexíveis, em contraposição com os processos engessados que eram regra em outros tempos.

5. Dedique-se na arquitetura

Existem desenvolvedores que têm verdadeira paixão por programar e, por isso, enxergam a arquitetura do software como uma etapa a mais antes de poderem se debruçar nos códigos.

Mas essa fase deve ser conduzida com a máxima dedicação, pois aprovar uma arquitetura bem detalhada pode poupar várias horas de retrabalho no futuro.

6. Invista em UX

Outro mantra da transformação digital é " foco no cliente ".

Quem conduz o desenvolvimento de softwares precisa entender que não está trabalhando para si próprio, e sim para o usuário que vai utilizar as soluções que ele cria.

Nesse sentido, práticas de user experience (UX) ajudam muito a chegar em um produto final que agrade às pessoas a quem ele realmente importa.

7. Monitore

Essa é uma dica que não precisa ser considerada no início do trabalho, mas é bom já ter em mente.

Cultive o hábito de acompanhar os projetos nos quais você trabalhou.

O que deu certo e o que deu errado? Essa é a melhor fonte de aprendizado que existe.

Conclusão

Os softwares mudaram e seguem mudando o mundo, transformando comportamentos e mentalidades. E também a maneira que as empresas funcionam.

Mesmo que você não trabalhe diretamente com o desenvolvimento de softwares, ter um conhecimento básico sobre o assunto é de grande utilidade.

Porque os programas de computador e aplicativos para dispositivos móveis estão aí para tornar nossa vida mais fácil.

Se você é um administrador e dispensa esse tipo de facilidade, fique sabendo que seu concorrente pode pensar diferente.

O resultado qual é? Ele terá uma vantagem competitiva, pois softwares bem utilizados ajudam a tornar o negócio mais organizado e eficiente.

Está convencido sobre a importância do desenvolvimento de softwares? Então aventure-se nessa área. Conheça os cursos que a FIA oferece que podem ser de imensa ajuda e desenvolva a sua ideia!

Caso tenha surgido uma dúvida ou você queira dar uma opinião, deixe um comentário abaixo. E compartilhe este artigo nas redes sociais.

# data[].attributes.attachment_link.title
Desenvolvimento de Softwares: O que é, Como Funciona e Dicas - FIA

# data[].attributes.attachment_link.description
Na Era da Informação, o desenvolvimento de softwares é uma das atividades mais valorizadas no mercado de trabalho. Afinal, a internet e a computação assumem [...]

# data[].attributes.body
CC: https://youtu.be/5bX6I2g_lwY

# data[].attributes.attachment_link.readable_text
C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela Organização Internacional para Padronização (ISO), criada em 1972 por Dennis Ritchie na empresa AT&T Bell Labs para desenvolvimento do sistema operacional Unix (originalmente escrito em Assembly).

C é uma das linguagens de programação mais populares e existem poucas arquiteturas para as quais não existem compiladores para C. C tem influenciado muitas outras linguagens de programação (por exemplo, a linguagem Java), mais notavelmente C++, que originalmente começou como uma extensão para C.

A linguagem C encontra-se na versão/padrão internacional C17 (ISO/IEC 9899:2018) lançada em junho de 2018, substituindo a versão C11 (ISO/IEC 9899:2011), disponível em ISO e IEC e com suporte para GCC8 e Clang LLVM6.

Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C, respectivamente

O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973. De acordo com Ritchie, o período mais criativo ocorreu em 1972. A linguagem foi chamada "C", porque suas características foram obtidas a partir de uma linguagem anteriormente chamada de " B", que de acordo com Ken Thompson era a versão reduzida da linguagem de programação BCPL.

A versão original PDP-11 do sistema Unix foi desenvolvido em Assembly. Em 1973, com a adição dos tipos struct, a linguagem C tornou-se poderosa o suficiente para que a maior parte do kernel do Unix fosse reescrito em C. Este foi um dos primeiros núcleos de sistemas operacionais implementados numa linguagem diferente da linguagem Assembly. Em 1977, foram feitas novas mudanças por Ritchie e Stephen C. Johnson para facilitar a portabilidade do sistema operacional Unix. O Portable C Compiler de Johnson serviu de base para várias implementações de C em novas plataformas.

C K&R

A linguagem C não teve um sucesso imediato após a sua criação e o seu uso ficou restrito a alguns laboratórios, mas em 1978 Brian Kernighan e Dennis Ritchie lançam o livro The C Programming Language que serviu de tutorial e mudou a história da programação em C. De fato essa primeira versão da linguagem é conhecida como "C Kernighan e Ritchie" ou apenas "C K&R".

Esse livro, conhecido pelos programadores de C como "K&R", serviu durante muitos anos como uma especificação informal da linguagem. A versão da linguagem C que ele descreve é usualmente referida como " K&R C". A segunda edição do livro cobriu o padrão posterior, o ANSI C. K&R C introduziu as seguintes características na linguagem:

Biblioteca padrão de E/S

Tipo de dados struct

Tipo de dados long int

Tipo de dados unsigned int

O operador =+ foi alterado para +=, e =- para -= (o analisador léxico do compilador fazia confusão entre i =+ 10 e i = +10. O mesmo acontecia com =-)

K&R C é frequentemente considerado a parte mais básica da linguagem, cujo suporte deve ser assegurado por um compilador de C. Durante muitos anos, mesmo após a introdução do padrão ANSI C, K&R C foi considerado o "menor denominador comum", em que programadores de C se apoiavam quando uma portabilidade máxima era desejada, já que nem todos os compiladores eram actualizados o suficiente para suportar o padrão ANSI C.

Nos anos que se seguiram à publicação do K&R C, algumas características "não oficiais" foram adicionadas à linguagem, suportadas por compiladores da AT&T e de outros vendedores. Estas incluíam:

Funções void e tipos de dados void *

Funções que retornam tipos struct ou union

Campos de nome struct num espaço de nome separado para cada tipo struct

Atribuição a tipos de dados struct

Qualificadores const para criar um objecto só de leitura

Biblioteca padrão, que incorpora grande parte da funcionalidade implementada por vários vendedores

Enumerações

Cálculos de ponto-flutuante em precisão simples (no K&R C, os cálculos intermediários eram feitos sempre em double, porque era mais eficiente na máquina onde a primeira implementação do C foi feita)

Durante os finais da década de 1970, a linguagem C começou a substituir a linguagem BASIC como a linguagem de programação de microcomputadores mais usada. Durante a década de 1980, foi adaptada para uso no PC IBM, e a sua popularidade começou a aumentar significativamente. Ao mesmo tempo, Bjarne Stroustrup, juntamente com outros nos laboratórios Bell, começou a trabalhar num projecto onde se adicionavam extras para programação orientada por objectos à linguagem C. A linguagem que eles produziram, chamada C++, é nos dias de hoje a linguagem de programação de aplicações mais comum no sistema operativo Windows da companhia Microsoft. A linguagem C permanece a mais popular no mundo Unix.

Em 1983, o instituto norte-americano de padrões ( ANSI) formou um comité, X3J11, para estabelecer uma especificação do padrão da linguagem C. Após um processo longo e árduo, o padrão foi completo em 1989 e ratificado como ANSI X3.159-1989 "Programming Language C". Esta versão da linguagem é frequentemente referida como ANSI C. Em 1990, o padrão ANSI C, após sofrer umas modificações menores, foi adotado pela Organização Internacional para Padronização (ISO) que cria o grupo de trabalho para cuidar da especificação da linguagem, denominado WG14, assim foi renomeada para ISO/IEC 9899:1990, também conhecido como C89 e C90. Um dos objetivos do processo de padronização ANSI C foi o de produzir um sobreconjunto do K&R C, incorporando muitas das características não oficiais subsequentemente introduzidas. Entretanto, muitos programas tinham sido escritos e que não compilavam em certas plataformas, ou com um certo compilador, devido ao uso de bibliotecas de funções não padrão e ao fato de alguns compiladores não aderirem ao ANSI C.

Após o processo da padronização ANSI, as especificações da linguagem C permaneceram relativamente estáticas por algum tempo, enquanto a linguagem C++ continuou a evoluir. (em 1995, a Normative Amendment 1 criou uma versão nova da linguagem C mas esta versão raramente é tida em conta.) Contudo, o padrão foi submetido a uma revisão nos finais da década de 1990, levando à publicação da norma ISO 9899:1999 em 1999. Este padrão é geralmente referido como "C99" e foi adoptado como um padrão ANSI em março de 2000. As novas características do C99 incluem:

Funções em linha

Remoção de restrições sobre a localização da declaração de variáveis (como em C++)

Adição de vários tipos de dados novos, incluindo o long long int (para minimizar problemas na transição de 32-bits para 64-bits), um tipo de dados boolean explicito (chamado _Bool) e um tipo complex que representa números complexos

Vetores de dados de comprimento variável (o vetor pode ter um tamanho diferente a cada execução de uma função, mas não cresce depois de criado)

Suporte oficial para comentários de uma linha iniciados por //, emprestados da linguagem C++

Várias funções de biblioteca novas, tais como snprintf()

Vários ficheiros-cabeçalho novos, tais como stdint.h

O interesse em suportar as características novas de C99 parece depender muito das entidades. Apesar do GCC e vários outros compiladores suportarem grande parte das novas características do C99, os compiladores mantidos pela Microsoft e pela Borland suportam pouquíssimos recursos do C99, e estas duas companhias não parecem estar muito interessadas em adicionar tais funcionalidades, ignorando por completo as normas internacionais. A Microsoft parece preferir dar mais ênfase ao C++.

Em 2007, se iniciou o trabalho em antecipação de outra revisão do padrão de C, informalmente chamada de C11 ou C1X. O comité dos padrões de C adotou regras para limitar a inserção de novos recursos que não tenham ainda sido testados por implementações existentes.

Em dezembro de 2011 foi publicada a versão estável da especificação, como ISO/IEC 9899:2011.

Em 2017 começou a ser desenvolvida uma nova revisão do padrão C, informalmente chamada de C17, substituindo o C11. Esta revisão visou melhorar a revisão anterior sem introduzir nova funcionalidades na linguagem. Em junho de 2018 foi publicada a versão estável da especificação, como ISO/IEC 9899:2018. Como foi publicada em 2018, também é informalmente chamada de C18.

Atualmente está sendo desenvolvida a nova revisão do padrão C, que pretende incorporar novas funcionalidades à linguagem. Informalmente denominada C2x, deve ser finalizada em 2023 e se tornar C23.

C é uma linguagem imperativa e procedural para implementação de sistemas. Seus pontos de design foram para ele ser compilado, fornecendo acesso irrestrito à memória e baixos requerimentos do hardware. Também foi desenvolvido para ser uma linguagem de alto nível, para maior reaproveitamento do código. C foi útil para muitas aplicações que foram codificadas originalmente em Assembly.

Essa propriedade não foi acidental; a linguagem C foi criada com o objectivo principal em mente: facilitar a criação de programas extensos com menos erros recorrendo ao paradigma da programação procedural mas sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem. Para este fim, a linguagem C possui as seguintes características:

Uma linguagem extremamente simples, com funcionalidades não essenciais, tais como funções matemáticas ou manuseamento de ficheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas padronizada

A focalização no paradigma de programação procedural

Um sistema de tipos simples que evita várias operações que não fazem sentido

Uso de uma linguagem de pré-processamento para tarefas tais como a definição de macros e a inclusão de múltiplos ficheiros de código fonte

Ponteiros dão maior flexibilidade à linguagem

Acesso de baixo nível, através de inclusões de código Assembly no meio do programa C

Parâmetros que são sempre passados por valor para as funções e nunca por referência (É possível simular a passagem por referência com o uso de ponteiros)

Definição do alcance lexical de variáveis

Estruturas de variáveis, (structs), que permitem que dados relacionados sejam combinados e manipulados como um todo

Algumas características úteis, que faltam em C, podem ser encontradas em outras linguagens, que incluem:

Apesar da lista de características úteis que C possui não ser longa, isso não tem sido um impedimento à sua aceitação, pois isso permite que novos compiladores de C sejam escritos rapidamente para novas plataformas, e também permite que o programador permaneça sempre em controle do que o programa está a fazer. Isto é o que por várias vezes permite o código de C correr de uma forma mais eficiente que muitas outras linguagens. Tipicamente, só código de Assembly "afinado à mão" é que corre mais rapidamente, pois possui um controle completo da máquina, mas avanços na área de compiladores juntamente com uma nova complexidade nos processadores modernos permitiram que a diferença tenha sido rapidamente eliminada. Uma consequência da aceitação geral da linguagem C é que frequentemente os compiladores, bibliotecas e até interpretadores de outras linguagens sejam implementados em C.

C tem como ponto forte a sua eficiência, e é a linguagem de programação preferida para o desenvolvimento de sistemas e softwares de base, apesar de também ser usada para desenvolver programas de computador. É também muito usada no ensino de ciência da computação, mesmo não tendo sido projetada para estudantes e apresentando algumas dificuldades no seu uso. Outra característica importante de C é o seu código resultante em Assembly ter funcionamento idêntico ao código fonte, que permite que um projetista seja capaz de fazer algumas previsões de como o software irá se comportar ao ser executado.

O ponto negativo de C está na possibilidade do programador cometer erros graças a liberdade que a linguagem oferece. Por exemplo é possível acessar área de memória que não pertence a um vetor ao acessar um índice maior que seu tamanho, possibilitando que ocorra um buffer overflow. Isto acontece em C porque o dever de controlar a memória está nas mãos do programador. O motivo de C dar total controle para o programador é porque a linguagem foi projetada para programar o sistema operacional UNIX, onde havia a necessidade desse controle sobre a forma como o sistema iria funcionar.

C tem um sistema de tipos semelhante ao de alguns descendentes da linguagem ALGOL, tais como Pascal. Possui tipos para números inteiros de vários tamanhos com e sem sinal, números de ponto flutuante, caracteres e estruturas ( structs). C usa extensivamente ponteiros, um tipo muito simples de referência que guarda o endereço de memória da variável. O ponteiro pode ser desreferenciado, uma operação que busca o objeto que se encontra na morada da memória que o ponteiro possui, morada essa que pode ser manipulada através de aritmética de ponteiros. Durante o tempo de execução, o ponteiro é simplesmente uma morada de máquina tais como aquelas manipuladas em Assembly, mas em tempo de compilação possui um tipo complexo que indica o tipo do objecto para onde ele aponta, permitindo que se verifique o tipo de expressões, incluindo ponteiros. O tipo "string" (cadeia ou linha de texto) de C é simplesmente um ponteiro para um vetor de caracteres e alocação dinâmica de memória, descrita abaixo, é efetuada através de ponteiros.

Os ponteiros em C possuem um valor reservado especial, NULL, que indica que não estão a apontar para uma morada. O uso desse valor como morada é muito útil na construção de várias estruturas de dados, mas causa comportamento não definido (possivelmente uma falha de sistema) ao ser desreferenciado. Um ponteiro que possui o valor NULL é chamado ponteiro nulo. Os ponteiros são declarados (e desreferenciados) com um * (asterisco), portanto o tipo int* denota um ponteiro para variável(eis) que comporta(m) número(s) inteiro(s). A linguagem C também fornece um tipo especial de ponteiros, o void*, que se traduz num ponteiro que aponta para um objeto de tipo desconhecido.

A linguagem C também tem apoio em nível de linguagem para vetores estáticos (de dimensão fixa) de tipos. As disposições de tipos podem parecer ter mais que uma dimensão apesar de serem tecnicamente disposições de disposições de tipos. Em memória, tais estruturas são posicionadas com as linhas uma depois da outra (a alternativa seria armazenar os dados em colunas, usado em outras linguagens). O acesso a disposições de tipos é feito através de ponteiros e aritmética de ponteiros; o nome da disposição é tratado como se fosse um ponteiro que aponta para o início da disposição. Em certas aplicações não é razoável usarem-se disposições de tipos de dimensão fixa e por isso a alocação dinâmica de memória pode ser usada para criar disposições de tipos de dimensão variável.

Como a linguagem C é regularmente usada em programação de baixo-nível de sistemas, há casos em que é necessário tratar um número inteiro como sendo um ponteiro, um número de ponto flutuante como sendo um número inteiro ou um tipo de ponteiro como sendo outro. Para estes casos, a linguagem C fornece a capacidade de "moldagem" (também denominado "conversão de tipo" ou "casting"), uma operação que, caso seja possível, força a conversão de um objeto de um tipo para outro. Apesar de ser por vezes necessário, o uso de conversões de tipo sacrifica alguma segurança oferecida pelo sistema de tipos.

int

O tipo de dado int (inteiro) serve para armazenar valores numéricos inteiros. Existem vários tipos de inteiros, cada um de um tamanho diferente (dependendo do sistema operacional e/ou arquitetura do processador):

int, pode possuir 16 bits, 32 bits ou 64 bits

short int, deve possuir tamanho de no mínimo 16 bits e não pode ser maior que int

long int, deve possuir tamanho mínimo de 32 bits

long long int, deve possuir tamanho mínimo de 64 bits

Todos estes tipos de inteiros podem ainda ser declarados precedidos da cláusula unsigned, o que faz com que só suporte números positivos. Isto faz com que, com o mesmo tamanho, uma variável suporte mais números positivos do que um signed (todos os inteiros são signed por omissão).

char

O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso significa que o programa reserva um espaço de 8 bits na memória RAM ou em registradores do processador para armazenar um valor ( char de tamanho maior que 8 bits é permitido pela linguagem, mas os casos são raros). Com vetores do tipo char é possível criar cadeias de caracteres (strings).

float

O tipo de dado float serve para armazenar números de ponto flutuante, ou seja, com casas decimais. O padrão mais utilizado nos últimos 10 anos é o IEEE 754-1985.

double

O tipo de dado double serve para armazenar números de ponto flutuante de dupla precisão, normalmente tem o dobro do tamanho do float e portanto o dobro da capacidade. O padrão mais adotado também é o IEEE 754-1985.

struct

Em C podem ser usadas estruturas (chamados de registos em outras linguagens de programação). As estruturas são grupos de variáveis organizadas arbitráriamente pelo programador. Uma estrutura pode criar um novo tipo de variável caso typedef seja usado em sua declaração.

A linguagem de programação C++ foi originalmente derivada do C para suportar programação orientada a objetos. À medida que as linguagens C e C++ foram evoluindo independentemente, a divisão entre as duas veio a aumentar. O padrão C99 criou um número de características que entram em conflito. Hoje, as principais diferenças entre as duas linguagens são:

inline - em C++, funções em linha encontram-se no espaço global enquanto que em C encontram-se no espaço local. Por outras palavras, isso significa que, em C++, qualquer definição de qualquer função em linha (sem ser a respeito da sobrecarga de funções de C++) tem de estar em conformidade com a "regra de uma definição" da linguagem C++. Mas em C, a mesma função em linha pode ser definida de maneira diferente em diferentes arquivos (ou ficheiros)

A palavra-chave bool, igual à usada em C++, em C99 necessita que se inclua o ficheiro-cabeçalho <stdbool.h> (_Bool está sempre disponível). Padrões anteriores de C não definiam um tipo booleano e vários (e incompatíveis) métodos foram usados para simular um tipo booleano

Algumas características originalmente desenvolvidas em C++ também apareceram em C. Entre elas encontram-se:

protótipos de função (com declaração de tipos de parâmetros) e remoção do "int" implícito

comentários de linha, indicados por //; comentários de linha terminam com um carácter de nova-linha

a palavra-chave inline

tipagem mais forte

A linguagem de programação C

Programa Olá Mundo

A seguinte aplicação foi publicada na primeira edição de C de K&R, e tornou-se no programa de introdução padrão da maior parte dos livros sobre C. O programa envia o texto " Olá, Mundo!" para a saída padrão, que é normalmente o console, mas que também pode ser um ficheiro (ou arquivo), um outro dispositivo qualquer, ou até mesmo um bit bucket, dependendo de como a saída-padrão é mapeada na altura em que o programa é executado.

Apesar do programa acima correr corretamente, atualmente origina algumas mensagens de aviso quando compilado como C ANSI. Essas mensagens podem ser eliminadas efectuando umas pequenas alterações no programa original:

A primeira linha do programa é uma diretiva de pré-processamento #include, que causa com que o pré-processador substitua aquela linha pela totalidade do conteúdo do arquivo qual diretiva se refere. Neste caso o arquivo padrão stdio.h (que contém protótipos de funções para trabalho com entrada e saída) irá substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h encontra-se no local em que, quando da configuração do compilador, se definiu como padrão para localização dos ficheiros de inclusão ( header files, geralmente com a extensão .h).

A linha (não vazia) seguinte indica que uma função denominada main será definida. A função main tem um significado especial nos programas em C, pois é a função que é inicialmente executada (em inglês, entry point). Os caracteres { e } delimitam a extensão da função. O termo int define a função main como sendo uma função que retorna um número inteiro. O termo void indica que a função não aceita parâmetros. A função main, normalmente aceita parâmetros, que são passado pela linha de comando. Os compiladores e sistemas operacionais atuais reconhecem as seguintes declarações de main:

A linha seguinte "chama", ou executa uma função chamada puts; o arquivo incluído, stdio.h, contém a informação que descreve a forma como a função puts deve ser chamada. Nesta chamada, é passado à função puts um único argumento, a linha de texto constante "Olá, Mundo!". A função puts retorna um valor, um int, mas como não é usado, é descartado pelo compilador. O comando return retorna o valor 0 para o sistema, que é interpretado pelo mesmo como que a função main() foi executada e encerrada com sucesso (sem erros). Por fim, o caracter } indica o fim da função main. Note-se que texto rodeado por /* e */ (comentários de texto) é ignorado pelo compilador. Os compiladores que obedecem à norma C99 também aceitam como comentários as linhas de texto que são precedidos por //.

Pode ser compilado e executado com o seguinte comando (considerando que o GCC está instalado):

$ gcchello.c-ohello
$ ./hello

Pode ser compilado e executado com o seguinte comando:

$ gcc-lmtpk.c-otpk
$ ./tpk

-lm instrui o linker a juntar o módulo de matemática ( libm).

No exemplo seguinte, é criada uma estrutura composta por 3 membros de tipos diferentes. Os membros podem ser acessados com a seguinte sintaxe: estrutura.membro.

Ou, equivalente:

É possível omitir os nomes dos membros durante a inicialização:

# data[].attributes.attachment_link.title
C (linguagem de programação) - Wikipédia, a enciclopédia livre

# data[].attributes.attachment_link.description
C é uma linguagem de programação compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela Organização Internacional para Padronização (ISO), criada em 1972 por Dennis Ritchie na empresa AT&T Bell Labs para desenvolvimento do sistema operacional Unix (originalmente escrito em Assembly).

# data[].attributes.body
CC: https://publicdomainvectors.org/pt/vetorial-gratis/Peças-de-computador-desktop/75940.html

# data[].attributes.body
https://www.hostinger.com.br/tutoriais/diferenca-entre-html-e-html5

# data[].attributes.attachment_link.readable_text
O HTML é uma das linguagens de marcação mais comumente utilizadas. Trata-se de um sistema projetado para processar, definir e exibir textos ao incorporar anotações de tags e de caracteres dentro de arquivos estilizados. Isso permite que a manipulação do texto seja mais fácil para o computador. Mas o que é HTML5? Qual a diferença para o HTML? Neste artigo, vamos responder essa pergunta.

O Que é HTML?

A Linguagem de Marcação de Hipertexto (HTML) é a linguagem principal da web. Conhecida em inglês como Hypertext Markup Language, ela permite que os desenvolvedores desenhem como serão exibidos pelo navegador os elementos da página, como texto, hiperlinks e arquivos multimídia.

Essa linguagem funciona de modo estático, o que significa que você não pode criar uma página na internet dinâmica ou interativa usando o HTML. Ele apenas modifica os elementos estáticos de uma página na web, como cabeçalho de conteúdo, rodapé, posição de imagens, etc.

Para criar um site belo e interativo, você deve combinar o HTML com ao menos duas linguagens de front-end: Cascading Style Sheet (CSS) e JavaScript.

O HTML usa diversas tags, incluindo cabeçalhos, tabelas e parágrafos para definir as estruturas de uma página. Cada tag é definida usando a fórmula <A> e </A>. Elas são geralmente chamadas de tag de "abertura" e de "fechamento", respectivamente.

Por exemplo, se você quer mudar um texto em específico para itálico, você pode usar <i>digite seu texto aqui</i>. Seu navegador vai renderizar o conteúdo através dessas tags, e então exibi-lo na sua tela.

A primeira Hypertext Markup Language foi lançada em 1991 por Tim Berners-Lee. Essa criação teve muitas atualizações desde então, incluindo o HTML 2.0 em 1995, HTML 3.2 em 1997, HTML 4.01 em 1999 e XHTML em 2000. Atualmente, a versão mais nova do HTML é o HTML5, que foi lançado em 2014.

O HTML5 tem uma série de recursos adicionais em relação aos seus antecessores, como um suporte a armazenamento de mídias offline, elementos de conteúdo mais específicos (como rodapé, cabeçalho, navegação, etc.), doctype inline mais simples, áudio e suporte à incorporação de vídeo.

Principais Diferenças entre HTML e HTML5

A única coisa consistente sobre o campo da tecnologia da informação é que atualizações periódicas e mudanças são inevitáveis. Nenhum idioma é capaz de evitar atualizações ou novos lançamentos.

O HTML não é exceção. O HTML5 foi lançado com o objetivo principal de melhorar a experiência da World Wide Web para os desenvolvedores e os usuários finais. Como já mencionado, a maior vantagem que a versão 5 do HTML tem sobre seu antecessor não numerado é que ele tem suporte de áudio e vídeo de alto nível que não fazia parte das especificações de versão em HTMLs anteriores.

Outras diferenças entre HTML e HTML5 incluem:

SVG, canvas e outros gráficos vetoriais virtuais são suportados em HTML5, enquanto que em HTML o uso de gráficos vetoriais só era possível usando-se em conjunto com diferentes tecnologias como Flash, VML (Vector Markup Language) e Silverlight, etc.

O HTML5 usa bancos de dados SQL da Web, com cache de aplicativos para armazenamento temporário de dados. Enquanto isso, em HTML, apenas o cache do navegador pode ser utilizado para esse fim.

Outra diferença entre HTML e HTML5 que vale a pena mencionar é que a primeira não permite que o JavaScript funcione no navegador da Web (ele roda no segmento da interface do navegador), enquanto que o último oferece suporte completo para o JavaScript ser executado em segundo plano.

O HTML5 não é baseado no SGML, e isso permite que ele tenha regras de análise aprimoradas que proporcionam melhor compatibilidade.

Em HTML5, MathML inline e SVG podem ser usados ​​no texto enquanto que isto não era possível em HTML.

Alguns dos elementos depreciados que foram deixados completamente de lado são: isindex, noframes, acronym, applet, basefont, dir, font, frame, frameset, big, center, strike, tt.

O HTML5 suporta novos tipos de controles de formulário, por exemplo: datas e horas, e-mail, número, intervalo, tel, url, pesquisa etc.

Há muitos novos elementos introduzidos em HTML. Alguns dos mais importantes são: sumário, tempo, aside, áudio, comando, dados, datalist e assim em diante. Para a lista completa, confira aqui.

Principais Vantagens do HTML5 para Desenvolvedores

O HTML5 busca permitir que os desenvolvedores tenham maior flexibilidade na hora de projetar sites. Por causa disso, agora vamos explicar melhorias significativas nas quais você deve ficar de olho:

Manipulação de Erro Persistente

A maioria dos navegadores tem o suporte para analisar o código HTML incorreto de maneira estrutural e sintática. Mas, até alguns anos atrás, não havia um processo padronizado para lidar com isso.

Isso significava que os novos desenvolvedores de navegador precisavam realizar testes de documentos HTML malformados em diferentes navegadores para criar processos de manipulação de erros melhorados através de engenharia reversa.

A manipulação consistente do erro de HTML5 fez uma diferença enorme a este respeito. Os algoritmos de análise aprimorados que são usados ​​na versão 5 do HTML têm benefícios não quantificáveis.

Semântica Melhorada para Elementos

Para melhorar a semântica do código, foram feitas melhorias para os papéis de vários elementos existentes.

Seção, artigo, navegação e cabeçalho são os novos elementos que substituíram a maioria dos agora obsoletos elementos div. Isso fez com que o processo de erro de digitalização ficasse muito menos complicado.

Suporte Aprimorado para Recursos de Aplicativos da Web

Um dos principais objetivos do HTML5 era permitir que os navegadores funcionassem como plataformas de aplicativos. Portanto, ele oferece aos desenvolvedores um controle melhorado do desempenho dos seus sites.

No passado, os desenvolvedores tinham que usar soluções alternativas porque ainda não existiam muitas tecnologias do lado do servidor e extensões de navegadores.

Atualmente, não existe a necessidade de empregar qualquer solução alternativa baseada em JavaScript ou Flash (como era feito anteriormente no HTML4) porque existem elementos no HTML5 que oferecem todas as funcionalidades.

Navegação Móvel Facilitada

A quantidade de pessoas que possui um smartphone cresceu de maneira constante na década passada, e isso criou a necessidade por padrões melhorados do Hypertext Markup Language.

Os usuários finais querem ser capazes de acessar um recurso da web a qualquer momento e através de qualquer dispositivo, o que faz com que ter sites responsivos seja uma exigência. O HTML5 tornou o suporte móvel muito mais simples ao ser capaz de atender aos dispositivos eletrônicos de baixa potência, como tablets e smartphones.

O Elemento Canvas

Um dos recursos mais empolgantes do HTML5 é o elemento <canvas>, que permite que você desenhe vários componentes gráficos, como caixas, círculos, texto e imagens.

Considerando o quão conveniente é o uso da nova versão da linguagem de marcação para desenhar gráficos usando diferentes cores e formas via scripts (ex.: JavaScript), ela tornou o Flash completamente obsoleto.

Contudo, vale mencionar que o elemento <canvas> é meramente um contêiner gráfico. Portanto, para definir os gráficos, um script precisa ser executado. Aqui está um exemplo onde o JavaScript é usado em conjunto com o elemento:

<canvas id="TestCanvas" width="200″ height="100″></canvas>
var c = document.getElementById("TestCanvas");
var context = c.getContext("2d");
context.fillStyle = "#FF0000";context.fillRect(0,0,140,75);

O elemento Menu

Os elementos recém-adicionados <menu> e <menuitem> são componentes das especificações dos elementos interativos, mas não são frequentemente usados ​​ou falados pela comunidade de desenvolvedores.

No entanto, esses dois itens podem ser usados ​​para garantir uma interatividade web aprimorada. A tag <menu> é usada para representar comandos de menu em aplicativos móveis e de mesa para fins de simplicidade. Um possível uso da tag de menu pode ser:

<body contextmenu="new-menu">

<menu id=" new-menu" type="context">

<menuitem>Hello!</menuitem>

</menu>

</body>

Atributos de Dados Personalizáveis

Era possível adicionar atributos personalizados antes do HTML5, mas era um caso arriscado; Por exemplo, em HTML4, atributos personalizados podem, por vezes, parar uma página de renderização completamente, e eles muitas vezes poderiam tornar-se a causa de documentos incorretos ou inválidos.

O atributo data- * em HTML5 trouxe um fim a este problema que costumava ocorrer frequentemente. Existem vários usos para este atributo, mas o objetivo principal de sua introdução foi o armazenamento de informações extras sobre diferentes elementos.

Agora, os dados personalizados podem ser incluídos, e dá aos desenvolvedores maiores chances de fazer atraente e eficiente páginas da web sem ter que introduzir server-side lookups ou chamadas Ajax.

Armazemento Local para Substituir Cookies

O HTML5 usa o web storage ou o armazenamento local para substituir cookies. Em versões mais antigas do Hypertext Markup Language, se os desenvolvedores quisessem armazenar qualquer coisa, eles teriam que usar cookies que guardar uma pequena quantidade de dados (cerca de 4 KB).

Contudo, os cookies têm diversas desvantagens - eles podem expirar, restringir o uso de dados complexos (só permitem strings) e deixar o servidor da internet mais lento ao carregar scripts adicionais.

O web storage, por outro lado, permite que os dados sejam armazenados no computador do cliente de maneira permanente (a não ser que o usuário os apague), e também possui uma maior capacidade de dados (5 MB), sem trazer um peso extra para o servidor.

Vantagens do HTML5 para o usuário final

O HTML5 trouxe uma mudança de paradigma tanto para os desenvolvedores quanto para os usuários finais. Algumas das muitas vantagens que ele fornece aos usuários finais são:

Reduz travamentos em dispositivos móveis.

Aumenta a confiança em sites móveis. Quando um usuário quiser usar os serviços da empresa, mas não quiser fazer o download de seu aplicativo, eles podem simplesmente fazer logon no site responsivo da empresa para fazê-lo.

A erradicação da necessidade de usar o Adobe Flash permite que os desenvolvedores forneçam uma experiência estética de usuário rica em gráficos usando JavaScript e MPEG4.

A capacidade de suportar elementos nativos de áudio e vídeo sem plugins adicionais.

Página de Dicas e Exemplos HTML5

Página de Dicas podem ser de uma grande ajuda se você está começando a aprender uma nova linguagem. Neste artigo, gostaríamos de fornecer uma folha virtual que inclui as tags mais comumente usadas no HTML e as novas presentes no HTML5.

Conclusão

Neste artigo, nós aprendemos os principais recursos que separam o novo padrão do seu anterior.

Primeiramente, o HTML5 agora suporta a incorporação de vídeo e de áudio através das tags <audio> e <video>, dando suporte total apra o JavaScript rodar em background. A linguagem de marcação também oferece múltiplos novos elementos, como data, datalista, summary, etc. E ele também traz melhor compatibilidade com regras de análise aprimoradas.

É essencial que os desenvolvedores aprendam sobre HTML5 o mais rápido possível, para que possam maximizar o potencial dos navegadores modernos. Esperamos que este artigo sobre HTML5 tenha sido útil para você!

# data[].attributes.attachment_link.title
O Que é HTML5 e Quais Vantagens ele Traz para seu Site

# data[].attributes.attachment_link.description
O HTML é uma das linguagens de marcação mais comumente utilizadas. Trata-se de um sistema projetado para processar, definir e exibir textos ao incorporar anotações de tags e de caracteres dentro de arquivos estilizados. Isso permite que a manipulação do texto seja mais fácil para o computador. Mas o que é HTML5?

# data[].attributes.body
https://www.w3schools.com/

# data[].attributes.attachment_link.description
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

# data[].attributes.body
https://www.youtube.com/watch?v=jp4Vr16uieQ

# data[].attributes.attachment_link.title
Curso HTML para iniciantes - Ambiente de Desenvolvimento - #01

# data[].attributes.body
OBS: Contém CC.

# data[].attributes.attachment_link.title
Guia essencial da linguagem C: #1 - Do zero ao "olá mundo"