Olá, seja bem-vindo de volta.
Nesta palestra, eu gostaria para falar sobre o que
acontece na criação de um programa c.
Portanto, existem quatro tarefas fundamentais na criação de qualquer programa c.
E quais são essas tarefas incluem edição, compilação, vinculação
e execução.
Nós conversamos sobre as diferentes etapas que você vai empregar quando
escrever um programa c em termos de para entender os requisitos, você vai projetar
seu código, você vai escrever seu código, você vai testá-lo
e depurá-lo e assim por diante e então mantê-lo.
O que estou falando aqui é o que você realmente precisa fazer quando
começa a escrever um programa. Nós meio que conversamos sobre edição, compilação, mas
vinculação e execução também são importantes.
E sobre o que eu quero falar aqui estão os detalhes disso.
Então, essas tarefas vão se tornar uma segunda natureza para você porque você
vai fazer isso toda vez que você escreve um programa c.
Você vai editar o seu código-fonte, você
estará compilando, você estará vinculando, e então você estará correndo.
Você vai estar fazendo isso muito, muito frequentemente.
Portanto, os processos de edição, compilar, vincular e executar são os
mesmos para o desenvolvimento programas em qualquer ambiente com
qualquer linguagem compilada.
Isso não é exclusivo de c.
Se você está escrevendo java - um java programa, você vai escrever
o código-fonte, você vai para compilar o código-fonte.
Vinculando - você pode não estar tão ciente de em java, mas vai fazer algum tipo
de link e vamos conversar sobre o que é vinculação e, em seguida,
você executará o programa.
Você vai fazer tudo isso.
O que estou descrevendo aqui novamente é como é feito em c.
Então editar é exatamente o que você pensaria que é.
É o processo de criação e modificar o
código real, o código-fonte c.
O código-fonte c vai estar dentro de um arquivo.
E vai conter todos as declarações e todas as
instruções que você escreve.
Todos os arquivos de código-fonte c terminam com o . extensão c, e é assim que você
pode identificar que é um arquivo de código-fonte.
Antes disso . extensão c vai para ser chamado de nome
de base, você deseja que os nomes dos arquivos sejam significativos.
Se você escrever um programa em C que adiciona dois números, você pode ter
um arquivo chamado add. c, que contém um código-fonte.
E lembre-se de que mais c os programas terão muitos
arquivos diferentes.
Portanto, seus arquivos devem ter bons nomes.
Mas a maneira como você pode identificar o código-fonte c é o. extensão c.
Todos eles contêm o. extensão c.
Agora, quando editarmos nosso código para nesta aula, vamos usar um
ambiente de desenvolvimento integrado.
Não estamos apenas indo para usar um editor simples.
Um exemplo de um editor simples seria algo como wordpad.
Vamos usar algo que tem um editor, mas também tem
muitas outras coisas que ajudam você escreva seu código com mais eficiência.
O IDE - e isso é conhecido como IDE, ambiente de desenvolvimento integrado.
O que vamos usar para esta classe é o
Code Blocks, vou abordar em detalhes, mas vamos usar blocos de
código para a tarefa de edição.
Mas você pode usar o que quiser.
Se você quiser usar o bloco de
notas, se você quer usar algo ainda mais minúsculo, você pode Atom, há IDEs de
estúdio visual, mas o que vamos abordar aqui é como para editar seu código e blocos de código.
E este é um bom ide e o razão pela qual escolhi
falaremos sobre mais detalhes, mas é multiplataforma e fácil de usar.
Então, editar é o básico processo, escrevendo o código.
Compilando.
Nós sabemos o que um compilador faz.
É necessário um alto nível código de linguagem e converte em
linguagem de máquina, e também detecta e encontra erros em seu código.
Depois de editar seu código, você está vai executar o compilador.
Portanto, a entrada para o compilador é vai ser todo o
seu código-fonte, todo o seu. arquivos c tudo o que você está editando.
E, novamente, um programa c pode tem muitos arquivos de origem.
Mas a entrada para o compilador é esses arquivos de origem, a
própria compilação convertendo este código é um processo de duas etapas.
A primeira fase é chamada a fase de pré-processamento.
Durante o qual seu código pode ser modificado ou adicionado.
E o segundo estágio é o compilação real, ele gera o código
da linguagem assembly.
E falaremos sobre isso em mais detalhe, esta fase de pré-processamento.
Mas você só precisa saber agora que há dois estágios quando
você faz a compilação.
Aquele em que vamos nos concentrar ou aquele que é fácil de entender é
a geração do código do objeto.
Então, o compilador vai olhar para cada afirmação e
isso vai garantir que o a sintaxe está correta e que a semântica
da linguagem é atendida.
A sintaxe é para garantir que o estrutura do código está certa, que você
tem ponto e vírgula no final da declaração,
que você está usando tipos de dados, que você - você está seguindo as regras do idioma.
Semântica é o significado das palavras.
Então, se você usar um if palavra-chave, essa é uma condição.
A semântica acontece no fase de compilação criando uma tabela de símbolos
e assim por diante.
Mas o compilador é importante.
Vai gerar este código-objeto.
Isso vai te dizer se você tem algum erro em sua sintaxe.
Ele também pode às vezes reconhecer se você tem ou não código morto onde
basicamente o código não está sendo usado.
Ele não encontra erros de lógica.
Ele apenas encontra erros de sintaxe.
Novamente, a sintaxe é o regras e linguagem.
Erros lógicos são o significado.
Como se você cometesse um erro na lógica, você pode cometer
um erro na funcionalidade.
Para que seu código possa ser executado, ele possa compilar, mas pode não funcionar conforme o esperado e isso
é conhecido como um erro lógico.
O compilador não vai dizer você se tiver um erro lógico.
Se você pretendia pedir ao usuário um número em vez de uma sequência de caracteres ou você pede ao usuário
o último nome antes do primeiro nome é
um erro lógico. O compilador não vai para dizer a você esses tipos de erros.
Erros típicos relatados pelo compilador serão coisas
como variáveis não declaradas, expressão que não está de
acordo com a sintaxe, você não tem o direito parênteses, você conhece os
blocos que não têm blocos finais.
Você vai se tornar muito, muito familiarizado com os erros do compilador
e o que eles significam.
Esperançosamente, depois que você aprendeu a linguagem C e você executa
o compilador, você verá um erro
e você poderá corrigi-lo imediatamente.
Diga oi, esqueceu uma sintaxe ou opa esqueci um ponto
e vírgula, ah, esqueci de fornecer um direito colchete para terminar esse bloco de código.
Vai se tornar uma segunda natureza.
Então, depois de corrigir todos os erros
e sua compilação for bem-sucedida, traduzir em linguagem assembly e
gerar este código-objeto.
Então, o objeto real o código é um. o arquivo.
É o resumo real código de linguagem que é executado.
Tem uma extensão. obj ou. o. obj normalmente no windows será a extensão. o em um Linux ou Macintosh sistema será a extensão.
Você vai ver aquele arquivo gerado depois de compilar seu código.
E essa é apenas a fase final
da compilação, essa é a linguagem assembly real.
Vai ser binário, não parece texto, você
não conseguirá ver
Só vai ter um . o extensão, e é isso que o
compilador gera.
A maneira como você executa o compilador em c você realmente usa um comando.
Você provavelmente não precisará
fazer isso muito porque o ide, o editor no desenvolvimento integrado é faremos isso por você apenas clicando
em uma opção do menu, mas é importante saber o que está acontecendo.
Então, quando você envia o compilador ,
é normalmente usando um compilador GNU que é um comando gcc.
Mas no nível básico, você apenas executa um programa compilador cc ou gcc.
Você executa esse programa e então você especifica a entrada.
Lembre-se, o compilador leva como entrada os arquivos de origem.
Você especifica a entrada usando um -c sinaliza e especifica os
arquivos de origem, um após o outro.
Portanto, os exemplos aqui são cc-cmyprog. c ou se você estiver usando o compilador GNU, que
é um popular gcc-c.
E se você omitir o sinalizador c, seu o programa também será vinculado
automaticamente, o que é o próximo passo.
Mas realmente é fácil executar isso compilador se você estiver na interface de
linha de comando.
É ainda mais fácil se você apenas use uma opção de menu que
provavelmente faremos nesta aula.
Mas, novamente, é preciso entrada, os arquivos de origem c.
Em blocos de código, como mencionei,
você estará apenas clicando em uma opção do menu e compilar automaticamente
um link e então você pode clicar em outro menu opção ele será executado automaticamente.
Mas, novamente, o que está acontecendo sob o problema é que você está realmente emitindo o comando
do compilador com o -c sinalizador e os arquivos de origem de entrada.
Depois de compilar, você vincula. Como eu disse, toda linguagem de programação tem um
link, mas muito às vezes é transparente, você nem sabe o
que está acontecendo.
Em c, o processo de vinculação é importante porque nem sempre é transparente.
Mas com a maioria
dos IDEs modernos hoje, é, mas devo enfatizar que é importante em c.
Então, depois que o programa tiver foi traduzido para isso. código antigo, seu código-objeto, então está
pronto para ser vinculado.
A razão de nos vincularmos é se
estamos usando bibliotecas externas, temos que pegar todas as outras bibliotecas e colocá-los em um programa.
Então, vincular é apenas obter todos as dependências existentes e a
construção de um arquivo executável real.
Então o . o arquivo são os objetos.
Você, então, vincula todos os . OS em um executável.
E, novamente, isso geralmente
é transparente, geralmente acontece automaticamente quando você compila.
Mas, novamente, pode não e você pode ter que fazer um comando
separado, como -l ou algo assim.
Mas leva todos aqueles objetos arquivos e cria um executável.
E o executável é o que você executa.
Então, vai combinar tudo isso.
E então também vai combinar.
E você pode ter. so que são bibliotecas adicionais, que outros programas que você pode querer
usar que outra pessoa escreveu
ou outras bibliotecas que vêm com a linguagem c.
Você vai levar tudo aqueles e colocá-los juntos.
E a fase de ligação vai também detectar e relatar erros.
São duas fases distintas.
Vincular, novamente, normalmente seria como erros de redefinição ou você está tentando chamar
uma função que não existe.
Então, se você não tem isso. o arquivo para compor o programa inteiro, você terá
um erro de vinculação.
E você precisará ter todos os. o's.
E novamente, o. o's pode nem ser seu.
Eles podem vir com o mesmo idioma, eles podem fazer parte da biblioteca padrão ou
podem vir com outro programa que outra pessoa escreveu.
Mas você precisa de tudo isso. o's para formar um executável.
Portanto, as bibliotecas de programas oferecem suporte e estender a linguagem C, fornecendo rotinas para realizar operações
que não fazem parte da linguagem.
Bibliotecas de entrada e saída são exemplo, biblioteca
matemática, bibliotecas de manipulação de strings.
Isso é a mesma coisa se você estiver familiarizado com o programa java, é
a mesma coisa que a API java.
É a mesma coisa que pacotes.
É este conceito de
eu quero gravar dados em um arquivo que não
quero implementar sozinho, estou vai usar uma biblioteca existente que vem com o idioma.
Ainda está escrito em c, é apenas alguém c vem com isso.
Então, há
todos os tipos de diferentes bibliotecas que vamos aprender e usar.
Isso acontece parte de a fase de ligação.
Portanto, uma falha durante a fase
de ligação significa que mais uma vez você
tem que voltar e editar seu código-fonte para fazer certeza de que você
pode encontrar esse arquivo de objeto, portanto, muitas das falhas geralmente significa que você só precisa incluir um arquivo ou algo parecido. Esta se tornará uma segunda natureza também.
Sucesso, se você estiver pronto compilando com sucesso, você concluiu a vinculação com
sucesso, que irá produzir um arquivo executável.
Em um ambiente Windows, o
arquivo executável terá um. extensão exe.
No Linux e no Windows, apenas tem por padrão um. Fora.
Você pode alterar o nome de um. Fora para algo mais
significativo apenas emitindo algo junto com o comando do compilador.
Mas a maioria dos IDEs
em blocos de código também terá um programa de compilação
e ligação em uma única operação e produza o executável e então você pode apenas clicar duas vezes no executável ou você
pode executar o executável a partir de um comando ou da opção do menu.
Mas não no nível baixo se você estiver no Linux,
você verá um a. fora por padrão como seu executável. No Windows, você verá um. Exe.
Um programa de qualquer tamanho significativo consistirá em vários arquivos de código-fonte,
eu mencionei isso antes.
Cada arquivo de código-fonte precisa do compilador para gerar
o arquivo objeto, que precisa ser vinculado.
O programa é muito mais fácil de gerenciar dividindo-o em
vários arquivos de origem menores.
Você vai querer usar muitas fontes arquivos, e você não quer um arquivo de
origem que contém 5000 linhas de código.
Isso não é coeso.
Isso não é fácil de gerenciar.
Então você vai criar arquivos que
contêm o código-fonte, e o código-fonte vai ser específico.
Vai ter um funcionalidade específica.
Isso torna muito mais fácil desenvolver e
muito mais fácil de depurar e é muito mais coeso.
Então você vai ter muitos arquivos de origem menores.
Você não quer grandes arquivos de origem com milhares de linhas de código.
E todos esses arquivos de origem são vai compor todo o programa.
Todos eles vão ter seus ter . o's, e todos
eles serão inseridos no compilador.
Todos esses conceitos que fazem o
programa, essencialmente também são considerados um projeto.
Você pode pensar nisso como isso em um nível superior.
É o seu projeto, é o seu programa.
Depois que você finalmente fez tudo isso e você vinculou, você tem seu
arquivo executável, você pode então executar o programa.
Na maioria dos IDEs, isso é apenas vai ser um clique no
menu ou você pode clicar duas vezes nas janelas, você pode clicar duas vezes no exe.
E se você estiver no Linux, você apenas digita um. Fora.
Agora, quando um. fora você tem que ter certas permissões, então talvez você precise emitir um comando de
modo de mudança, mas para executá-lo você pode dizer. /uma. e isso executará o programa a partir
da linha de comando Linux.
Mas, novamente, geralmente você não precisa se preocupe com isso. Portanto, o estágio de
execução é onde você executa seu programa.
Cada uma das afirmações do programa é executado sequencialmente por sua vez.
Se o programa solicitar algum
dados do usuário, o programa fará uma pausa e obterá essa entrada.
Você pode obter a entrada por meio do teclado ou pode obter a entrada através da interface gráfica do
usuário, se você tiver bibliotecas para isso em seu código c.
Resultados que são exibidos pelo programa aparecem
em uma janela chamada console.
E vamos mostrar você exemplos disso quando falamos sobre
blocos de código.
Mas quando você executa seu programa, normalmente, você verá a saída.
Nem sempre, às vezes os programas fazer coisas que não produzem saída.
Mas geralmente, eles produzem saída e
você vê a saída diretamente no terminal ou no console.
A fase de execução também gera uma ampla variedade de condições de erro.
Então você pode produzir o
errado saída que é apenas um erro lógico e você tem que voltar e edite seu código-fonte.
Pode ficar parado e não fazer nada porque você tem problemas de lógica.
E, por último, pode
travar seu computador, que é o pior cenário, o que significa que você fez
algo muito ruim em seu programa e
foi tão ruim que o programa acabou de morrer ou apenas
ou realmente causou outro programas em seu sistema operacional para travar todo o seu computador.
Portanto, executando o aplicativo c real pode causar problemas. Se o programa não realizar o funcionalidade pretendida, então você tem que voltar
e editar a fonte
código que você pode ter que reorganizar ou redesenhar e é
aqui que nós falou sobre as diferentes etapas.
Isso é conhecido como depuração fase para localizar e corrigir seus erros.
Vamos ter um todo
seção sobre depuração porque é tão importante.
Eu mencionei antes aquele Uma das melhores maneiras de aprender
é aprender com seus erros.
Você vai voltar constantemente e editar o código-fonte e depurar.
Todo o processo de compilação,
vincular e executar o programa é repetido até que você termine, até
que você tenha todos os resultados de que você precisa para a funcionalidade desse código.
Então aqui está, novamente, outro bom ilustração que gosto de fornecer.
Isto é tirado de um livro chamado Beginning C por Horton.
Mas este é o processo que você vai ter.
Você vai editar seu código-fonte.
Você vai criar um arquivo com um . extensão c e um nome significativo.
Você vai usar um editor para fazer isso
ou um IDE, ambiente de desenvolvimento integrado, algo como Code Blocks.
Você vai então compilá-lo.
O compilador vai gerar um arquivo obj um arquivo o.
Se não gerar esse
arquivo, isso significa que você tem erros e precisa voltar e corrigi-los.
Depois de criar os arquivos obj, os arquivos objeto, você deve vinculá-los todos
juntos para criar um arquivo executável.
E você também poderia ter erros nessa fase
em que eles não estão vinculados corretamente.
Voce tem que voltar e edite seu código-fonte.
Uma vez que você realmente não tem erros
e você tem um arquivo executável, você pode então executar seu programa.
E novamente, depois de executar o seu programa, você ainda pode ter erros porque
pode haver erros de lógica.
Então você voltaria e edite seu código-fonte.
Então, isso vai se tornar um
processo repetitivo com o qual você estará muito familiarizado.
Editar, compilar, vincular, executar.
E isso novamente é tipicamente o que você faz em todos os idiomas.
Você vai fazer isso de novo e repetidamente até que seu
programa atenda a todos os seus requisitos.