SlideShare uma empresa Scribd logo
1 de 284
Baixar para ler offline
Programação 2
Sônia Virginia Alves França




       Recife, 2009
Universidade Federal Rural de Pernambuco

Reitor: Prof. Valmar Corrêa de Andrade
Vice-Reitor: Prof. Reginaldo Barros
Pró-Reitor de Administração: Prof. Francisco Fernando Ramos Carvalho
Pró-Reitor de Extensão: Prof. Paulo Donizeti Siepierski
Pró-Reitor de Pesquisa e Pós-Graduação: Prof. Fernando José Freire
Pró-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira
Pró-Reitora de Ensino de Graduação: Profª. Maria José de Sena
Coordenação Geral de Ensino a Distância: Profª Marizete Silva Santos


Produção Gráfica e Editorial
Capa e Editoração: Allyson Vila Nova, Rafael Lira, Italo Amorim e Glaydson da Silva
Revisão Ortográfica: Ivanda Martins
Ilustrações: Diego Almeida
Coordenação de Produção: Marizete Silva Santos
Sumário

   Plano da Disciplina ...............................................................................5


   Apresentação ........................................................................................9


   Conhecendo o Volume 01 ..................................................................10


   Capítulo 1 – Introdução ao C .............................................................13


      1.1. Programas e Programação de Computadores ..........................13


      1.2. Linguagens de Programação.....................................................15


      1.3. Breve Histórico da Linguagem de Programação C ...................18


      1.4. Criação, Compilação e Execução de um Programa ..................19


   Capítulo 2 – Conceitos Preliminares para Programar em C ...........24


      2.1. Estrutura de um Programa Básico em C ...................................25


      2.2. Palavras Reservadas do C ........................................................28


      2.3 Uso de Comentários ...................................................................29


      2.4. Os Fundamentos do Ambiente C...............................................31


      2.5. Conhecendo o Dev-cpp .............................................................34


   Capítulo 3 – Tipos de Dados, Variáveis e Constantes .....................40


      3.1. Tipos de dados ..........................................................................40


      3.2. Variáveis e Constantes ..............................................................42


      3.3. Operador de Atribuição (=) ........................................................49
Capítulo 4 – Comandos de Entrada e Saída de Dados....................54


  4.1. Entrada de Dados ......................................................................54


  4.2. Saída de Dados .........................................................................59


  4.3. Erros Frequentes no Uso dos Comandos de Entrada e Saída .65


  4.4. Primeiros programas em C ........................................................66


Capítulo 5 – Operadores, Expressões e Funções Matemáticas .....75


  5.1. Operadores Básicos ..................................................................75


  5.2. Operadores Aritméticos de Atribuição ......................................87


  5.3. Operadores ++ e -- ....................................................................87


  5.4. Conversão de tipo......................................................................88


  5.5. Funções Matemáticas (biblioteca math.h) .................................90
Plano da Disciplina

  Carga horária: 60h


Ementa da Disciplina

     Introdução à linguagem de programação C. Tipos de dados, variáveis, operadores
     aritméticos, relacionais e lógicos. Comandos de entrada e saída. Estruturas de
     seleção e repetição. Modularização. Vetores e registros. Ponteiros. Arquivos.
     Manipulação de caracteres. Comandos de tela. Comandos de manipulação de
     data e hora.


Objetivos

  Objetivo Geral

  • Apresentar técnicas de programação estruturada utilizando como ferramenta a
    linguagem de programação C

  Objetivos Epecíficos

  • Desenvolver a capacidade de solução de problemas de programação, com o uso
    da linguagem C.

  • Introduzir métodos de otimização para garantir eficiência e segurança aos
    programas.

  • Desenvolver o auto-aprendizado.


Conteúdo Programático

  Módulo 1 - Introdução à Linguagem de Programação C

  Carga Horária do Módulo 01: 15 h

     Objetivo do Módulo 01: Introdução ao C e seus comandos básicos, para
     possibilitar a construção dos primeiros programas nesta linguagem.

  Conteúdo Programático do Módulo 1

  • Introdução ao C
○ Conceito de programa e linguagem de programação

  ○ Introdução ao C: Um breve histórico

  ○ Etapas de desenvolvimento de um programa

• Comandos Básicos do C

  ○ Estrutura de um programa C

  ○ Diretivas de compilação

  ○ Uso de comentário

  ○ Tipos de dados

  ○ Variáveis, constantes, identificadores e atribuição

  ○ Comandos de entrada e saída

  ○ Operadores aritméticos, relacionais e lógicos

  ○ Modificadores de tipos de dados

  ○ Funções matemáticas

Módulo 2 – Estruturas de Controle de Fluxo e Modularização

Carga Horária do Módulo 2: 15 h

  Objetivo do Módulo 2: Possibilitar o conhecimento das estruturas de controle
  (seleção e repetição) do C e métodos para modularização dos programas (criação
  de procedimentos e funções).

Conteúdo Programático do Módulo 2:

• Estruturas de Controle de Fluxo

  ○ Sequência

  ○ Estrutura de seleção: If e Switch

  ○ Estrutura de repetição: for, do/while e while

  ○ Comando break

• Modularização

  ○ Construção de módulos: funções e procedimentos

  ○ Passagem de parâmetros e escopo de variáveis

  ○ Comando return
Módulo 3 – Armazenamento de Dados em Vetores, Registros e Arquivos

 Carga horária do Módulo 03: 15 h

    Objetivo do Módulo 03: Apresentar as formas de armazenamento de dados
    homogêneos (vetores) e heterogêneos (registros), além dos comandos para
    manipulação de arquivos.

 Conteúdo Programático do Módulo 03:

  • Tipos de Dados Homogêneos e Heterogêneos

    ○ Vetores

    ○ Registros

    ○ Vetor de registro

  • Arquivos

    ○ Ponteiros

    ○ Comandos para manipulação de arquivo

 Módulo 4 – Comandos Avançados

 Carga Horária do Módulo 4: 15 h

    Objetivo do Módulo 4: Apresentar comandos mais avançados da linguagem
    C, tais como: manipulação de caracteres, comandos de tela (para melhorias na
    interface dos programas) e manipulação de data e hora.

 Conteúdo Programático do Módulo 4:

  • Comandos para Manipulação de Caracteres e Strings

    ○ Comandos da biblioteca ctype e string

    ○ Validação de campos

  • Comandos de Tela – Interface

    ○ Comandos da biblioteca conio

  • Comandos para Manipulação de data e hora

    ○ Comandos da biblioteca time


Avaliação

  • Avaliação prática em laboratório correspondendo a 60% da nota.
• Resolução de listas de exercícios, que serão enviadas através do ambiente virtual
    (30%).

  • Avaliação referente à participação do aluno nas aulas presenciais e ambiente
    virtual: fóruns de discussão, chats, etc (10%).


Bibliografia

  Básica:

    SCHILDT, Herbert. C Completo e Total. São Paulo: Makron, 1996.

    DEITEL, H, M e DEITEL, P. J. Como Programar em C. Rio de Janeiro: LTC,
    1999.

  Complementar:

    ASCENIO, Ana Fernanda Gomes e CAMPOS, Edilene Aparecida Veneruchi.
    Fundamentos de Programação de Computadores. São Paulo: Prentice Hall,
    2002.
Apresentação

   Caro(a) aluno(a),

   Seja bem-vindo (a) ao primeiro módulo da disciplina Programação II. Nesta disciplina,
você irá aprender a programar na linguagem de programação C, uma das mais utilizadas
mundialmente. Desenvolver programas e garantir que estes sejam confiáveis, eficientes
e agradáveis de usar requer conhecimento técnico e muito treinamento.

   Este livro foi escrito pensando em você, que está iniciando neste mundo da
programação de computadores e que precisa ser apresentado, com tranquilidade, a um
conjunto de novos conceitos. Os assuntos serão transmitidos gradativamente, de forma
que você os absorva com naturalidade.

   Este livro contém muitos exemplos de questões resolvidas, comentadas em
detalhes, para que você não encontre dificuldades para aprender cada assunto. Além
de apresentar dicas para que você desenvolva seus programas de forma eficiente e
não cometa os principais erros de programação que ocorrem com quem está iniciando
a programar. Ao final de cada capítulo, você poderá testar o seu aprendizado e assimilar
melhor o que foi estudado, através da resolução de exercícios. Isto é muito importante!
Não deixe de resolvê-los.

   De antemão, informamos que programar é muito bom, você vai gostar! Nada melhor
do que ver um programa rodando e saber que foi você quem o criou. Mas, não desanime
se encontrar alguma dificuldade durante esta caminhada. Às vezes o programa dá
um erro e não sabemos onde está o problema. Seja persistente! Ao longo do tempo,
a experiência vai te dar mais segurança e você conseguirá encontrar tais erros com
facilidade.

   O objetivo deste primeiro módulo é fazer uma introdução à linguagem C, conhecer
um pouco da sua história e iniciar o estudo da sintaxe da linguagem, que possibilitará
a construção de programas básicos. Ao final deste primeiro módulo, você já estará
desenvolvendo seus primeiros programas em C. O que você está esperando? Vamos
começar?

   Bons estudos!

                                             Professora Sônia Virginia Alves França
Programação 2



                Conhecendo o Volume 01

                   Neste primeiro volume, você irá encontrar o módulo 01 da disciplina:
                Programação II. Este volume está estruturado em cinco capítulos, que
                serão estudados ao longo de 15h/aula. Para facilitar seus estudos,
                veja a organização deste primeiro volume.

                   Capítulo 1: Introdução ao C

                   Carga Horária do Capítulo 1: 2 h/aula

                      Objetivos do Capítulo 1: Introduzir os conceitos básicos da
                      área de programação e apresentar um breve histórico sobre a
                      linguagem C.

                   Conteúdo Programático do Capítulo 1

                   • Conceito de programas e programação de computadores;

                   • Linguagens de programação;

                   • Breve histórico da linguagem de programação C;

                   • Etapas do desenvolvimento de um programa.

                   Capítulo 2: Conceitos Preliminares para Programar em C

                   Carga Horária do Capítulo 2: 3 h/aula

                      Objetivos do Capítulo 2: Apresentar detalhes mais específicos
                      da linguagem, necessários para dar início à programação
                      em C. Neste capítulo, também será apresentado o ambiente
                      de programação que utilizaremos no desenvolvimento dos
                      programas.

                   Conteúdo Programático do Capítulo 2

                   • Estrutura de um programa básico C;

                   • Palavras reservadas do C;

                   • Uso de comentários;

                   • Fundamentos do ambiente C;

                   • Conhecendo o Dev-cpp.


                                      10
Programação 2



Capítulo 3: Tipos de Dados, Variáveis e Constantes

Carga Horária do Capítulo 3: 2 h/aula

   Objetivos do Capítulo 3: Apresentar os tipos de dados
   suportados pelo C e introduzir o conceito de variáveis e
   constantes

Conteúdo Programático do Capítulo 3

• Tipos de dados;

• Variáveis e constantes;

• Operador de atribuição;

Capítulo 4: Comandos de Entrada e Saída de Dados

Carga Horária do Capítulo 4: 4 h/aula

   Objetivos do Capítulo 4: Apresentar os comandos de entrada
   e saída de dados do C. Neste capítulo, você terá acumulado
   conhecimento suficiente para desenvolver os primeiros
   programas em C.

Conteúdo Programático do Capítulo 4

• Entrada de dados;

• Saída de dados;

• Desenvolvimento dos primeiros programas C.

Capítulo 5: Operadores, Expressões e Funções Matemáticas

Carga Horária do Capítulo 5: 4 h/aula

   Objetivos do Capítulo 5: Apresentar os operadores
   básicos (aritméticos, relacionais e lógicos), além de funções
   complementares para o desenvolvimento de programas que
   executem expressões mais complexas.

Conteúdo Programático do Capítulo 5

• Operadores aritméticos, lógicos e relacionais;

• Operadores aritméticos de atribuição;

• Operadores ++ e --;


                                          11
Programação 2



                • Conversão de tipos;

                • Funções matemáticas.

                Ao final de cada capítulo você encontrará:

                • A seção “Atividades e Orientações de Estudo”: que contém
                  exercícios para a fixação do assunto estudado, além de
                  indicação de fóruns de discussão.

                • A seção “Conheça Mais”: que contém dicas de sites e livros
                  que devem ser lidos para ampliar os seus conhecimentos.

                • A seção “Vamos Revisar?”: que apresenta um resumo dos
                  principais tópicos abordados no capítulo.




                                   12
Programação 2



Capítulo 1 – Introdução ao C


   Vamos conversar sobre o assunto?

   Neste primeiro capítulo, será feita uma apresentação do que é
programação e quais as principais linguagens de programação do
mercado, dando ênfase à linguagem C. Este capítulo é importante,
porque conheceremos um pouco da história da linguagem de
programação que iremos aprender nesta disciplina. Sempre que
conhecemos uma pessoa nova, queremos saber alguns detalhes
da sua vida, não é mesmo? Quantos anos ela tem, onde nasceu,
quem são seus pais, etc. Neste capítulo, também, serão introduzidos
conceitos utilizados na área de programação, visando a nossa
preparação para nos lançarmos nesse mundo intrigante da criação de               Saiba Mais

programas computacionais. Então, prontos (as) para o desafio?             1
                                                                            Além dos
                                                                          software
                                                                          aplicativo e
1.1. Programas e Programação de                                           software de
                                                                          sistema, ainda é
Computadores                                                              possivel utilizar
                                                                          a categoria
                                                                          software
   Um programa de computador é um conjunto de instruções que              embutido ou
                                                                          embarcado,
descrevem uma tarefa que será executada por um computador.                destinado a
Um programa de computador também é conhecido como software,               funcionar dentro
                                                                          de uma máquina
software aplicativo, software de sistema ou simplesmente programa.        que não é um
                                                                          computador.
O termo software é mais utilizado quando é feita uma referência à         Normalmente,
parte não física do sistema computacional, juntamente com o termo         estes software
                                                                          têm um
hardware, que faz referência ao conjunto de componentes eletrônicos       propósito muito
                                                                          específico, como,
que constituem um computador.                                             por exemplo:
                                                                          controlar a
    Os programas que permitem ao usuário fazer uma ou mais tarefas        injeção eletrônica
                                                                          de um carro
específicas, como as planilhas eletrônicas, editores de texto e jogos     ou gerenciar
                                                                          o cozimento
são chamados de software aplicativo ou aplicação. Já os programas         dos alimentos
que dão suporte funcional aos computadores, como os sistemas              no forno de
                                                                          microndas. Mais
operacionais e drivers de dispositivos, são chamados de software de       recentemente,
                                                                          surgiu também
sistema1.                                                                 o software como
                                                                          serviço, que é
   O ato de desenvolver programas é chamado de programação                um software que
                                                                          roda diretamente
de computadores. A programação é o processo de escrita, teste             na internet, não
e manutenção de um programa (ASCENIO e CAMPOS, 2002).                     sendo necessário
                                                                          instalar nada no
O desenvolvimento de programas baseado em metodologias ou                 computador do
                                                                          usuário.
processos formalizados é conhecido por engenharia de software.

                                            13
Programação 2



                    Os programas são escritos em uma linguagem de programação.
                Assim como o Português, o Inglês e o Espanhol, as linguagens
                de programação têm as suas regras e devemos seguí-las para
                escrever nossos programas corretamente. Portanto, a programação
                de computadores é uma ciência e, por isso, devemos seguir uma
                metodologia para termos como resultado: programas seguros e
                eficientes.

                   Em uma disciplina anterior, vocês aprenderam a desenvolver
                algoritmos, que são uma sequência de passos para realizar uma
                tarefa ou resolver um problema. Utilizamos algoritmos no nosso
                cotidiano para realizar atividades corriqueiras, definindo a sequência
                de passos que deve ser executada para atingirmos um objetivo, como,
                por exemplo, os passos que executamos para tomar banho, calibrar
                um pneu ou fazer um bolo.




                                     Figura 1.1: Exemplos de algoritmos


                    Para efetuarmos estas atividades, seguimos uma sequência
                lógica de passos. Se esses passos não tiverem uma lógica, podemos
                não conseguir atingir o nosso objetivo. Se vocês observarem, para
                fazer um bolo, existe uma ordem em que os ingredientes devem ser
                adicionados à receita, caso não sigamos esta ordem, o bolo não ficará
                bom. Na programação irá ocorrer a mesma coisa, devemos passar as
                instruções ao computador, utilizando uma linguagem de programação,
                seguindo uma lógica – a lógica computacional.

                   Na próxima seção vamos abordar as linguagens de programação,
                de uma forma mais abrangente, tratando os principais conceitos que
                envolvem este assunto. Vamos seguir em frente?




                                      14
Programação 2



1.2. Linguagens de Programação

   É através das linguagens de programação que poderemos criar
nossos programas. Uma linguagem de programação é um conjunto de
regras sintáticas e semânticas usadas para definir um programa. O
conjunto de códigos (palavras e símbolos), compostos de acordo com
essas regras, constituem o código fonte do nosso programa. Para
ser executado pelo processador, o código fonte precisa ser traduzido
para código de máquina.

   Aprender uma linguagem de programação é um pouco similar
a aprender um novo idioma. Temos que saber o significado das
palavras, as regras da estruturação das frases, etc., para podermos
nos comunicar corretamente no novo idioma.




              Figura 1.2: Aprenda a dar ordens ao seu computador


   Existem várias linguagens de programação. Vocês sabiam que
cada linguagem de programação possui o seu conjunto de regras e
um modo de funcionamento próprio? A escolha de uma linguagem
de programação para o desenvolvimento de um programa deve estar
atrelada ao tipo de problema que deseja resolver. Existem linguagens

                                                   15
Programação 2



                     que são melhores para resolver um certo tipo de questão do que
                     outras.

                          De acordo com Sebesta (2003), as linguagens de programação
                     vêm sendo classificadas de várias formas: por geração, de acordo com
                     o paradigma de programação, quanto ao grau de abstração, de acordo
                     com a estrutura de tipos, dentre outras. Uma das classificações mais
                     utilizadas é quanto ao grau de abstração. Segundo esta classificação,
                     as linguagens de programação são divididas em três grupos:
                     linguagens de máquina, linguagens de baixo nível e linguagens
                     de alto nível.

                         A linguagem de máquina é a linguagem natural dos computadores.
                     Estas linguagens são ininteligíveis para o ser humano não treinado.
                     As linguagens de máquina são representadas por sequências de
                     bits (zeros e uns). Estas sequências representam instruções que
                     serão executadas pelo processador do computador. As instruções
                     correspondem a sequências muito simples de operações, tais como:
                     transferir um dado em memória para a CPU ou somar dois valores. As
                     linguagens de máquina são dependentes do processador, isto é, uma
                     determinada linguagem de máquina só poderá usada por um tipo de
                     computador.

                         As linguagens de baixo nível são próximas da linguagem de
        Saiba Mais   máquina. No entanto, os zeros e uns que formam uma instrução
                     foram substituídos por palavras que representam tais instruções,
2
  No contexto da
informática, a       tornando-as um pouco mais legíveis. Estas linguagens são mais
portabilidade de
um programa é a
                     voltadas para a máquina, isto é, são escritas usando as instruções
sua capacidade       do microprocessador do computador. São chamadas de linguagens
de ser compilado
ou executado         Assembly (que significa montagem). Estas linguagens apresentam
em diferentes
arquiteturas (seja
                     as seguintes vantagens: os programas são executados com maior
de hardware ou       velocidade de processamento (já que são executadas diretamente
de software).
                     pela máquina) e ocupam menos espaço na memória. No entanto, de
Esse termo           modo geral, os programas em Assembly têm pouca portabilidade2 (um
também vem
sendo utilizado      código gerado para um tipo de processador não serve para outro) e
pelas empresas       não são estruturados, tornando a programação mais difícil.
de telefonia
móvel, quando
se referem à            As linguagens de alto nível são mais próximas à linguagem
portabilidade
                     humana (do Inglês, por exemplo) e mais distantes das linguagens
de número, ou
seja, você muda      de máquina. Por isso, são linguagens mais simples de entender, já
de operadora,
mas nao muda         que, em geral, utilizam uma sintaxe estruturada, tornando seu código
o número do
                     mais legível. Necessitam de compiladores ou interpretadores
celular.
                     para gerar instruções do microprocessador. Interpretadores fazem

                                           16
Programação 2



a interpretação de cada instrução do programa fonte executando-a
dentro de um ambiente de programação, Basic e Java são exemplos de
linguagens interpretadas. Os compiladores fazem a tradução de todas
as instruções do programa fonte gerando um programa executável.
Estes programas executáveis (*.exe) podem ser executados fora dos
ambientes de programação. A linguagem C e Pascal são exemplos de
linguagens compiladas.

   As linguagens de alto nível ainda podem ser divididas de acordo com
a sua aplicação: genéricas (como C, Java e Pascal, que servem para
o desenvolvimento de programas de propósito geral) ou específicas
(como Fortran - utilizada para execução de cálculos matemáticos,
LISP - desenvolvimento de aplicações na área de inteligência artificial
e CLIPPER – utilizada para aplicações que manipulam bancos de
dados). As vantagens das linguagens de alto nível são: portabilidade
(por serem compiladas ou interpretadas podem ser executadas em
várias plataformas com pouquíssimas modificações) e facilidade de
desenvolvimento de programas. No entanto, as rotinas geradas são
mais genéricas (e mais complexas) e por isso são mais lentas e
ocupam mais memória.

    A figura 1.3, a seguir, apresenta um trecho de código escrito em
linguagem de máquina, linguagem de baixo nível e linguagem de alto
nível, respectivamente.

     Linguagem de           Linguagem de           Linguagem de Alto Nível
        Máquina              Baixo Nível

        10110101            LOAD BASE
        11100110            ADD BONUS                Salario = Base + Bonus
        11000100          STORE SALARIO

              Figura 1.3: Trecho de código em diferentes linguagens


    Notem como o código em linguagem de máquina é incompreensível.
Difícil entender essas seqüências de zeros e uns, não é mesmo?
O código na linguagem de baixo nível é mais legível e passamos
a entender as instruções. Na linguagem de alto nível, o código fica
menor e muito mais simples. Em qual tipo de linguagem vocês querem
programar? Nem precisamos parar para pensar, não é mesmo?




                                                     17
Programação 2




                               Figura 1.4: Linguagens de baixo nível x linguagens de alto nível




                     1.3. Breve Histórico da Linguagem de
                     Programação C

                         Vamos conhecer um pouco sobre a história do C? A linguagem
                     de programação C nasceu em 1972 nos laboratórios Bell, Estados
                     Unidos. Seus criadores são Brian Kernighan e Dennis M. Ritchie. A
       Saiba Mais
                     linguagem C foi criada a partir da linguagem B (sugestivo, não é?),
3
  Uma linguagem
                     que havia sido desenvolvida no final dos anos 60 por Ken Thompson.
é considerada
estruturada              O C é uma linguagem de alto nível, compilada e estruturada3.
quando
permite que o        No entanto, o C possui instruções de baixo nível, bem próximas à
programador          linguagem de máquina, que só o Assembler possui. O objetivo dos
pegue trechos
de maior uso do      seus criadores era usar o C para desenvolver o sistema operacional
seu programa e
transforme-os        UNIX, que originalmente foi escrito em Assembly (linguagem de baixo
em pequenos          nível). Desde então, espalhou-se por muitos outros sistemas e tornou-
módulos
(procedimentos       se uma das linguagens de programação mais usadas, e influenciando
e funções) que
serão reutilizados   o desenvolvimento de muitas outras linguagens como C++ e Java.
sempre que
necessário.             Com a linguagem C podemos construir programas organizados
                     e concisos (características dos programas das linguagens de alto


                                              18
Programação 2



nível), ocupando pouco espaço de memória e com alta velocidade
de execução (como o Assembler). Infelizmente, dada toda a
flexibilidade da linguagem, também poderemos escrever programas
desorganizados e difíceis de serem compreendidos. Portanto, cabe
ao programador de C utilizar boas práticas de programação, para ter
programas legíveis e de fácil manutenção.

   Existem inúmeras razões para que o C seja uma das linguagens
mais preferidas dos programadores. As características da linguagem
C mostram o porquê de sua ampla aceitação. Vejamos algumas
características da linguagem C.

    • Portabilidade entre máquinas e sistemas operacionais;

    • Dados compostos em forma estruturada;

    • Programas estruturados;

    • Total interação com o sistema operacional;

    • Código compacto e rápido, quando comparado ao código de
      outras linguagens de alto nível.

   Agora que já conhecemos um pouco mais da linguagem C, vamos
entender o processo de desenvolvimento de um programa. Quais são
os passos que devemos seguir para termos um programa pronto?
Vamos começar a falar sobre isto agora mesmo. Continuem firmes na
leitura!


1.4. Criação, Compilação e Execução de um
Programa

    Nesta seção vamos estudar as etapas de desenvolvimento de um
programa em C. O desenvolvimento de um programa é dividido em
três etapas, como mostra a figura 1.5.




           Figura 1.5: Estados do desenvolvimento de um programa em C


   A primeira etapa para o desenvolvimento de um programa em C é

                                                    19
Programação 2



                     a criação do programa fonte, que consiste no “texto” formado pelo
                     conjunto de comandos que nós desejamos que o computador execute.
                     O programa fonte deve ser escrito respeitando as regras da linguagem.
                     De modo geral, os programas fontes são digitados em editores de
                     texto genéricos ou específicos dos ambientes de programação. No
                     próximo capítulo deste volume, vamos conhecer detalhadamente o
                     ambiente de programação que será utilizado para o desenvolvimento
                     dos nossos programas em C.

                         Com o programa fonte pronto, passamos para a etapa de
                     compilação. O compilador é um programa que verifica se o
                     programa fonte não apresenta nenhum erro de sintaxe e gera o
                     programa executável. Quando o programa fonte apresenta algum
                     problema, dizemos que ocorreu um “erro de compilação”. Assim, o
                     programador deverá avaliar o programa fonte, para a retirada tais
                     erros. Normalmente, os compiladores indicam os prováveis erros de
                     sintaxe cometidos pelo programador. Se o programa não tiver erros
                     de sintaxe, o compilador irá gerar o programa executável.

                         A etapa final consiste na execução do programa executável.
                     Neste momento, o programador deverá testar se o programa
       Saiba Mais
                     está produzindo os resultados esperados. Quando o programa
4
 Bug é um erro       apresenta algum erro nesta fase, como, por exemplo, mostrar um
no funcionamento     resultado incorreto, dizemos que ocorreu um “erro de lógica” ou
de um programa.
É também             “erro de execução”. Isso ocorre porque, apesar do programa não
chamado de
erro de lógica,      ter apresentado erros de sintaxe, o que tornou possível a geração
e pode causar        do programa executável, a sequência de comandos não foi definida
discrepâncias
no objetivo ou       de forma correta. Quando ocorre um erro de lógica, o programador
impossibilidade
de utilização de     deverá revisar o seu programa fonte e passá-lo novamente pela fase
um programa de       de compilação, para que um novo executável, sem erros, seja gerado.
computador.
O uso do             Como o compilador não nos avisa onde estão os erros de lógica, estes
termo bug
para descrever       são mais difíceis de serem corrigidos.
defeitos
inexplicáveis foi        Após ter certeza que o programa executável está correto, sem
parte do jargão da
engenharia por       erros de lógica, o programador poderá entregá-lo ao seu cliente. É
várias décadas.      importante fazermos vários testes nos nossos programas. Testar com
Acredita-se que o
termo foi criado     vários valores e verificar se está realmente tudo como esperado. Não
por Thomas
Edison quando        fica bem nosso cliente ficar ligando, dizendo que o programa está com
um inseto (bug,      BUG!4 Lembrem-se sempre, o computador só executa as instruções
em Inglês) causou
problemas de         que nós mandarmos. Se houver erros, a responsabilidade será nossa
leitura em seu
fonógrafo em         que não fizemos o programa corretamente! Vocês não vão querer
1878.                passar por uma situação como essa? Vão?


                                           20
Programação 2



    Nesta fase de execução do programa executável, nós também
devemos verificar a usabilidade do programa, ou seja, se o programa
ficou fácil de ser utilizado pelo seu usuário. Quando o programa é de
difícil utilização ou confunde o usuário, induzindo-o ao erro, ele perde
o interesse em utilizá-lo ou comprá-lo. Também devemos verificar se
nosso programa tem um bom desempenho, ou seja, se ele processa
rapidamente as operações. Usuário não gosta de programa lento, não
é mesmo?




           Atividades e Orientações de Estudo


    Agora é o momento de analisarmos se os assuntos abordados
neste capítulo foram bem absorvidos. Foram vistos muitos conceitos
novos, não é mesmo? Vamos responder as questões a seguir. Caso
sintam necessidade, releiam alguma seção que não foi muito bem
assimilada ou complementem as respostas com a leitura dos sites
indicados na próxima seção. Vocês estão preparados(as)?

   1. Para que serve uma linguagem de programação?

   2. Quais as desvantagens das linguagens de baixo nível?

   3. Por que desejamos programas portáveis?

   4. O que motivou a criação da linguagem C?

   5. A linguagem C é de baixo ou alto nível?

   6. A linguagem C é compilada ou interpretada?

   7. Por que os erros de lógica são mais difíceis de serem
      corrigidos?

   8. Por que devemos nos preocupar com a usabilidade dos nossos
      programas?




           Conheça Mais


    Para ampliar os seus conhecimentos sobre os assuntos
tratados neste capítulo, visite o site da OReilly. Neste endereço,


                                              21
Programação 2



                http://oreilly.com/pub/a/oreilly/news/languageposter_0504.html,
                foi disponibilizado um pôster, muitíssimo interessante, como uma
                “árvore genealógica” das principais linguagens de programação dos
                últimos 50 anos. Vale a pena dar uma olhada.

                   É muito importante que vocês se cadastrem em algum fórum de
                discussão sobre a linguagem C. Assim, vocês poderão conversar e
                trocar idéias com programadores de C mais experientes. Exemplos
                de fóruns de C: DevMedia e Linha de código.




                          Vamos revisar?


                   Vamos dar uma reforçada em nosso aprendizado com esta
                pequena revisão dos principais conceitos apresentados neste capítulo.
                Observem o resumo a seguir:

                 • Programa: é um conjunto de instruções que descrevem uma tarefa
                 que será executada por um computador.

                 • Programação de Computadores: é o processo de escrita, teste e
                 manutenção de um programa.

                 • Algoritmo: sequência de passos para realizar uma tarefa ou
                 resolver um problema.

                 • Linguagem de Programação: é um conjunto de regras sintáticas e
                 semânticas usadas para definir um programa.

                 • Linguagem de máquina: é a linguagem natural dos computadores.
                 As instruções são formadas por zeros e uns. Estas linguagens não
                 são legíveis para um programador sem experiência.

                 • Linguagens de baixo nível: são linguagens escritas usando as
                 instruções do microprocessador do computador. Estas linguagens
                 são mais difíceis de entender e criar programas.

                 • Linguagens de alto nível: são linguagens mais próximas à
                 linguagem humana e mais distantes das linguagens de máquina.
                 São linguagens mais simples de entender, já que, em geral,
                 utilizam uma sintaxe estruturada, tornando seu código mais legível.

                 • Compiladores: são programas que fazem a tradução de todas as
                 instruções do programa fonte gerando um programa executável.



                                      22
Programação 2




• Interpretadores: são programas que interpretam cada instrução
do programa fonte executando-a dentro de um ambiente de
programação.

• Compilação: é o processo, executado pelo compilador, que verifica
se existem erros de sintaxe no código fonte e gera um programa
executável.

• Erro de sintaxe: ocorre durante o processo de compilação do
programa, quando o programador, ao editar o seu programa
fonte, não respeita alguma regra de sintaxe da linguagem de
programação.

• Erro de lógica: ocorre durante a execução de um programa, devido
um erro na lógica dos comandos.




                                           23
Programação 2



                    Capítulo 2 – Conceitos
                    Preliminares para Programar
                    em C


                       Vamos conversar sobre o assunto?

                        Neste capítulo, serão abordados conceitos preliminares que
                    irão nos preparar para programar em C. Estes conceitos estão
                    relacionados à estrutura de um programa básico em C. Aqui, também,
                    será apresentado o ambiente de programação que utilizaremos
       Saiba Mais
                    para o desenvolvimento dos nossos programas – o Dev-cpp. Este
5
  O Dev-cpp é       ambiente apresenta uma interface amigável, que facilitará o processo
uma ferramenta
gratuita e pode
                    de programação. Vocês devem baixar e instalar o Dev-Cpp5, o
ser baixada         quanto antes, no computador que será utilizado para a prática desta
acessando o site:
www.bloodshed.      linguagem.
net/devcpp.html
                         É importante que vocês tenham paciência neste início de
                    aprendizado, já que precisamos, inicialmente, acumular o conhecimento
                    necessário para a construção de um programa completo em C.
                    Visando facilitar o aprendizado, em alguns momentos, será feito um
       Saiba Mais
                    paralelo entre a sintaxe do C e do Portugol do VisuAlg6 (linguagem
6
  Conheça
                    utilizada para escrever algoritmos).
mais o VisuAlg
pesquisando no
site: http://www.
apoioinformatica.
inf.br/visualg/
linguagem.htm




                                          24
Programação 2




     Figura 2.1: Qualidades de um programador: atenção, paciência e persistência


   Vale lembrar que qualquer linguagem de programação é assimilada
através da resolução de exercícios. É importantíssimo que a prática
de programar faça parte da rotina de vocês. Assim, separem sempre
um tempo para resolver as questões propostas neste material. Vocês
vão perceber o quanto é bom ver um programa rodando! Que venha
o C!


2.1. Estrutura de um Programa Básico em C

   Nesta seção, vamos estudar a estrutura de um programa básico
em C. Visando facilitar o entendimento e não sobrecarregar vocês
com muitos detalhes, alguns elementos da estrutura do programa
serão omitidos. Mas, no momento certo, abordaremos tais elementos,
certo? Assim, a estrutura do programa que será apresentada nesta
seção, é a estrutura mínima de um programa em C.

   Nas linguagens de programação em geral, existe uma estrutura que
indica a ordem em que deve ser disposto cada elemento do programa.
Esta ordem deve ser respeitada para que nossos programas fiquem
corretos. Como será a estrutura de um programa em C?

   A estrutura básica de um programa C deve seguir a seguinte
ordem:

   1. Inclusão de bibliotecas (quando necessário);

   2. Declaração das constantes (quando necessário);

   3. Programa principal;


                                                       25
Programação 2



                       • Declaração de variáveis (quando necessário);

                       • Seqüência de comandos.

                   Para entendermos melhor a estrutura básica de um programa C,
                vamos analisar o programa de exemplo 2.1, abaixo. Este programa
                calcula o cubo de um número inteiro fornecido pelo usuário. Na
                sequência, temos este programa resolvido utilizando o portugol, que é
                do conhecimento de vocês. Assim, fica fácil compararmos a estrutura
                do programa em C, com a estrutura do algoritmo. Não se preocupem
                em entender cada comando do exemplo abaixo, estamos apenas
                começando a estudar o C, certo?

                        Exemplo 2.1: Programa C – Cálculo do cubo de um número

                   1      #include <stdio.h>

                   2      main()

                   3      {

                   4            int num,c;

                   5            printf(“Cubo de um numeronn”);

                   6            printf(“Digite o numero: “);

                   7            scanf(“%d”,&num);

                   8            c = num*num*num;

                   9            printf(“nCubo de %d = %d”,num,c);

                   10           getche();

                   11     }


                   Segue abaixo o algoritmo, escrito no VisuAlg, que calcula o cubo
                de um número.




                                      26
Programação 2




         Exemplo 2.2: Algoritmo – Calculo do cubo de um número

   1     algoritmo “Cubo”

   2     var

   3            num, c: inteiro

   4     inicio

   5            escreval(“Cubo de um numero”)

   6            escreva(“Digite o numero: “)

   7            leia(num)

   8            c <- num*num*num

   9            escreval(“Cubo de “, num, “ = “, c)

   10    fimalgoritmo


    Um programa em C inicia com a inclusão de bibliotecas. Uma
biblioteca é um arquivo que contém comandos complementares,
que são utilizados pelo nosso programa. Para a inclusão de uma
biblioteca devemos usar um comando que é chamado de diretiva de
compilação. Este comando informa ao compilador quais bibliotecas
devem ser anexadas ao programa executável. Assim, o comando para
a inclusão de uma biblioteca tem a seguinte sintaxe:

                                Sintaxe

           #include <nome_do_arquivo_da_ biblioteca>


   De acordo com a sintaxe, para incluir uma biblioteca ao nosso
programa devemos colocar a diretiva de compilação #include e, entre
os símbolos < e >, colocamos o nome do arquivo da biblioteca. De
maneira geral, os arquivos de biblioteca têm a terminação .h (esse h
vem de header, ou seja, este é um arquivo de cabeçalho). Para cada
biblioteca, que será incluída no nosso programa, devemos colocar
um comando #include. No exemplo 2.1, na linha 1, é feita a inclusão
de uma biblioteca: stdio.h. Na medida em que formos aprendendo
os comandos, serão indicadas quais bibliotecas devem ser incluídas
no programa. A quantidade de bibliotecas e quais bibliotecas serão


                                              27
Programação 2



                      incluídas, depende dos comandos que serão utilizados no programa.
                      Pode ser que em um programa, não seja necessário incluir nenhuma
       Saiba Mais     biblioteca.

7
  Do Inglês,             O segundo item da estrutura de um programa C é a declaração
main significa
principal. Todo
                      das constantes, esse item é opcional, só constará no nosso programa,
programa C            caso seja necessário. Veremos a declaração de constantes, em
começa a sua
execução a partir     detalhes, no próximo capítulo. No exemplo 2.1 não foi necessário o
do programa
principal. Assim,
                      uso de constantes.
o programa
principal é uma           O terceiro item da estrutura do programa C é o programa principal.
parte obrigatória
na estrutura de       É no programa principal que colocaremos a sequência de comandos
um programa C.        que deve ser executada para a solução do problema que desejamos
                      resolver. Nós devemos informar onde começa e termina o programa
                      principal. O programa principal inicia com: main()7, como mostra a linha
                      2, do exemplo 2.1. A sequência de comandos do programa principal é
                      delimitada por um par de chaves: { (abre chaves) e } (fecha chaves).
        Saiba Mais    As chaves que delimitam o corpo do programa principal8 aparecem
                      nas linhas 3 e 11, do exemplo 2.1. Fazendo uma comparação com
8
  Chamamos            o algoritmo do exemplo 2.2, as chaves fazem o papel do “inicio” e
de corpo do
programa              “fimalgoritmo”, das linhas 4 e 10.
principal toda
a sequência               Logo no início do programa principal, devem ser declaradas as
de comandos
que faz parte         variáveis (que serão abordadas no próximo capítulo). A declaração
do programa
                      de variáveis é um item opcional, pode acontecer de não precisarmos
principal. Ou seja,
a seqüência de        declarar variáveis no nosso programa. No exemplo 2.1, a declaração
comando que
aparece entre         de variáveis é feita na linha 4. Foram declaradas duas variáveis do
as chaves de
                      tipo inteiro: num e c. No algoritmo, exemplo 2.2, as variáveis são
abertura e término
do programa           declaradas fora do programa principal, na seção de declaração de
principal.
                      variáveis (linhas 2 e 3).

                          Após a declaração das variáveis, colocamos a sequência de
                      comandos que o programa deverá executar. O programa termina com
                      o fecha chaves que delimita o programa principal.

                         Agora que já sabemos como é a estrutura de um programa básico
                      em C, vamos começar a aprender a sintaxe dos comandos para
                      darmos início ao desenvolvimento dos nossos programas.


                      2.2. Palavras Reservadas do C

                         Como mencionado no capítulo anterior, as linguagens de
                      programação são formadas por um conjunto de regras de sintaxe e

                                             28
Programação 2



semântica que ditam como o programa deve ser escrito. Com isso,
dentro dessas regras, existe um conjunto de palavras que tem um
significado para a linguagem de programação – são as palavras
reservadas. Uma palavra reservada é, essencialmente, um comando
e, na maioria das vezes, as palavras reservadas de uma linguagem
definem o que pode ser feito e como pode ser feito.

    As palavras reservadas são de uso exclusivo da gramática da
linguagem, por isso, não podem ser utilizadas, pelo programador, para
dar nome a alguma variável, constante ou função do seu programa.
Assim, um programador não pode ter uma variável chamada “int” no
seu programa C, já que “int” é uma palavra reservada que indica um
tipo de dado.
                                                                                  Saiba Mais
    Na linguagem C temos 32 palavras reservadas. Todas as palavras
                                                                          9
                                                                            A sigla ANSI
reservadas do C são escritas em minúsculo. A tabela abaixo mostra         significa:
as palavras reservadas, conforme definido pelo padrão ANSI9, para a       American
                                                                          National
linguagem C.                                                              Standards
                                                                          Institute (Instituto
                                                                          Nacional
        auto           default          float         unsigned            Americano de
                                                                          Padronização). É
        break            do              for           return             uma organização
        case           double           goto            short             que tem por
                                                                          objetivo facilitar a
        char            else            union          signed             padronização dos
        const          typedef            if           sizeof             trabalhos de seus
                                                                          membros.
        switch          while            int            static
       volatile         enum            long            struct
       continue        extern          register         void


    No Dev-cpp, ambiente de programação que será utilizado, sempre
que digitarmos uma palavra reservada no nosso programa, esta                      Saiba Mais
aparecerá em negrito. Isto facilita no momento da programação, pois
não precisaremos decorar esta lista de palavras reservadas. Que
                                                                          10
                                                                            Ao desenvolver
                                                                          nossos
alívio! Assim que uma palavra ficar em negrito no nosso programa,         programas
                                                                          utilizando boas
poderemos verificar se estamos utilizando-a de forma correta.             práticas de
                                                                          programação,
                                                                          teremos como
                                                                          resultado um
2.3 Uso de Comentários                                                    código fonte
                                                                          mais legível e
                                                                          um progama
   Os comentários são utilizados para documentar um programa. A           executável mais
                                                                          seguro e eficiente.
colocação de comentários em um programa é uma das boas práticas           Ao longo deste
de programação10. Os comentários irão facilitar o entendimento            material serão
                                                                          ensinadas boas
e manutenção de programas. Por exemplo, um programador é                  práticas de
                                                                          programação.
responsável por desenvolver o sistema de controle de vendas


                                                29
Programação 2



                     da sua empresa. Como o sistema é grande, após um tempo, ele
                     não lembrará mais o porquê de ter colocado uma sequência de
                     comandos no seu programa. Se o programa estiver bem comentado,
                     o programador poderá, rapidamente, ter esta resposta. Além disso,
                     quando desenvolvemos programas em grupo, é importante que os
                     demais membros do grupo entendam o raciocínio do nosso programa
                     e isso pode ser explicado através dos comentários.

                         Os comentários podem ser colocados em qualquer parte do
                     programa. Quando o compilador identifica um comentário, ele os
                     ignora, já que os comentários são apenas informações para o
                     programador. A linguagem C fornece dois tipos de comentários: de
                     linha e de bloco. Vamos detalhar como funciona cada um deles.

                         Os comentários de linha são mais utilizados quando desejamos
                     comentar uma única linha do nosso programa. Um comentário de
                     linha possui a sintaxe a seguir:

                                                     Sintaxe

                                           // texto do comentário


                        Um comentário de linha inicia com duas barras “//” e, na sequência,
                     vem o texto do comentário. O exemplo 2.3, a seguir, apresenta um
                     programa comentado. Na linha 7 temos o exemplo de um comentário
       Saiba Mais    de linha. Este comentário serviu para informar para que serve a
                     variável C. Assim que o compilador encontra “//”, ele ignora todo texto
11
  No Dev-            que vem após as duas barras11. Este tipo de comentário age apenas
cpp, quando
colocamos um         na linha que ele é inserido.
comentário, as
letras do texto          O segundo tipo de comentário disponível na linguagem C é o
comentado ficam
cinza                comentário de bloco. Os comentários de bloco são utilizados quando
                     queremos fazer um comentário maior, que compreenda mais de uma
                     linha de comentário. A sintaxe do comentário de bloco é a seguinte:

                                                     Sintaxe

                                           /* texto do comentário

                                                texto do comentário

                                                texto do comentário */


                        Um comentário de bloco inicia com barra-asterisco “/*” e termina
                     por asterisco-barra “*/”. O compilador irá ignorar tudo o que encontrar

                                           30
Programação 2



entre estes dois símbolos. Veja no exemplo 2.3, que nas linhas 2, 3,
e 4 aparece um comentário de bloco. Este tipo de comentário do
exemplo é utilizado para identificar quem é o programador quando
o programa foi feito e o que o programa faz. Devemos Adotar este
tipo de comentário no início dos nossos programas. Assim, ao abrir
um programa, rapidamente, saberemos para que ele serve. Devemos
tomar cuidado para não esquecer o “*/” que fecha o comentário de
bloco.

     Exemplo 2.3: Programa C Comentado – Calculo do cubo de um número


 1        #include <stdio.h>

 2        /*   Programador: Sônia França

 3             Data: 09/03/2009

 4             Programa calcular o cubo de um número           */

 5        main()

 6        {

 7              int Num, C; // C guarda o cubo do numero

 8              printf(“Cubo de um numeronn”);

 9              printf(“Digite o numero: “);

 10             scanf(“%d”,&Num);

 11             C = Num*Num*Num;

 12             printf(“nCubo de %d = %d”,Num,C);

 13             getche();

 14       }




2.4. Os Fundamentos do Ambiente C

   Na seção 1.5, do capítulo anterior, foram abordados os processos
de criação, compilação e execução de um programa. Nesta seção,
vamos detalhar um pouco mais estes processos, entendendo os

                                               31
Programação 2



                fundamentos do ambiente C. A figura 2.2 apresenta um ambiente
                C, com as seis fases pelas quais passa um programa, desde a sua
                edição, até a sua execução.




                                          Figura 2.2: Ambiente C


                   A fase 1 compreende a edição do nosso programa. O programa
                é criado com a utilização de um editor e é armazenado no disco do
                computador (HD - Hard Disk). O arquivo que contém o nosso programa
                tem a terminação .c, e este é chamado de programa fonte ou código
                fonte.

                   Ao terminar a edição do programa, o programador solicita que
                o seu código fonte seja compilado. O compilador traduz o código
                fonte para o código em linguagem de máquina (também chamado
                de código objeto). Vocês se lembram das diretivas de compilação?
                Antes da tradução, temos a fase 2, em que o pré-processador


                                     32
Programação 2



analisa o código fonte, executando as diretivas de compilação. O
pré-processador também é responsável por eliminar os comentários
que o programador colocou no seu código fonte. O pré-processador é
ativado automaticamente pelo compilador. Na fase 3, é que ocorre o
processo de compilação, após o código fonte ter sido pré-processado.
Para que o processo de compilação seja concluído, o programa não
pode apresentar erros de sintaxe.

   Na fase 4, ocorre o processo de linking, que consiste na ligação do
código objeto, gerado pelo compilador, com o código das funções que
estão disponíveis nas bibliotecas que incluímos no nosso programa.
Ou seja, no exemplo 2.1, em que foi incluída uma biblioteca, o linker
deverá localizar o arquivo da biblioteca e fazer a ligação com o código
objeto. Esta fase termina com a geração do programa executável,
armazenando-o no disco do computador. No Dev-cpp, o programa
executável é armazenado no mesmo diretório que tiver armazenado
o código fonte. Na Figura 2.3, temos um diretório contendo o arquivo
do código objeto (.c – C source file) e o programa executável (.exe –
application). O arquivo do programa executável não pode ser editado,
o que nós podemos editar é o arquivo do código fonte.




         Figura 2.3: Diretório contendo código objeto e o programa executável            Saiba Mais

                                                                                  12
                                                                                    CPU é a sigla
   As fases 5 e 6 consistem na execução do programa executável.                   para Central
Para dar início a execução de um programa, é necessário que o mesmo               Processing
                                                                                  Unit, em Inglês,
esteja na memória principal do computador. Isto é feito na fase 5, pelo           ou Unidade
                                                                                  Central de
carregador do programa. O carregador pega o programa executável                   Processamento.
que está armazenado no disco e o transfere para memória principal.                A CPU é a parte
                                                                                  do computador
Assim que o programa está na memória principal do computador, ele                 que processa
                                                                                  as instruções
está pronto para ser executado. A execução de um programa é feita                 contidas em um
pela CPU12, que executa as instruções do programa, uma após a                     programa.

outra, até o seu término.

                                                        33
Programação 2



                         Na próxima seção, vamos conhecer o Dev-Cpp, que possibilitará a
                     criação, compilação e execução dos nossos programas. Com o Dev-
                     cpp poderemos observar as fases aqui descritas.


                     2.5. Conhecendo o Dev-cpp

       Saiba Mais       O Dev-Cpp é um ambiente de programação que edita, compila
                     e executa programas C e C++13. Sabem porque iremos usar o Dev-
13
   C++ é uma         cpp para desenvolver nossos programas? O Dev-cpp é gratuito
linguagem de
programação que      (muito importante!) e possui uma interface bastante amigável (mais
surgiu a partir
do C.
                     importante ainda!). A Figura 2.4 apresenta a tela principal do Dev-
                     cpp.




                                          Figura 2.4: Tela principal do Dev-cpp


                         Como mencionado no início deste capítulo, vocês deverão baixar
                     o Dev-cpp e instalar no seu computador, para que possamos fazer
                     os nossos programas. O processo de instalação não apresenta
                     dificuldades. Vocês só devem ficar atentos no momento que for
                     questionado sobre qual idioma deseja utilizar, para que faça a escolha
                     do idioma correto (Português), certo? Assim, a interface do Dev-cpp
                     ficará toda em Português, facilitando os seus estudos.

                        Vamos analisar a tela principal do Dev-cpp, apresentada na figura
                     2.4. Na parte 1 temos o menu principal do Dev-cpp, que disponibiliza


                                           34
Programação 2



as seguintes opções:

   • Arquivo: o menu arquivo disponibiliza, basicamente, as opções
     para criar, salvar, imprimir e fechar arquivos.

   • Editar: neste menu encontraremos as opções: copiar, colar,
     selecionar, refazer e desfazer.

   • Localizar: as opções deste menu nos possibilita localizar alguma
     palavra no programa fonte, além de permitir substituições de
     uma palavra por outra.

   • Exibir: neste menu temos as opções que nos permite exibir ou
     esconder itens da interface do ambiente, como por exemplo:
     barra de ferramenta e barra de status.

   • Projeto: permite a adição ou remoção de arquivos em um
     projeto.

   • Executar: é através deste menu que iremos chamar as opções
     para a compilação e execução do nosso programa.
                                                                                  Saiba Mais
   • Debug: o debugador auxilia o programador a encontrar erros
     no programa, tornando possível acompanhar passo a passo a             14
                                                                             O CVS, ou
     execução dos comandos do programa. Neste menu teremos as              Concurrent
                                                                           Version System
     opções para utilização do debugador.                                  (Sistema
                                                                           de Versões
   • Ferramentas: no menu ferramentas temos as opções para                 Concorrentes)
                                                                           é um sistema
     configurar o ambiente (mudar cores, tipo de letra, dentre outros)     de controle de
                                                                           versões que
     e também a opção para atualização do Dev-cpp.                         permite que
                                                                           se trabalhe
   • CVS14: este menu é utilizado por quem faz o controle de               com diversas
                                                                           versões do
     versões dos programas. Apesar de ser uma função bastante              mesmo arquivo.
     interessante, é mais utilizado quando trabalhamos em grupo ou         Este sistema
                                                                           mantém as
     com programas grandes.                                                versões antigas
                                                                           do seu arquivo
   • Janela: neste menu estão disponíveis as opções que nos                e os logs de
                                                                           quem e quando
     permitem escolher qual janela de edição deve ficar visível            manipulou os
                                                                           arquivos.
     no momento. Utilizamos esta opção quando temos vários
     programas abertos ao mesmo tempo.                                     É especialmente
                                                                           útil para se
   • Ajuda: neste menu encontramos o help do Dev-cpp.                      controlar versões
                                                                           de um software
                                                                           durante seu
   Na parte 2, da Figura 2.4, temos os ícones de atalhos para as           desenvolvimento,
opções mais utilizadas no Dev-Cpp. Se vocês deixarem o mouse               ou para
                                                                           composição
sobre o ícone, aparecerá um texto, que informa o que ele faz. Na parte     colaborativa de
                                                                           um documento.
3 temos a área de edição do programa. Para a área de edição ficar


                                             35
Programação 2



                     disponível, vocês deverão escolher a opção Arquivo/Novo/Arquivo
                     Fonte. É nesta área que digitaremos os nosso programas (código
                     fonte). A parte 4 fica visível quando nosso programa apresenta algum
                     erro de compilação. O compilador indicará em qual linha foi encontrado
                     um erro, e fornece uma dica do que pode ser o erro. Mesmo que
                     vocês tenham instalado o Dev-cpp em Português, as mensagens de
                     erro são apresentadas em Inglês. Por isso, é importante que vocês
                     comecem a se familiarizar com estas mensagens, para que consigam
                     tirar mais rapidamente os erros dos programas.

                       Segue abaixo um roteiro do que vocês precisam fazer para editar,
                     compilar e executar seus programas no Dev-cpp:

                        1. Crie um arquivo fonte novo na opção: Arquivo/Novo/Arquivo
                           Fonte;

                        2. Digite o programa fonte na área de edição. Ao terminar de editá-
                           lo, salve o arquivo;

       Saiba Mais       3. Compile o programa na opção: Executar/Compilar;

15
  O erro de             4. Se der algum erro no programa, vejam as indicações de
compilação pode            erro fornecidas pelo compilador15. Conserte os erros, salve o
não estar na linha
que o complilador          arquivo e compile novamente. Isto deve ser feito até que seja
está indicando. O
erro poderá estar:         apresentada uma mensagem indicando que o programa não
na linha que ele           tem erros de compilação.
está indicando,
na linha
imediatamente           5. Se vocês acessarem o diretório que o arquivo do código fonte
acima, ou ainda,
                           foi armazenado, notarão que foi criado um arquivo com a
em linhas mais
acima (menos               extensão .exe (com o mesmo nome do arquivo do código fonte).
comum de
acontecer).                Este é programa executável. Para executá-lo, escolha a opção
                           Executar/Executar no Dev-cpp. Imediatamente, aparecerá a
                           janela de execução do programa, como mostra a Figura 2.5.




                                      Figura 2.5: Janela do programa em execução


                        É nesta janela que o programa será executado. Aqui o usuário

                                           36
Programação 2



deverá fornecer os dados solicitados pelo programa, neste caso o
programa está solicitando que seja digitado um número. Além disso,
também receberá os resultados fornecidos pelo programa. Quando
a execução de um programa é finalizada, esta janela será fechada
automaticamente.

   Agora que já conhecemos o ambiente de desenvolvimento de
programa C, precisamos aprender os comandos para fazer um
programa completo. Nos próximos capítulos iremos ver tais comandos,
para podermos começar a programar. Não fiquem ansiosos(as), a
nossa hora de programar está chegando!




           Atividades e Orientações de Estudo


    Vamos resolver mais uma lista de exercícios? Note que estamos
conhecendo, ao poucos, os detalhes que envolve a programação de
computadores. A resolução das atividades propostas fará com que
estes conceitos sejam assimilados de forma mais natural. É sempre
importante complementar o nosso conhecimento com a leitura de
livros e materiais disponíveis na Internet, indicados na seção “Conheça
Mais”. Será que vocês estão lembrados (as) das respostas para as
questões abaixo?

   1. Quando é que precisamos incluir uma biblioteca em um
      programa C?

   2. O que é diretiva de compilação?

   3. O que deve ter no corpo do programa principal?

   4. O que é uma palavra reservada?

   5. Porque devemos comentar nossos programas?

   6. Qual a função do pré-processador no momento da compilação
      de um programa?

   7. Qual o papel do linker no processo de compilação?

   8. Qual elemento do computador é responsável pela execução do
      programa?




                                             37
Programação 2




                          Conheça Mais


                   Vocês poderão aprender mais sobre boas práticas de programação
                nos sites:

                      http://www.ibm.com/developerworks/aix/library/au-hook_
                      duttaC.html

                      http://www2.eletronica.org/artigos/eletronica-digital/
                      programando-em-c-boas-praticas

                   Para conhecer mais detalhes do ambiente de programação que
                iremos utilizar, acessem os sites:

                      http://www.bloodshed.net/dev/index.html

                      http://www.uniqueness-template.com/devcpp/




                          Vamos revisar?


                   Nesta seção iremos revisar os principais tópicos vistos neste
                capítulo. Vale a pena dar uma lida para verificar como está o nosso
                aprendizado. Observem o resumo a seguir:

                 • A estrutura básica de um programa C deve seguir a seguinte ordem:
                 inclusão de bibliotecas, declaração das constantes e programa
                 principal. No corpo de programa principal temos: declaração de
                 variáveis e seqüência de comandos.

                 • Uma biblioteca é um arquivo que contém comandos
                 complementares, que são utilizados pelo programa. Para a inclusão
                 de uma biblioteca devemos usar um comando que é chamado de
                 diretiva de compilação.

                 • As palavras reservadas de uma linguagem definem o que pode ser
                 feito e como pode ser feito. O programador não pode utilizar uma
                 palavra reservada da linguagem para dar nome as suas variáveis,
                 constantes e funções.

                 • O uso de comentário nos programas é uma boa prática de
                 programação, e facilita o entendimento do código fonte.



                                      38
Programação 2




• Passos para o desenvolvimento de um programa: edição, pré-
processamento, compilação, ligação (linking), carregamento e
execução.

• O compilador traduz o código fonte para o código em linguagem
de máquina. O pré-processador analisa o código fonte, executando
as diretivas de compilação.

• O linker faz a ligação do código objeto, gerado pelo compilador,
com o código das funções que estão disponíveis nas bibliotecas
que incluímos no programa.

• Ao ser executado, um programa deve ser carregado na memória.
O carregador, também conhecido por loader, e responsável por
acessar o programa armazenado no disco e carregá-lo para a
memória principal do computador.

• Os programas são executados passo a passo pelo processador
do computador.




                                           39
Programação 2



                     Capítulo 3 – Tipos de Dados,
                     Variáveis e Constantes

       Saiba Mais       Vamos conversar sobre o assunto?

16
  A linguagem           Programas são feitos para manipular dados. Armazenar notas,
C não possui
o tipo lógico,
                     calcular médias, alterar um endereço, etc. Os dados são a essência
que armazena         de um programa. Dados precisam ser armazenados e modificados
verdadeiro ou
falso.               ao longo da execução do programa. Neste capítulo, iremos conhecer
                     os tipos de dados suportados pela linguagem C e aprender a definir
                     constantes e variáveis.

       Saiba Mais        Inicialmente, os comandos serão apresentados em separado. Mas,
                     logo em seguida, veremos o ponto em que cada comando deve ser
17
  Bit é uma          colocado na estrutura do programa, certo? Tenham paciência! Vocês
abreviatura de
“Binary Digit”       irão notar que muito dos conceitos estudados nos capítulos anteriores
(dígito binário).
Este termo foi
                     serão referenciados neste capítulo. Mas isto não é problema, não é
criado pelo          mesmo? Vamos continuar os nossos estudos, conhecendo mais um
engenheiro belga
Claude Shannon       pouco da linguagem C.
que em 1949
para simbolizar
uma unidade de
informação. Tudo     3.1. Tipos de dados
na informática é
medido em bits,
desde o tamanho         Nesta seção, vamos aprender um conceito importante em
de um número
até a velocidade     programação, que é: tipo de dados. De maneira geral, os programas
de transferência
de dados em uma
                     manipulam dados, armazenando-os e, muitas vezes, modificando seus
rede. Por ser uma    valores. Primeiramente, vamos conhecer quais os tipos de dados são
unidade binária,
pode ter apenas      manipulados na linguagem C. Basicamente, a linguagem C, manipula
dois valores, zero
ou um.
                     quatro tipos de dados: inteiro, real, caractere e void16. Para cada tipo
                     de dado, é necessária uma quantidade de bits17 para armazená-lo.
A partir do bit,     Além disso, cada tipo de dado possui um conjunto de operações
surgiu o byte, que
nada mais é do       que pode ser executada sobre ele. Nas subseções seguintes, vamos
que um conjunto
de 8 bits.           detalhar cada tipo de dado separadamente.
Existem diversos
múltiplos dos
bytes: um kilobyte      3.1.1. Inteiro
(KB), equivalente
a 1.024 bytes;          Os dados do tipo inteiro são toda e qualquer informação numérica
um megabyte
(MB), equivalente    que pertença ao conjunto dos números inteiros relativos (negativo,
a 1.024 KB; e
um gigabyte,         nulo ou positivo). Os números inteiros, em C, se dividem em três tipos,
equivalente a        como mostra a tabela a seguir.
1.024 MB.



                                            40
Programação 2




        Tipo            Tamanho                 Intervalo Suportado

        Short            16 bits                -32.768 a +32.767

         Int             32 bits         -2.147.483.648 a + 2.147.483.647

                                             -9.223.372.036.854.775.808
        Long            64 bits                           a
                                             +9.223.372.036.854.775.807
                                                                                       Atenção
    Qual a diferença entre cada um deles? A diferença entre os tipos
short, int e long é a quantidade de memória18 que é reservada para            18
                                                                                A memória
                                                                              é a parte do
armazená-los. Veja como é simples: à medida que se utiliza mais               computador que
memória, aumenta o intervalo do valor que pode ser armazenado. Por            tem como função
                                                                              o armazenamento
exemplo, para armazenar um dado do tipo short, são reservados 16              de dados. Quando
                                                                              um dado vai ser
bits de memória. Com isso, o tipo short pode suportar um número               armazenado,
inteiro no intervalo de -32.768 a +32.767, como apresentado na                precisamos
                                                                              reservar uma
tabela. Portanto, dependendo do valor que será armazenado, deve               quantidade de
                                                                              memória para
ser escolhido um tipo (short, int ou long) que comporte tal valor. Por        isto.
exemplo, para armazenar a idade de um funcionário, o tipo short
é o mais adequado (já que a idade de uma pessoa é um valor que
raramente ultrapassa 100). No entanto, para armazenar a quantidade
de eleitores de uma cidade, deve-se usar o tipo int (note que em
muitas cidades, a quantidade de eleitores ultrapassará o maior valor
suportado pelo tipo short: 32.767). Para facilitar nosso estudo, neste
material, sempre será usado o tipo int para armazenar os dados
inteiros.

   3.1.2. Real

    Os dados do tipo real são toda e qualquer informação numérica
que pertença ao conjunto de números reais (negativo, positivo ou
nulo). Os números reais, em C, podem ser de dois tipos, como mostra
a tabela abaixo:

                Tipo           Tamanho           Intervalo Suportado

                float              32 bits       3.4E-38 a 3.4E+38

               double              64 bits      1.7E-308 a 1.7E+308


    Para o tipo float são reservados 32 bits de memória, o que
possibilita armazenar um valor no intervalo 3.4–38 a 3.438. Como o tipo
float suporta valores bem altos, neste material, sempre será usado o
tipo float para armazenar os dados reais.

                                                       41
Programação 2



                   3.1.3. Caractere

                    Na linguagem C, os caracteres são do tipo char, representados
                por toda e qualquer informação composta por um único caractere
                alfa numérico (a, b, c,...z, A, B, C,...Z, 0...9) ou especial (como por
                exemplo: ; # ? @ ! < ?). O tipo char armazena um único caractere.
                Quando se deseja armazenar vários caracteres, é necessário definir
                um vetor de caractere (mais detalhes na seção 3.2.2). Por exemplo,
                o nome de um aluno é formado por uma cadeia de caracteres,
                assim, será necessário usar um vetor de caracteres. Cada caractere
                armazenado ocupa o espaço de 8 bits de memória. Um caractere
                deve ser representado entre apóstrofo, por exemplo: ‘a’. Mas, quando
                temos uma cadeia de caracteres, esta deve ser representada entre
                aspas dupla, por exemplo: “Pedro Goncalves”.

                   3.1.4. Void

                    Em Inglês, void quer dizer vazio e é isto mesmo que o void é. Void
                é um tipo que não armazena nada (um tanto esquisito, não é?). Este
                tipo serve para indicar que um resultado não tem um tipo definido. Ele
                é utilizado quando estamos definindo funções nos nossos programas.
                Permiti-nos desenvolver funções que não retornam nada e funções
                que não têm parâmetros. Voltaremos a falar do tipo void no Volume 2,
                no capítulo que aborda modularização.


                3.2. Variáveis e Constantes

                    Agora que já sabemos os tipos de dados manipulados pela
                linguagem C, vamos aprender como reservar espaços de memória
                para o armazenamento dos nossos dados.

                    Qualquer dado que seja manipulado pelo programa deve ficar
                armazenado na memória principal do computador. Para que o
                armazenamento seja possível, precisaremos reservar espaços na
                memória principal do computador. As variáveis e constantes são
                unidades básicas de armazenamento dos dados em programação.
                Elas são um espaço de memória reservado para armazenar um certo
                tipo de dado e possuem um identificador (nome) para referenciar o
                seu conteúdo. Dessa forma, nossos dados ficam armazenados em
                constantes ou variáveis.

                   Uma variável pode conter, a cada instante, valores diferentes. No


                                      42
Programação 2



entanto, as constantes referem-se a valores fixos que não podem
ser alterados durante a execução do programa. O modo como cada
constante é representada depende do seu tipo (este assunto será
detalhado um pouco mais a frente).

    Para entender o conceito de variáveis e constantes, vamos fazer
a seguinte analogia: um armário cheio de gavetas de tamanhos
diferentes. Acompanhem o raciocínio: Pedro tem um armário e
decide que em cada gaveta será guardado um tipo de roupa: camisa,
bermuda, calça, etc.




                     Figura 3.1: Armário cheio de gavetas


   Em uma dada gaveta, só podem ser armazenadas camisas. Não
será permitido o armazenamento de calças nesta gaveta. Para facilitar
a identificação, Pedro coloca uma etiqueta informando o que cada
gaveta guarda. Com isso, Pedro poderá identificar, rapidamente, em
qual a gaveta estão guardadas suas camisas.

    Agora vamos associar a ideia das gavetas com a ideia de variáveis,
constantes e tipo. As gavetas que guardam as roupas são como os
espaços de memória que armazenam nossos dados. Assim como uma
gaveta só pode armazenar um tipo de roupa, os espaços de memória
são especificados para armazenar um tipo de dado. Dependendo do
tipo de roupa, a gaveta precisa ser maior ou menor. Da mesma forma,
dependendo do tipo de dado, é feito uma reserva de mais ou menos
memória para armazená-lo (de acordo com as tabelas da seção 3.1).

   As etiquetas das gavetas são os identificadores dos nossos

                                                    43
Programação 2



                espaços de memória. Assim, iremos encontrar, facilmente, um dado
                armazenado nos nossos espaços de memória. Quando temos uma
                variável, o conteúdo da nossa gaveta pode mudar ao longo do
                tempo. Mas, no caso de uma constante, seu conteúdo será sempre o
                mesmo.

                   Nas próximas seções, vamos aprender as regras para dar nomes
                às nossas variáveis e constantes e como criar as nossas gavetas –
                espaços de memória (variáveis e constantes).

                   3.2.1. Identificadores

                   Para que o compilador saiba quais dados estamos querendo
                manipular, eles precisam ter um nome. É como nós, todos temos um
                nome. Sabemos quando alguém está nos chamando quando falam
                o nosso nome. Vai acontecer a mesma coisa com os espaços de
                memória dos nossos programas, precisamos identificá-los, de alguma
                forma. Os identificadores são os nomes que damos as nossas
                variáveis, constantes, funções e procedimentos usados no programa.
                Para criar um identificador é necessário respeitar as regras a seguir:

                   • O primeiro caractere deve ser uma letra ou _ (underscore);

                   • O restante do nome deve ser formado por caracteres
                     pertencentes ao seguinte conjunto: a,b,c,..z, A,B,C,...Z,
                      0,1,2,...,9, _ (ou seja: letras, números e underscore);

                   • Não deve haver espaço em branco (ou seja, não existe
                     identificadores compostos, formados por dois ou mais nomes);

                   • Não utilizar acentos, nem cedilha;

                   • Os identificadores podem ter até 32 caracteres;

                   • Não deve haver identificadores repetidos (Se dermos o mesmo
                     nome para duas variáveis do nosso programa, o compilador
                     não vai saber qual delas será chamada, e isso não pode
                     acontecer).

                   A linguagem C faz distinção de maiúsculas e minúsculas. Assim,
                os identificadores: Media, MEDIA, MediA e media, são diferentes.
                O fato de termos uma única letra de forma diferente (maiúscula ou
                minúscula), já faz com que os identificadores se diferenciem. Esta
                propriedade é chamada de case sensibility (sensibilidade a letras
                maiúsculas e minúsculas).


                                      44
Programação 2




                            DICA: Boa Prática de Programação

      Escolham bem os nomes das variáveis e constantes do
   programa. Os identificadores escolhidos devem ser claros, a fim
   de explicitar o conteúdo que será armazenado, mas também
   não devem ser extensos para não dificultar a escrita.


   A seguir, vamos verificar exemplos de identificadores corretos e
incorretos:

   • Identificadores corretos: a, x2, Nome_Aluno, Media,
     SalarioFuncionario. Note que, quando queremos usar
     identificadores com mais de uma palavra, que foi o caso de
     Nome_Aluno, usamos o _ para ligar uma palavra a outra. Ou
     usamos as palavras juntas, como o exemplo SalarioFuncionario.
     Lembrando que não podemos usar espaço em branco.

   • Identificadores incorretos: 2m (começou com número),
     media* (caractere * não é permitido), Nome disciplina (não pode
     haver espaço em branco), funcionário (não pode acentuar).

   Até este momento, vimos os conceitos de tipos de dados, variáveis,
constantes e identificadores. Na próxima seção, estes conceitos
serão utilizados em conjunto, para que possamos declarar as nossas
variáveis, ou seja, criar espaços de memória para armazenar os dados
manipulados pelo nosso programa. Continuemos a nossa leitura.

   3.2.2. Declaração de Variáveis

    Para que se possa usar uma variável em um programa,
primeiramente, é necessário fazer a declaração dela. A declaração
de uma variável informa ao processador duas coisas: o identificador
(nome) da variável e o seu tipo de dado. As variáveis precisam de
um nome para que o processador saiba onde desejamos armazenar
o nosso dado. Além disso, toda variável precisa ser associada a um
tipo de dado, para que o processador reserve o espaço de memória
necessário para o seu armazenamento. Como visto na seção 3.1, cada
tipo de variável, ocupa uma quantidade de bits diferente. Resumindo,
toda variável possui um nome, um tipo e um conteúdo (ou valor que é
armazenado na variável).



                                            45
Programação 2



                   A declaração de variáveis deve obedecer a seguinte sintaxe:

                                                     Sintaxe

                                  tipo [variavel_1, variavel_2, ...];


                   Onde tipo é o tipo de dado (int, float, char) e variavel_1 é o nome
                da variável a ser declarada. O nome da variável deve seguir a regra
                dos identificadores (mencionadas na seção 3.2.1). Se houver mais de
                uma variável do mesmo tipo, seus nomes são separados por vírgulas.
                Notem que, no final do comando, aparece um ponto e virgula (;),
                indicando ao compilador que o comando terminou.

                                    Exemplo 3.1: Declaração de Variáveis

                              1      int     idade, matricula;

                              2      float      media, total;

                              3      char       letra, nome_aluno[20];


                   As variáveis idade e matricula são espaços de memória que
                armazenam números inteiros. As variáveis media e total armazenam
                números reais. Note que na linha 3, temos as variáveis letra e
                nome_aluno. Quando uma variável caractere tem apenas um único
                caractere, na sua declaração, é necessário apenas dar um nome a
                esta variável.

                   Quando houver necessidade de armazenar vários caracteres,
                temos o que é chamado de cadeia de caracteres, vetor de caracteres
                ou string. Uma cadeia de caracteres forma uma palavra ou frases. Para
                declarar uma variável capaz de armazenar uma cadeia de caracteres,
                devemos colocar ao lado do nome da variável, entre colchetes, um
                valor inteiro, que significa quantos caracteres podem ser armazenados
                nesta cadeia. Assim, a variável nome_aluno, declarada na linha 3, tem
                capacidade de armazenar uma palavra/frase com até 20 caracteres.

                     A figura 3.2 representa a memória do computador, após a declaração
                das variáveis do exemplo. Cada caixa representa uma variável. E,
                cada variável possui o seu identificador. Assim, esta declaração de
                variáveis resultou na reserva de seis espaços na memória. Toda vez
                que precisarmos acessar ou armazenar o conteúdo de uma variável,
                utilizaremos o seu identificador.



                                           46
Programação 2




             Figura 3.2: Representação da memória do computador
                 após a declaração de um conjunto de variáveis




                                                                  Atenção

     Como dito anteriormente, o C difere as letras minúsculas
  das maiúsculas. Assim, os tipos de dados e comandos que
  iremos aprender ao longo da disciplina, DEVEM ser escritos em
  minúsculo. Se vocês fizerem a seguinte declaração : Int x,y; Vai
  ocorrer um erro no momento da compilação do seu programa,
  já que o C não conhece o tipo Int com “I” maiúsculo. Fiquem
  atentos, pois esse é um erro comum para quem está começando
  a programar em C.


    De acordo com o que foi visto, quando estudamos a estrutura
da um programa C, as variáveis devem ser declaradas logo quando
inicia o corpo do programa principal. Vamos estudar, a seguir, como
fazemos para declarar as nossas constantes.

   3.2.3. Declaração de Constantes

    Diferente das variáveis, as constantes mantêm seu valor ao
longo do programa. Para indicar ao compilador que se trata de uma
constante, a diretiva de compilação #define é utilizada. Segue a
sintaxe da declaração de uma constante.

                                 Sintaxe

                  #define <identificador> <valor>




                                                  47
Programação 2



                   Não é necessário colocar o ponto e vírgula no final da linha e
                também não precisa informar o tipo de dado da constante. O valor
                de uma constante não pode ser modificado, de maneira alguma, ao
                longo da execução do programa.

                    O modo como cada constante é representada depende do seu
                tipo. Constantes do tipo inteiro são representadas por números sem
                o componente fracionário, por exemplo, 123 e 2009. Constantes reais
                precisam do uso de ponto decimal seguido do componente fracionário
                do número, por exemplo, 302.54. Constantes caractere são colocadas
                entre apóstrofos, por exemplo, ‘a’. Constantes cadeia de caractere
                são colocadas entre aspas duplas, por exemplo, “Casa” e “Maria”. A
                seguir são apresentadas as declarações de quatro constantes:

                                Exemplo 3.2: Declaração de Constantes

                            1    #define DIAS 7

                            2    #define PI 3.1416

                            3    #define RESPOSTA ‘s’

                            4    #define DISCIPLINA “Matemática”


                    De acordo com o exemplo, a constante DIAS irá armazenar sempre
                7. Como o valor que esta constante recebeu foi um valor inteiro, o
                compilador entende, automaticamente, que esta é uma constante
                inteira. Da mesma forma, como a constante PI recebeu 3.1416 (um
                número real), o compilador saberá que se trata de uma constante do
                tipo real. A constante RESPOSTA armazena um char e DISCIPLINA
                uma cadeia de caracteres.

                    É interessante declarar uma constante quando sabemos que um
                valor não será modificado ao longo da execução do programa. Por
                questões de padronização, declare as suas constantes com todas as
                letras em maiúsculo, como apresentado nos exemplos. Assim você
                estará diferenciando-as das variáveis.

                   De acordo com a estrutura de um programa C, as nossas
                constantes são declaradas no início do programa, logo após incluirmos
                as bibliotecas que serão utilizadas. Estão lembrados(as) disso? Se
                não estão, deem uma revisada na seção 2.1, certo?

                   Ao serem criadas, as constantes já recebem o valor que elas vão
                armazenar ao longo do programa. Isto não acontece com as variáveis.


                                      48
Programação 2



Mas como fazemos para armazenar um valor em uma variável? Esta
resposta vocês encontrarão na próxima seção.


3.3. Operador de Atribuição (=)

    Esse operador é utilizado para armazenar um valor em uma dada
variável. Assim, o operador de atribuição nos possibilita armazenar
um dado em um espaço de memória, que foi previamente declarado.
É importante que o dado que será armazenado seja compatível com
o tipo da variável que receberá a atribuição. Por exemplo, as variáveis
reais podem receber valores reais e inteiros. No entanto, uma variável
inteira, não pode receber um valor real. Segue a sintaxe do operador
de atribuição.

                                Sintaxe

                          Variavel = Valor;

                      Variavel_1 = Variavel_2;

                 Variavel = Expressão Aritmética;

                         Variavel = função;

         Variavel_1 = variavel_2 = variavel_3 = valor;


   O operador de atribuição é representado pelo símbolo =. No lado
esquerdo do operador da atribuição, temos a variável que vai receber
o valor. No lado direito do operador, temos o valor que será atribuído
à variável. Ao final da linha de atribuição deve ter um ponto e vírgula.

   Notem que o operador de atribuição permite várias possibilidades.
Para um melhor entendimento, o exemplo 3.3 apresenta cada uma
das possibilidades do operador de atribuição.




                                              49
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)
Linguagem C (UFRPE)

Mais conteúdo relacionado

Mais procurados

Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
nataferraz
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
Robson Ferreira
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
Robson Ferreira
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
Robson Ferreira
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem c
Marcia Santana
 

Mais procurados (20)

Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem C
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Compiladores 1
Compiladores 1Compiladores 1
Compiladores 1
 
Introducao a LPC
Introducao a LPCIntroducao a LPC
Introducao a LPC
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem c
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 

Semelhante a Linguagem C (UFRPE)

Logica de programação
Logica de programaçãoLogica de programação
Logica de programação
Jose Silva
 
300 ideias para programar
300 ideias para programar300 ideias para programar
300 ideias para programar
Adrielle Dri
 
(LP2) Tópico 00 - Apresentação da Disciplina
(LP2) Tópico 00 - Apresentação da Disciplina(LP2) Tópico 00 - Apresentação da Disciplina
(LP2) Tópico 00 - Apresentação da Disciplina
Fabricio Narcizo
 
Prova de algoritmos e estrutura de dados
Prova de algoritmos e estrutura de dadosProva de algoritmos e estrutura de dados
Prova de algoritmos e estrutura de dados
Bruno Vale
 
Apresentação roteiro de projeto - alessandra , marlon
Apresentação  roteiro de projeto - alessandra , marlonApresentação  roteiro de projeto - alessandra , marlon
Apresentação roteiro de projeto - alessandra , marlon
marlondrany37
 
ApresentaçãO Geral Curso
ApresentaçãO Geral CursoApresentaçãO Geral Curso
ApresentaçãO Geral Curso
guestf0d90d
 

Semelhante a Linguagem C (UFRPE) (20)

ATPS - Programação Estruturada II
ATPS - Programação Estruturada IIATPS - Programação Estruturada II
ATPS - Programação Estruturada II
 
Logica de programação
Logica de programaçãoLogica de programação
Logica de programação
 
Guia do Estudante - Programador de Sistemas FIC IFB.pptx
Guia do Estudante - Programador de Sistemas  FIC IFB.pptxGuia do Estudante - Programador de Sistemas  FIC IFB.pptx
Guia do Estudante - Programador de Sistemas FIC IFB.pptx
 
00011
0001100011
00011
 
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£oApostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
 
Guia iti
Guia itiGuia iti
Guia iti
 
300 ideias para programar
300 ideias para programar300 ideias para programar
300 ideias para programar
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
(LP2) Tópico 00 - Apresentação da Disciplina
(LP2) Tópico 00 - Apresentação da Disciplina(LP2) Tópico 00 - Apresentação da Disciplina
(LP2) Tópico 00 - Apresentação da Disciplina
 
Prova de algoritmos e estrutura de dados
Prova de algoritmos e estrutura de dadosProva de algoritmos e estrutura de dados
Prova de algoritmos e estrutura de dados
 
Plano do Projeto
Plano do ProjetoPlano do Projeto
Plano do Projeto
 
Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programação
 
Linguagem de Programação Comercial
Linguagem de Programação ComercialLinguagem de Programação Comercial
Linguagem de Programação Comercial
 
Apresentação roteiro de projeto - alessandra , marlon
Apresentação  roteiro de projeto - alessandra , marlonApresentação  roteiro de projeto - alessandra , marlon
Apresentação roteiro de projeto - alessandra , marlon
 
Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., DilermandoLivro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
 
Ementa tec informatica
Ementa tec informaticaEmenta tec informatica
Ementa tec informatica
 
Apresentação formação projeto uca
Apresentação formação projeto ucaApresentação formação projeto uca
Apresentação formação projeto uca
 
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
Apresentação sobre experiência curso à distância sobre NumPy e Proc. Imagens ...
 
IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1IES GF - Linguagem de Programação Estruturada - Parte 1
IES GF - Linguagem de Programação Estruturada - Parte 1
 
ApresentaçãO Geral Curso
ApresentaçãO Geral CursoApresentaçãO Geral Curso
ApresentaçãO Geral Curso
 

Último

SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
NarlaAquino
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 

Último (20)

DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.ppt
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 

Linguagem C (UFRPE)

  • 1. Programação 2 Sônia Virginia Alves França Recife, 2009
  • 2. Universidade Federal Rural de Pernambuco Reitor: Prof. Valmar Corrêa de Andrade Vice-Reitor: Prof. Reginaldo Barros Pró-Reitor de Administração: Prof. Francisco Fernando Ramos Carvalho Pró-Reitor de Extensão: Prof. Paulo Donizeti Siepierski Pró-Reitor de Pesquisa e Pós-Graduação: Prof. Fernando José Freire Pró-Reitor de Planejamento: Prof. Rinaldo Luiz Caraciolo Ferreira Pró-Reitora de Ensino de Graduação: Profª. Maria José de Sena Coordenação Geral de Ensino a Distância: Profª Marizete Silva Santos Produção Gráfica e Editorial Capa e Editoração: Allyson Vila Nova, Rafael Lira, Italo Amorim e Glaydson da Silva Revisão Ortográfica: Ivanda Martins Ilustrações: Diego Almeida Coordenação de Produção: Marizete Silva Santos
  • 3. Sumário Plano da Disciplina ...............................................................................5 Apresentação ........................................................................................9 Conhecendo o Volume 01 ..................................................................10 Capítulo 1 – Introdução ao C .............................................................13 1.1. Programas e Programação de Computadores ..........................13 1.2. Linguagens de Programação.....................................................15 1.3. Breve Histórico da Linguagem de Programação C ...................18 1.4. Criação, Compilação e Execução de um Programa ..................19 Capítulo 2 – Conceitos Preliminares para Programar em C ...........24 2.1. Estrutura de um Programa Básico em C ...................................25 2.2. Palavras Reservadas do C ........................................................28 2.3 Uso de Comentários ...................................................................29 2.4. Os Fundamentos do Ambiente C...............................................31 2.5. Conhecendo o Dev-cpp .............................................................34 Capítulo 3 – Tipos de Dados, Variáveis e Constantes .....................40 3.1. Tipos de dados ..........................................................................40 3.2. Variáveis e Constantes ..............................................................42 3.3. Operador de Atribuição (=) ........................................................49
  • 4. Capítulo 4 – Comandos de Entrada e Saída de Dados....................54 4.1. Entrada de Dados ......................................................................54 4.2. Saída de Dados .........................................................................59 4.3. Erros Frequentes no Uso dos Comandos de Entrada e Saída .65 4.4. Primeiros programas em C ........................................................66 Capítulo 5 – Operadores, Expressões e Funções Matemáticas .....75 5.1. Operadores Básicos ..................................................................75 5.2. Operadores Aritméticos de Atribuição ......................................87 5.3. Operadores ++ e -- ....................................................................87 5.4. Conversão de tipo......................................................................88 5.5. Funções Matemáticas (biblioteca math.h) .................................90
  • 5. Plano da Disciplina Carga horária: 60h Ementa da Disciplina Introdução à linguagem de programação C. Tipos de dados, variáveis, operadores aritméticos, relacionais e lógicos. Comandos de entrada e saída. Estruturas de seleção e repetição. Modularização. Vetores e registros. Ponteiros. Arquivos. Manipulação de caracteres. Comandos de tela. Comandos de manipulação de data e hora. Objetivos Objetivo Geral • Apresentar técnicas de programação estruturada utilizando como ferramenta a linguagem de programação C Objetivos Epecíficos • Desenvolver a capacidade de solução de problemas de programação, com o uso da linguagem C. • Introduzir métodos de otimização para garantir eficiência e segurança aos programas. • Desenvolver o auto-aprendizado. Conteúdo Programático Módulo 1 - Introdução à Linguagem de Programação C Carga Horária do Módulo 01: 15 h Objetivo do Módulo 01: Introdução ao C e seus comandos básicos, para possibilitar a construção dos primeiros programas nesta linguagem. Conteúdo Programático do Módulo 1 • Introdução ao C
  • 6. ○ Conceito de programa e linguagem de programação ○ Introdução ao C: Um breve histórico ○ Etapas de desenvolvimento de um programa • Comandos Básicos do C ○ Estrutura de um programa C ○ Diretivas de compilação ○ Uso de comentário ○ Tipos de dados ○ Variáveis, constantes, identificadores e atribuição ○ Comandos de entrada e saída ○ Operadores aritméticos, relacionais e lógicos ○ Modificadores de tipos de dados ○ Funções matemáticas Módulo 2 – Estruturas de Controle de Fluxo e Modularização Carga Horária do Módulo 2: 15 h Objetivo do Módulo 2: Possibilitar o conhecimento das estruturas de controle (seleção e repetição) do C e métodos para modularização dos programas (criação de procedimentos e funções). Conteúdo Programático do Módulo 2: • Estruturas de Controle de Fluxo ○ Sequência ○ Estrutura de seleção: If e Switch ○ Estrutura de repetição: for, do/while e while ○ Comando break • Modularização ○ Construção de módulos: funções e procedimentos ○ Passagem de parâmetros e escopo de variáveis ○ Comando return
  • 7. Módulo 3 – Armazenamento de Dados em Vetores, Registros e Arquivos Carga horária do Módulo 03: 15 h Objetivo do Módulo 03: Apresentar as formas de armazenamento de dados homogêneos (vetores) e heterogêneos (registros), além dos comandos para manipulação de arquivos. Conteúdo Programático do Módulo 03: • Tipos de Dados Homogêneos e Heterogêneos ○ Vetores ○ Registros ○ Vetor de registro • Arquivos ○ Ponteiros ○ Comandos para manipulação de arquivo Módulo 4 – Comandos Avançados Carga Horária do Módulo 4: 15 h Objetivo do Módulo 4: Apresentar comandos mais avançados da linguagem C, tais como: manipulação de caracteres, comandos de tela (para melhorias na interface dos programas) e manipulação de data e hora. Conteúdo Programático do Módulo 4: • Comandos para Manipulação de Caracteres e Strings ○ Comandos da biblioteca ctype e string ○ Validação de campos • Comandos de Tela – Interface ○ Comandos da biblioteca conio • Comandos para Manipulação de data e hora ○ Comandos da biblioteca time Avaliação • Avaliação prática em laboratório correspondendo a 60% da nota.
  • 8. • Resolução de listas de exercícios, que serão enviadas através do ambiente virtual (30%). • Avaliação referente à participação do aluno nas aulas presenciais e ambiente virtual: fóruns de discussão, chats, etc (10%). Bibliografia Básica: SCHILDT, Herbert. C Completo e Total. São Paulo: Makron, 1996. DEITEL, H, M e DEITEL, P. J. Como Programar em C. Rio de Janeiro: LTC, 1999. Complementar: ASCENIO, Ana Fernanda Gomes e CAMPOS, Edilene Aparecida Veneruchi. Fundamentos de Programação de Computadores. São Paulo: Prentice Hall, 2002.
  • 9. Apresentação Caro(a) aluno(a), Seja bem-vindo (a) ao primeiro módulo da disciplina Programação II. Nesta disciplina, você irá aprender a programar na linguagem de programação C, uma das mais utilizadas mundialmente. Desenvolver programas e garantir que estes sejam confiáveis, eficientes e agradáveis de usar requer conhecimento técnico e muito treinamento. Este livro foi escrito pensando em você, que está iniciando neste mundo da programação de computadores e que precisa ser apresentado, com tranquilidade, a um conjunto de novos conceitos. Os assuntos serão transmitidos gradativamente, de forma que você os absorva com naturalidade. Este livro contém muitos exemplos de questões resolvidas, comentadas em detalhes, para que você não encontre dificuldades para aprender cada assunto. Além de apresentar dicas para que você desenvolva seus programas de forma eficiente e não cometa os principais erros de programação que ocorrem com quem está iniciando a programar. Ao final de cada capítulo, você poderá testar o seu aprendizado e assimilar melhor o que foi estudado, através da resolução de exercícios. Isto é muito importante! Não deixe de resolvê-los. De antemão, informamos que programar é muito bom, você vai gostar! Nada melhor do que ver um programa rodando e saber que foi você quem o criou. Mas, não desanime se encontrar alguma dificuldade durante esta caminhada. Às vezes o programa dá um erro e não sabemos onde está o problema. Seja persistente! Ao longo do tempo, a experiência vai te dar mais segurança e você conseguirá encontrar tais erros com facilidade. O objetivo deste primeiro módulo é fazer uma introdução à linguagem C, conhecer um pouco da sua história e iniciar o estudo da sintaxe da linguagem, que possibilitará a construção de programas básicos. Ao final deste primeiro módulo, você já estará desenvolvendo seus primeiros programas em C. O que você está esperando? Vamos começar? Bons estudos! Professora Sônia Virginia Alves França
  • 10. Programação 2 Conhecendo o Volume 01 Neste primeiro volume, você irá encontrar o módulo 01 da disciplina: Programação II. Este volume está estruturado em cinco capítulos, que serão estudados ao longo de 15h/aula. Para facilitar seus estudos, veja a organização deste primeiro volume. Capítulo 1: Introdução ao C Carga Horária do Capítulo 1: 2 h/aula Objetivos do Capítulo 1: Introduzir os conceitos básicos da área de programação e apresentar um breve histórico sobre a linguagem C. Conteúdo Programático do Capítulo 1 • Conceito de programas e programação de computadores; • Linguagens de programação; • Breve histórico da linguagem de programação C; • Etapas do desenvolvimento de um programa. Capítulo 2: Conceitos Preliminares para Programar em C Carga Horária do Capítulo 2: 3 h/aula Objetivos do Capítulo 2: Apresentar detalhes mais específicos da linguagem, necessários para dar início à programação em C. Neste capítulo, também será apresentado o ambiente de programação que utilizaremos no desenvolvimento dos programas. Conteúdo Programático do Capítulo 2 • Estrutura de um programa básico C; • Palavras reservadas do C; • Uso de comentários; • Fundamentos do ambiente C; • Conhecendo o Dev-cpp. 10
  • 11. Programação 2 Capítulo 3: Tipos de Dados, Variáveis e Constantes Carga Horária do Capítulo 3: 2 h/aula Objetivos do Capítulo 3: Apresentar os tipos de dados suportados pelo C e introduzir o conceito de variáveis e constantes Conteúdo Programático do Capítulo 3 • Tipos de dados; • Variáveis e constantes; • Operador de atribuição; Capítulo 4: Comandos de Entrada e Saída de Dados Carga Horária do Capítulo 4: 4 h/aula Objetivos do Capítulo 4: Apresentar os comandos de entrada e saída de dados do C. Neste capítulo, você terá acumulado conhecimento suficiente para desenvolver os primeiros programas em C. Conteúdo Programático do Capítulo 4 • Entrada de dados; • Saída de dados; • Desenvolvimento dos primeiros programas C. Capítulo 5: Operadores, Expressões e Funções Matemáticas Carga Horária do Capítulo 5: 4 h/aula Objetivos do Capítulo 5: Apresentar os operadores básicos (aritméticos, relacionais e lógicos), além de funções complementares para o desenvolvimento de programas que executem expressões mais complexas. Conteúdo Programático do Capítulo 5 • Operadores aritméticos, lógicos e relacionais; • Operadores aritméticos de atribuição; • Operadores ++ e --; 11
  • 12. Programação 2 • Conversão de tipos; • Funções matemáticas. Ao final de cada capítulo você encontrará: • A seção “Atividades e Orientações de Estudo”: que contém exercícios para a fixação do assunto estudado, além de indicação de fóruns de discussão. • A seção “Conheça Mais”: que contém dicas de sites e livros que devem ser lidos para ampliar os seus conhecimentos. • A seção “Vamos Revisar?”: que apresenta um resumo dos principais tópicos abordados no capítulo. 12
  • 13. Programação 2 Capítulo 1 – Introdução ao C Vamos conversar sobre o assunto? Neste primeiro capítulo, será feita uma apresentação do que é programação e quais as principais linguagens de programação do mercado, dando ênfase à linguagem C. Este capítulo é importante, porque conheceremos um pouco da história da linguagem de programação que iremos aprender nesta disciplina. Sempre que conhecemos uma pessoa nova, queremos saber alguns detalhes da sua vida, não é mesmo? Quantos anos ela tem, onde nasceu, quem são seus pais, etc. Neste capítulo, também, serão introduzidos conceitos utilizados na área de programação, visando a nossa preparação para nos lançarmos nesse mundo intrigante da criação de Saiba Mais programas computacionais. Então, prontos (as) para o desafio? 1 Além dos software aplicativo e 1.1. Programas e Programação de software de sistema, ainda é Computadores possivel utilizar a categoria software Um programa de computador é um conjunto de instruções que embutido ou embarcado, descrevem uma tarefa que será executada por um computador. destinado a Um programa de computador também é conhecido como software, funcionar dentro de uma máquina software aplicativo, software de sistema ou simplesmente programa. que não é um computador. O termo software é mais utilizado quando é feita uma referência à Normalmente, parte não física do sistema computacional, juntamente com o termo estes software têm um hardware, que faz referência ao conjunto de componentes eletrônicos propósito muito específico, como, que constituem um computador. por exemplo: controlar a Os programas que permitem ao usuário fazer uma ou mais tarefas injeção eletrônica de um carro específicas, como as planilhas eletrônicas, editores de texto e jogos ou gerenciar o cozimento são chamados de software aplicativo ou aplicação. Já os programas dos alimentos que dão suporte funcional aos computadores, como os sistemas no forno de microndas. Mais operacionais e drivers de dispositivos, são chamados de software de recentemente, surgiu também sistema1. o software como serviço, que é O ato de desenvolver programas é chamado de programação um software que roda diretamente de computadores. A programação é o processo de escrita, teste na internet, não e manutenção de um programa (ASCENIO e CAMPOS, 2002). sendo necessário instalar nada no O desenvolvimento de programas baseado em metodologias ou computador do usuário. processos formalizados é conhecido por engenharia de software. 13
  • 14. Programação 2 Os programas são escritos em uma linguagem de programação. Assim como o Português, o Inglês e o Espanhol, as linguagens de programação têm as suas regras e devemos seguí-las para escrever nossos programas corretamente. Portanto, a programação de computadores é uma ciência e, por isso, devemos seguir uma metodologia para termos como resultado: programas seguros e eficientes. Em uma disciplina anterior, vocês aprenderam a desenvolver algoritmos, que são uma sequência de passos para realizar uma tarefa ou resolver um problema. Utilizamos algoritmos no nosso cotidiano para realizar atividades corriqueiras, definindo a sequência de passos que deve ser executada para atingirmos um objetivo, como, por exemplo, os passos que executamos para tomar banho, calibrar um pneu ou fazer um bolo. Figura 1.1: Exemplos de algoritmos Para efetuarmos estas atividades, seguimos uma sequência lógica de passos. Se esses passos não tiverem uma lógica, podemos não conseguir atingir o nosso objetivo. Se vocês observarem, para fazer um bolo, existe uma ordem em que os ingredientes devem ser adicionados à receita, caso não sigamos esta ordem, o bolo não ficará bom. Na programação irá ocorrer a mesma coisa, devemos passar as instruções ao computador, utilizando uma linguagem de programação, seguindo uma lógica – a lógica computacional. Na próxima seção vamos abordar as linguagens de programação, de uma forma mais abrangente, tratando os principais conceitos que envolvem este assunto. Vamos seguir em frente? 14
  • 15. Programação 2 1.2. Linguagens de Programação É através das linguagens de programação que poderemos criar nossos programas. Uma linguagem de programação é um conjunto de regras sintáticas e semânticas usadas para definir um programa. O conjunto de códigos (palavras e símbolos), compostos de acordo com essas regras, constituem o código fonte do nosso programa. Para ser executado pelo processador, o código fonte precisa ser traduzido para código de máquina. Aprender uma linguagem de programação é um pouco similar a aprender um novo idioma. Temos que saber o significado das palavras, as regras da estruturação das frases, etc., para podermos nos comunicar corretamente no novo idioma. Figura 1.2: Aprenda a dar ordens ao seu computador Existem várias linguagens de programação. Vocês sabiam que cada linguagem de programação possui o seu conjunto de regras e um modo de funcionamento próprio? A escolha de uma linguagem de programação para o desenvolvimento de um programa deve estar atrelada ao tipo de problema que deseja resolver. Existem linguagens 15
  • 16. Programação 2 que são melhores para resolver um certo tipo de questão do que outras. De acordo com Sebesta (2003), as linguagens de programação vêm sendo classificadas de várias formas: por geração, de acordo com o paradigma de programação, quanto ao grau de abstração, de acordo com a estrutura de tipos, dentre outras. Uma das classificações mais utilizadas é quanto ao grau de abstração. Segundo esta classificação, as linguagens de programação são divididas em três grupos: linguagens de máquina, linguagens de baixo nível e linguagens de alto nível. A linguagem de máquina é a linguagem natural dos computadores. Estas linguagens são ininteligíveis para o ser humano não treinado. As linguagens de máquina são representadas por sequências de bits (zeros e uns). Estas sequências representam instruções que serão executadas pelo processador do computador. As instruções correspondem a sequências muito simples de operações, tais como: transferir um dado em memória para a CPU ou somar dois valores. As linguagens de máquina são dependentes do processador, isto é, uma determinada linguagem de máquina só poderá usada por um tipo de computador. As linguagens de baixo nível são próximas da linguagem de Saiba Mais máquina. No entanto, os zeros e uns que formam uma instrução foram substituídos por palavras que representam tais instruções, 2 No contexto da informática, a tornando-as um pouco mais legíveis. Estas linguagens são mais portabilidade de um programa é a voltadas para a máquina, isto é, são escritas usando as instruções sua capacidade do microprocessador do computador. São chamadas de linguagens de ser compilado ou executado Assembly (que significa montagem). Estas linguagens apresentam em diferentes arquiteturas (seja as seguintes vantagens: os programas são executados com maior de hardware ou velocidade de processamento (já que são executadas diretamente de software). pela máquina) e ocupam menos espaço na memória. No entanto, de Esse termo modo geral, os programas em Assembly têm pouca portabilidade2 (um também vem sendo utilizado código gerado para um tipo de processador não serve para outro) e pelas empresas não são estruturados, tornando a programação mais difícil. de telefonia móvel, quando se referem à As linguagens de alto nível são mais próximas à linguagem portabilidade humana (do Inglês, por exemplo) e mais distantes das linguagens de número, ou seja, você muda de máquina. Por isso, são linguagens mais simples de entender, já de operadora, mas nao muda que, em geral, utilizam uma sintaxe estruturada, tornando seu código o número do mais legível. Necessitam de compiladores ou interpretadores celular. para gerar instruções do microprocessador. Interpretadores fazem 16
  • 17. Programação 2 a interpretação de cada instrução do programa fonte executando-a dentro de um ambiente de programação, Basic e Java são exemplos de linguagens interpretadas. Os compiladores fazem a tradução de todas as instruções do programa fonte gerando um programa executável. Estes programas executáveis (*.exe) podem ser executados fora dos ambientes de programação. A linguagem C e Pascal são exemplos de linguagens compiladas. As linguagens de alto nível ainda podem ser divididas de acordo com a sua aplicação: genéricas (como C, Java e Pascal, que servem para o desenvolvimento de programas de propósito geral) ou específicas (como Fortran - utilizada para execução de cálculos matemáticos, LISP - desenvolvimento de aplicações na área de inteligência artificial e CLIPPER – utilizada para aplicações que manipulam bancos de dados). As vantagens das linguagens de alto nível são: portabilidade (por serem compiladas ou interpretadas podem ser executadas em várias plataformas com pouquíssimas modificações) e facilidade de desenvolvimento de programas. No entanto, as rotinas geradas são mais genéricas (e mais complexas) e por isso são mais lentas e ocupam mais memória. A figura 1.3, a seguir, apresenta um trecho de código escrito em linguagem de máquina, linguagem de baixo nível e linguagem de alto nível, respectivamente. Linguagem de Linguagem de Linguagem de Alto Nível Máquina Baixo Nível 10110101 LOAD BASE 11100110 ADD BONUS Salario = Base + Bonus 11000100 STORE SALARIO Figura 1.3: Trecho de código em diferentes linguagens Notem como o código em linguagem de máquina é incompreensível. Difícil entender essas seqüências de zeros e uns, não é mesmo? O código na linguagem de baixo nível é mais legível e passamos a entender as instruções. Na linguagem de alto nível, o código fica menor e muito mais simples. Em qual tipo de linguagem vocês querem programar? Nem precisamos parar para pensar, não é mesmo? 17
  • 18. Programação 2 Figura 1.4: Linguagens de baixo nível x linguagens de alto nível 1.3. Breve Histórico da Linguagem de Programação C Vamos conhecer um pouco sobre a história do C? A linguagem de programação C nasceu em 1972 nos laboratórios Bell, Estados Unidos. Seus criadores são Brian Kernighan e Dennis M. Ritchie. A Saiba Mais linguagem C foi criada a partir da linguagem B (sugestivo, não é?), 3 Uma linguagem que havia sido desenvolvida no final dos anos 60 por Ken Thompson. é considerada estruturada O C é uma linguagem de alto nível, compilada e estruturada3. quando permite que o No entanto, o C possui instruções de baixo nível, bem próximas à programador linguagem de máquina, que só o Assembler possui. O objetivo dos pegue trechos de maior uso do seus criadores era usar o C para desenvolver o sistema operacional seu programa e transforme-os UNIX, que originalmente foi escrito em Assembly (linguagem de baixo em pequenos nível). Desde então, espalhou-se por muitos outros sistemas e tornou- módulos (procedimentos se uma das linguagens de programação mais usadas, e influenciando e funções) que serão reutilizados o desenvolvimento de muitas outras linguagens como C++ e Java. sempre que necessário. Com a linguagem C podemos construir programas organizados e concisos (características dos programas das linguagens de alto 18
  • 19. Programação 2 nível), ocupando pouco espaço de memória e com alta velocidade de execução (como o Assembler). Infelizmente, dada toda a flexibilidade da linguagem, também poderemos escrever programas desorganizados e difíceis de serem compreendidos. Portanto, cabe ao programador de C utilizar boas práticas de programação, para ter programas legíveis e de fácil manutenção. Existem inúmeras razões para que o C seja uma das linguagens mais preferidas dos programadores. As características da linguagem C mostram o porquê de sua ampla aceitação. Vejamos algumas características da linguagem C. • Portabilidade entre máquinas e sistemas operacionais; • Dados compostos em forma estruturada; • Programas estruturados; • Total interação com o sistema operacional; • Código compacto e rápido, quando comparado ao código de outras linguagens de alto nível. Agora que já conhecemos um pouco mais da linguagem C, vamos entender o processo de desenvolvimento de um programa. Quais são os passos que devemos seguir para termos um programa pronto? Vamos começar a falar sobre isto agora mesmo. Continuem firmes na leitura! 1.4. Criação, Compilação e Execução de um Programa Nesta seção vamos estudar as etapas de desenvolvimento de um programa em C. O desenvolvimento de um programa é dividido em três etapas, como mostra a figura 1.5. Figura 1.5: Estados do desenvolvimento de um programa em C A primeira etapa para o desenvolvimento de um programa em C é 19
  • 20. Programação 2 a criação do programa fonte, que consiste no “texto” formado pelo conjunto de comandos que nós desejamos que o computador execute. O programa fonte deve ser escrito respeitando as regras da linguagem. De modo geral, os programas fontes são digitados em editores de texto genéricos ou específicos dos ambientes de programação. No próximo capítulo deste volume, vamos conhecer detalhadamente o ambiente de programação que será utilizado para o desenvolvimento dos nossos programas em C. Com o programa fonte pronto, passamos para a etapa de compilação. O compilador é um programa que verifica se o programa fonte não apresenta nenhum erro de sintaxe e gera o programa executável. Quando o programa fonte apresenta algum problema, dizemos que ocorreu um “erro de compilação”. Assim, o programador deverá avaliar o programa fonte, para a retirada tais erros. Normalmente, os compiladores indicam os prováveis erros de sintaxe cometidos pelo programador. Se o programa não tiver erros de sintaxe, o compilador irá gerar o programa executável. A etapa final consiste na execução do programa executável. Neste momento, o programador deverá testar se o programa Saiba Mais está produzindo os resultados esperados. Quando o programa 4 Bug é um erro apresenta algum erro nesta fase, como, por exemplo, mostrar um no funcionamento resultado incorreto, dizemos que ocorreu um “erro de lógica” ou de um programa. É também “erro de execução”. Isso ocorre porque, apesar do programa não chamado de erro de lógica, ter apresentado erros de sintaxe, o que tornou possível a geração e pode causar do programa executável, a sequência de comandos não foi definida discrepâncias no objetivo ou de forma correta. Quando ocorre um erro de lógica, o programador impossibilidade de utilização de deverá revisar o seu programa fonte e passá-lo novamente pela fase um programa de de compilação, para que um novo executável, sem erros, seja gerado. computador. O uso do Como o compilador não nos avisa onde estão os erros de lógica, estes termo bug para descrever são mais difíceis de serem corrigidos. defeitos inexplicáveis foi Após ter certeza que o programa executável está correto, sem parte do jargão da engenharia por erros de lógica, o programador poderá entregá-lo ao seu cliente. É várias décadas. importante fazermos vários testes nos nossos programas. Testar com Acredita-se que o termo foi criado vários valores e verificar se está realmente tudo como esperado. Não por Thomas Edison quando fica bem nosso cliente ficar ligando, dizendo que o programa está com um inseto (bug, BUG!4 Lembrem-se sempre, o computador só executa as instruções em Inglês) causou problemas de que nós mandarmos. Se houver erros, a responsabilidade será nossa leitura em seu fonógrafo em que não fizemos o programa corretamente! Vocês não vão querer 1878. passar por uma situação como essa? Vão? 20
  • 21. Programação 2 Nesta fase de execução do programa executável, nós também devemos verificar a usabilidade do programa, ou seja, se o programa ficou fácil de ser utilizado pelo seu usuário. Quando o programa é de difícil utilização ou confunde o usuário, induzindo-o ao erro, ele perde o interesse em utilizá-lo ou comprá-lo. Também devemos verificar se nosso programa tem um bom desempenho, ou seja, se ele processa rapidamente as operações. Usuário não gosta de programa lento, não é mesmo? Atividades e Orientações de Estudo Agora é o momento de analisarmos se os assuntos abordados neste capítulo foram bem absorvidos. Foram vistos muitos conceitos novos, não é mesmo? Vamos responder as questões a seguir. Caso sintam necessidade, releiam alguma seção que não foi muito bem assimilada ou complementem as respostas com a leitura dos sites indicados na próxima seção. Vocês estão preparados(as)? 1. Para que serve uma linguagem de programação? 2. Quais as desvantagens das linguagens de baixo nível? 3. Por que desejamos programas portáveis? 4. O que motivou a criação da linguagem C? 5. A linguagem C é de baixo ou alto nível? 6. A linguagem C é compilada ou interpretada? 7. Por que os erros de lógica são mais difíceis de serem corrigidos? 8. Por que devemos nos preocupar com a usabilidade dos nossos programas? Conheça Mais Para ampliar os seus conhecimentos sobre os assuntos tratados neste capítulo, visite o site da OReilly. Neste endereço, 21
  • 22. Programação 2 http://oreilly.com/pub/a/oreilly/news/languageposter_0504.html, foi disponibilizado um pôster, muitíssimo interessante, como uma “árvore genealógica” das principais linguagens de programação dos últimos 50 anos. Vale a pena dar uma olhada. É muito importante que vocês se cadastrem em algum fórum de discussão sobre a linguagem C. Assim, vocês poderão conversar e trocar idéias com programadores de C mais experientes. Exemplos de fóruns de C: DevMedia e Linha de código. Vamos revisar? Vamos dar uma reforçada em nosso aprendizado com esta pequena revisão dos principais conceitos apresentados neste capítulo. Observem o resumo a seguir: • Programa: é um conjunto de instruções que descrevem uma tarefa que será executada por um computador. • Programação de Computadores: é o processo de escrita, teste e manutenção de um programa. • Algoritmo: sequência de passos para realizar uma tarefa ou resolver um problema. • Linguagem de Programação: é um conjunto de regras sintáticas e semânticas usadas para definir um programa. • Linguagem de máquina: é a linguagem natural dos computadores. As instruções são formadas por zeros e uns. Estas linguagens não são legíveis para um programador sem experiência. • Linguagens de baixo nível: são linguagens escritas usando as instruções do microprocessador do computador. Estas linguagens são mais difíceis de entender e criar programas. • Linguagens de alto nível: são linguagens mais próximas à linguagem humana e mais distantes das linguagens de máquina. São linguagens mais simples de entender, já que, em geral, utilizam uma sintaxe estruturada, tornando seu código mais legível. • Compiladores: são programas que fazem a tradução de todas as instruções do programa fonte gerando um programa executável. 22
  • 23. Programação 2 • Interpretadores: são programas que interpretam cada instrução do programa fonte executando-a dentro de um ambiente de programação. • Compilação: é o processo, executado pelo compilador, que verifica se existem erros de sintaxe no código fonte e gera um programa executável. • Erro de sintaxe: ocorre durante o processo de compilação do programa, quando o programador, ao editar o seu programa fonte, não respeita alguma regra de sintaxe da linguagem de programação. • Erro de lógica: ocorre durante a execução de um programa, devido um erro na lógica dos comandos. 23
  • 24. Programação 2 Capítulo 2 – Conceitos Preliminares para Programar em C Vamos conversar sobre o assunto? Neste capítulo, serão abordados conceitos preliminares que irão nos preparar para programar em C. Estes conceitos estão relacionados à estrutura de um programa básico em C. Aqui, também, será apresentado o ambiente de programação que utilizaremos Saiba Mais para o desenvolvimento dos nossos programas – o Dev-cpp. Este 5 O Dev-cpp é ambiente apresenta uma interface amigável, que facilitará o processo uma ferramenta gratuita e pode de programação. Vocês devem baixar e instalar o Dev-Cpp5, o ser baixada quanto antes, no computador que será utilizado para a prática desta acessando o site: www.bloodshed. linguagem. net/devcpp.html É importante que vocês tenham paciência neste início de aprendizado, já que precisamos, inicialmente, acumular o conhecimento necessário para a construção de um programa completo em C. Visando facilitar o aprendizado, em alguns momentos, será feito um Saiba Mais paralelo entre a sintaxe do C e do Portugol do VisuAlg6 (linguagem 6 Conheça utilizada para escrever algoritmos). mais o VisuAlg pesquisando no site: http://www. apoioinformatica. inf.br/visualg/ linguagem.htm 24
  • 25. Programação 2 Figura 2.1: Qualidades de um programador: atenção, paciência e persistência Vale lembrar que qualquer linguagem de programação é assimilada através da resolução de exercícios. É importantíssimo que a prática de programar faça parte da rotina de vocês. Assim, separem sempre um tempo para resolver as questões propostas neste material. Vocês vão perceber o quanto é bom ver um programa rodando! Que venha o C! 2.1. Estrutura de um Programa Básico em C Nesta seção, vamos estudar a estrutura de um programa básico em C. Visando facilitar o entendimento e não sobrecarregar vocês com muitos detalhes, alguns elementos da estrutura do programa serão omitidos. Mas, no momento certo, abordaremos tais elementos, certo? Assim, a estrutura do programa que será apresentada nesta seção, é a estrutura mínima de um programa em C. Nas linguagens de programação em geral, existe uma estrutura que indica a ordem em que deve ser disposto cada elemento do programa. Esta ordem deve ser respeitada para que nossos programas fiquem corretos. Como será a estrutura de um programa em C? A estrutura básica de um programa C deve seguir a seguinte ordem: 1. Inclusão de bibliotecas (quando necessário); 2. Declaração das constantes (quando necessário); 3. Programa principal; 25
  • 26. Programação 2 • Declaração de variáveis (quando necessário); • Seqüência de comandos. Para entendermos melhor a estrutura básica de um programa C, vamos analisar o programa de exemplo 2.1, abaixo. Este programa calcula o cubo de um número inteiro fornecido pelo usuário. Na sequência, temos este programa resolvido utilizando o portugol, que é do conhecimento de vocês. Assim, fica fácil compararmos a estrutura do programa em C, com a estrutura do algoritmo. Não se preocupem em entender cada comando do exemplo abaixo, estamos apenas começando a estudar o C, certo? Exemplo 2.1: Programa C – Cálculo do cubo de um número 1 #include <stdio.h> 2 main() 3 { 4 int num,c; 5 printf(“Cubo de um numeronn”); 6 printf(“Digite o numero: “); 7 scanf(“%d”,&num); 8 c = num*num*num; 9 printf(“nCubo de %d = %d”,num,c); 10 getche(); 11 } Segue abaixo o algoritmo, escrito no VisuAlg, que calcula o cubo de um número. 26
  • 27. Programação 2 Exemplo 2.2: Algoritmo – Calculo do cubo de um número 1 algoritmo “Cubo” 2 var 3 num, c: inteiro 4 inicio 5 escreval(“Cubo de um numero”) 6 escreva(“Digite o numero: “) 7 leia(num) 8 c <- num*num*num 9 escreval(“Cubo de “, num, “ = “, c) 10 fimalgoritmo Um programa em C inicia com a inclusão de bibliotecas. Uma biblioteca é um arquivo que contém comandos complementares, que são utilizados pelo nosso programa. Para a inclusão de uma biblioteca devemos usar um comando que é chamado de diretiva de compilação. Este comando informa ao compilador quais bibliotecas devem ser anexadas ao programa executável. Assim, o comando para a inclusão de uma biblioteca tem a seguinte sintaxe: Sintaxe #include <nome_do_arquivo_da_ biblioteca> De acordo com a sintaxe, para incluir uma biblioteca ao nosso programa devemos colocar a diretiva de compilação #include e, entre os símbolos < e >, colocamos o nome do arquivo da biblioteca. De maneira geral, os arquivos de biblioteca têm a terminação .h (esse h vem de header, ou seja, este é um arquivo de cabeçalho). Para cada biblioteca, que será incluída no nosso programa, devemos colocar um comando #include. No exemplo 2.1, na linha 1, é feita a inclusão de uma biblioteca: stdio.h. Na medida em que formos aprendendo os comandos, serão indicadas quais bibliotecas devem ser incluídas no programa. A quantidade de bibliotecas e quais bibliotecas serão 27
  • 28. Programação 2 incluídas, depende dos comandos que serão utilizados no programa. Pode ser que em um programa, não seja necessário incluir nenhuma Saiba Mais biblioteca. 7 Do Inglês, O segundo item da estrutura de um programa C é a declaração main significa principal. Todo das constantes, esse item é opcional, só constará no nosso programa, programa C caso seja necessário. Veremos a declaração de constantes, em começa a sua execução a partir detalhes, no próximo capítulo. No exemplo 2.1 não foi necessário o do programa principal. Assim, uso de constantes. o programa principal é uma O terceiro item da estrutura do programa C é o programa principal. parte obrigatória na estrutura de É no programa principal que colocaremos a sequência de comandos um programa C. que deve ser executada para a solução do problema que desejamos resolver. Nós devemos informar onde começa e termina o programa principal. O programa principal inicia com: main()7, como mostra a linha 2, do exemplo 2.1. A sequência de comandos do programa principal é delimitada por um par de chaves: { (abre chaves) e } (fecha chaves). Saiba Mais As chaves que delimitam o corpo do programa principal8 aparecem nas linhas 3 e 11, do exemplo 2.1. Fazendo uma comparação com 8 Chamamos o algoritmo do exemplo 2.2, as chaves fazem o papel do “inicio” e de corpo do programa “fimalgoritmo”, das linhas 4 e 10. principal toda a sequência Logo no início do programa principal, devem ser declaradas as de comandos que faz parte variáveis (que serão abordadas no próximo capítulo). A declaração do programa de variáveis é um item opcional, pode acontecer de não precisarmos principal. Ou seja, a seqüência de declarar variáveis no nosso programa. No exemplo 2.1, a declaração comando que aparece entre de variáveis é feita na linha 4. Foram declaradas duas variáveis do as chaves de tipo inteiro: num e c. No algoritmo, exemplo 2.2, as variáveis são abertura e término do programa declaradas fora do programa principal, na seção de declaração de principal. variáveis (linhas 2 e 3). Após a declaração das variáveis, colocamos a sequência de comandos que o programa deverá executar. O programa termina com o fecha chaves que delimita o programa principal. Agora que já sabemos como é a estrutura de um programa básico em C, vamos começar a aprender a sintaxe dos comandos para darmos início ao desenvolvimento dos nossos programas. 2.2. Palavras Reservadas do C Como mencionado no capítulo anterior, as linguagens de programação são formadas por um conjunto de regras de sintaxe e 28
  • 29. Programação 2 semântica que ditam como o programa deve ser escrito. Com isso, dentro dessas regras, existe um conjunto de palavras que tem um significado para a linguagem de programação – são as palavras reservadas. Uma palavra reservada é, essencialmente, um comando e, na maioria das vezes, as palavras reservadas de uma linguagem definem o que pode ser feito e como pode ser feito. As palavras reservadas são de uso exclusivo da gramática da linguagem, por isso, não podem ser utilizadas, pelo programador, para dar nome a alguma variável, constante ou função do seu programa. Assim, um programador não pode ter uma variável chamada “int” no seu programa C, já que “int” é uma palavra reservada que indica um tipo de dado. Saiba Mais Na linguagem C temos 32 palavras reservadas. Todas as palavras 9 A sigla ANSI reservadas do C são escritas em minúsculo. A tabela abaixo mostra significa: as palavras reservadas, conforme definido pelo padrão ANSI9, para a American National linguagem C. Standards Institute (Instituto Nacional auto default float unsigned Americano de Padronização). É break do for return uma organização case double goto short que tem por objetivo facilitar a char else union signed padronização dos const typedef if sizeof trabalhos de seus membros. switch while int static volatile enum long struct continue extern register void No Dev-cpp, ambiente de programação que será utilizado, sempre que digitarmos uma palavra reservada no nosso programa, esta Saiba Mais aparecerá em negrito. Isto facilita no momento da programação, pois não precisaremos decorar esta lista de palavras reservadas. Que 10 Ao desenvolver nossos alívio! Assim que uma palavra ficar em negrito no nosso programa, programas utilizando boas poderemos verificar se estamos utilizando-a de forma correta. práticas de programação, teremos como resultado um 2.3 Uso de Comentários código fonte mais legível e um progama Os comentários são utilizados para documentar um programa. A executável mais seguro e eficiente. colocação de comentários em um programa é uma das boas práticas Ao longo deste de programação10. Os comentários irão facilitar o entendimento material serão ensinadas boas e manutenção de programas. Por exemplo, um programador é práticas de programação. responsável por desenvolver o sistema de controle de vendas 29
  • 30. Programação 2 da sua empresa. Como o sistema é grande, após um tempo, ele não lembrará mais o porquê de ter colocado uma sequência de comandos no seu programa. Se o programa estiver bem comentado, o programador poderá, rapidamente, ter esta resposta. Além disso, quando desenvolvemos programas em grupo, é importante que os demais membros do grupo entendam o raciocínio do nosso programa e isso pode ser explicado através dos comentários. Os comentários podem ser colocados em qualquer parte do programa. Quando o compilador identifica um comentário, ele os ignora, já que os comentários são apenas informações para o programador. A linguagem C fornece dois tipos de comentários: de linha e de bloco. Vamos detalhar como funciona cada um deles. Os comentários de linha são mais utilizados quando desejamos comentar uma única linha do nosso programa. Um comentário de linha possui a sintaxe a seguir: Sintaxe // texto do comentário Um comentário de linha inicia com duas barras “//” e, na sequência, vem o texto do comentário. O exemplo 2.3, a seguir, apresenta um programa comentado. Na linha 7 temos o exemplo de um comentário Saiba Mais de linha. Este comentário serviu para informar para que serve a variável C. Assim que o compilador encontra “//”, ele ignora todo texto 11 No Dev- que vem após as duas barras11. Este tipo de comentário age apenas cpp, quando colocamos um na linha que ele é inserido. comentário, as letras do texto O segundo tipo de comentário disponível na linguagem C é o comentado ficam cinza comentário de bloco. Os comentários de bloco são utilizados quando queremos fazer um comentário maior, que compreenda mais de uma linha de comentário. A sintaxe do comentário de bloco é a seguinte: Sintaxe /* texto do comentário texto do comentário texto do comentário */ Um comentário de bloco inicia com barra-asterisco “/*” e termina por asterisco-barra “*/”. O compilador irá ignorar tudo o que encontrar 30
  • 31. Programação 2 entre estes dois símbolos. Veja no exemplo 2.3, que nas linhas 2, 3, e 4 aparece um comentário de bloco. Este tipo de comentário do exemplo é utilizado para identificar quem é o programador quando o programa foi feito e o que o programa faz. Devemos Adotar este tipo de comentário no início dos nossos programas. Assim, ao abrir um programa, rapidamente, saberemos para que ele serve. Devemos tomar cuidado para não esquecer o “*/” que fecha o comentário de bloco. Exemplo 2.3: Programa C Comentado – Calculo do cubo de um número 1 #include <stdio.h> 2 /* Programador: Sônia França 3 Data: 09/03/2009 4 Programa calcular o cubo de um número */ 5 main() 6 { 7 int Num, C; // C guarda o cubo do numero 8 printf(“Cubo de um numeronn”); 9 printf(“Digite o numero: “); 10 scanf(“%d”,&Num); 11 C = Num*Num*Num; 12 printf(“nCubo de %d = %d”,Num,C); 13 getche(); 14 } 2.4. Os Fundamentos do Ambiente C Na seção 1.5, do capítulo anterior, foram abordados os processos de criação, compilação e execução de um programa. Nesta seção, vamos detalhar um pouco mais estes processos, entendendo os 31
  • 32. Programação 2 fundamentos do ambiente C. A figura 2.2 apresenta um ambiente C, com as seis fases pelas quais passa um programa, desde a sua edição, até a sua execução. Figura 2.2: Ambiente C A fase 1 compreende a edição do nosso programa. O programa é criado com a utilização de um editor e é armazenado no disco do computador (HD - Hard Disk). O arquivo que contém o nosso programa tem a terminação .c, e este é chamado de programa fonte ou código fonte. Ao terminar a edição do programa, o programador solicita que o seu código fonte seja compilado. O compilador traduz o código fonte para o código em linguagem de máquina (também chamado de código objeto). Vocês se lembram das diretivas de compilação? Antes da tradução, temos a fase 2, em que o pré-processador 32
  • 33. Programação 2 analisa o código fonte, executando as diretivas de compilação. O pré-processador também é responsável por eliminar os comentários que o programador colocou no seu código fonte. O pré-processador é ativado automaticamente pelo compilador. Na fase 3, é que ocorre o processo de compilação, após o código fonte ter sido pré-processado. Para que o processo de compilação seja concluído, o programa não pode apresentar erros de sintaxe. Na fase 4, ocorre o processo de linking, que consiste na ligação do código objeto, gerado pelo compilador, com o código das funções que estão disponíveis nas bibliotecas que incluímos no nosso programa. Ou seja, no exemplo 2.1, em que foi incluída uma biblioteca, o linker deverá localizar o arquivo da biblioteca e fazer a ligação com o código objeto. Esta fase termina com a geração do programa executável, armazenando-o no disco do computador. No Dev-cpp, o programa executável é armazenado no mesmo diretório que tiver armazenado o código fonte. Na Figura 2.3, temos um diretório contendo o arquivo do código objeto (.c – C source file) e o programa executável (.exe – application). O arquivo do programa executável não pode ser editado, o que nós podemos editar é o arquivo do código fonte. Figura 2.3: Diretório contendo código objeto e o programa executável Saiba Mais 12 CPU é a sigla As fases 5 e 6 consistem na execução do programa executável. para Central Para dar início a execução de um programa, é necessário que o mesmo Processing Unit, em Inglês, esteja na memória principal do computador. Isto é feito na fase 5, pelo ou Unidade Central de carregador do programa. O carregador pega o programa executável Processamento. que está armazenado no disco e o transfere para memória principal. A CPU é a parte do computador Assim que o programa está na memória principal do computador, ele que processa as instruções está pronto para ser executado. A execução de um programa é feita contidas em um pela CPU12, que executa as instruções do programa, uma após a programa. outra, até o seu término. 33
  • 34. Programação 2 Na próxima seção, vamos conhecer o Dev-Cpp, que possibilitará a criação, compilação e execução dos nossos programas. Com o Dev- cpp poderemos observar as fases aqui descritas. 2.5. Conhecendo o Dev-cpp Saiba Mais O Dev-Cpp é um ambiente de programação que edita, compila e executa programas C e C++13. Sabem porque iremos usar o Dev- 13 C++ é uma cpp para desenvolver nossos programas? O Dev-cpp é gratuito linguagem de programação que (muito importante!) e possui uma interface bastante amigável (mais surgiu a partir do C. importante ainda!). A Figura 2.4 apresenta a tela principal do Dev- cpp. Figura 2.4: Tela principal do Dev-cpp Como mencionado no início deste capítulo, vocês deverão baixar o Dev-cpp e instalar no seu computador, para que possamos fazer os nossos programas. O processo de instalação não apresenta dificuldades. Vocês só devem ficar atentos no momento que for questionado sobre qual idioma deseja utilizar, para que faça a escolha do idioma correto (Português), certo? Assim, a interface do Dev-cpp ficará toda em Português, facilitando os seus estudos. Vamos analisar a tela principal do Dev-cpp, apresentada na figura 2.4. Na parte 1 temos o menu principal do Dev-cpp, que disponibiliza 34
  • 35. Programação 2 as seguintes opções: • Arquivo: o menu arquivo disponibiliza, basicamente, as opções para criar, salvar, imprimir e fechar arquivos. • Editar: neste menu encontraremos as opções: copiar, colar, selecionar, refazer e desfazer. • Localizar: as opções deste menu nos possibilita localizar alguma palavra no programa fonte, além de permitir substituições de uma palavra por outra. • Exibir: neste menu temos as opções que nos permite exibir ou esconder itens da interface do ambiente, como por exemplo: barra de ferramenta e barra de status. • Projeto: permite a adição ou remoção de arquivos em um projeto. • Executar: é através deste menu que iremos chamar as opções para a compilação e execução do nosso programa. Saiba Mais • Debug: o debugador auxilia o programador a encontrar erros no programa, tornando possível acompanhar passo a passo a 14 O CVS, ou execução dos comandos do programa. Neste menu teremos as Concurrent Version System opções para utilização do debugador. (Sistema de Versões • Ferramentas: no menu ferramentas temos as opções para Concorrentes) é um sistema configurar o ambiente (mudar cores, tipo de letra, dentre outros) de controle de versões que e também a opção para atualização do Dev-cpp. permite que se trabalhe • CVS14: este menu é utilizado por quem faz o controle de com diversas versões do versões dos programas. Apesar de ser uma função bastante mesmo arquivo. interessante, é mais utilizado quando trabalhamos em grupo ou Este sistema mantém as com programas grandes. versões antigas do seu arquivo • Janela: neste menu estão disponíveis as opções que nos e os logs de quem e quando permitem escolher qual janela de edição deve ficar visível manipulou os arquivos. no momento. Utilizamos esta opção quando temos vários programas abertos ao mesmo tempo. É especialmente útil para se • Ajuda: neste menu encontramos o help do Dev-cpp. controlar versões de um software durante seu Na parte 2, da Figura 2.4, temos os ícones de atalhos para as desenvolvimento, opções mais utilizadas no Dev-Cpp. Se vocês deixarem o mouse ou para composição sobre o ícone, aparecerá um texto, que informa o que ele faz. Na parte colaborativa de um documento. 3 temos a área de edição do programa. Para a área de edição ficar 35
  • 36. Programação 2 disponível, vocês deverão escolher a opção Arquivo/Novo/Arquivo Fonte. É nesta área que digitaremos os nosso programas (código fonte). A parte 4 fica visível quando nosso programa apresenta algum erro de compilação. O compilador indicará em qual linha foi encontrado um erro, e fornece uma dica do que pode ser o erro. Mesmo que vocês tenham instalado o Dev-cpp em Português, as mensagens de erro são apresentadas em Inglês. Por isso, é importante que vocês comecem a se familiarizar com estas mensagens, para que consigam tirar mais rapidamente os erros dos programas. Segue abaixo um roteiro do que vocês precisam fazer para editar, compilar e executar seus programas no Dev-cpp: 1. Crie um arquivo fonte novo na opção: Arquivo/Novo/Arquivo Fonte; 2. Digite o programa fonte na área de edição. Ao terminar de editá- lo, salve o arquivo; Saiba Mais 3. Compile o programa na opção: Executar/Compilar; 15 O erro de 4. Se der algum erro no programa, vejam as indicações de compilação pode erro fornecidas pelo compilador15. Conserte os erros, salve o não estar na linha que o complilador arquivo e compile novamente. Isto deve ser feito até que seja está indicando. O erro poderá estar: apresentada uma mensagem indicando que o programa não na linha que ele tem erros de compilação. está indicando, na linha imediatamente 5. Se vocês acessarem o diretório que o arquivo do código fonte acima, ou ainda, foi armazenado, notarão que foi criado um arquivo com a em linhas mais acima (menos extensão .exe (com o mesmo nome do arquivo do código fonte). comum de acontecer). Este é programa executável. Para executá-lo, escolha a opção Executar/Executar no Dev-cpp. Imediatamente, aparecerá a janela de execução do programa, como mostra a Figura 2.5. Figura 2.5: Janela do programa em execução É nesta janela que o programa será executado. Aqui o usuário 36
  • 37. Programação 2 deverá fornecer os dados solicitados pelo programa, neste caso o programa está solicitando que seja digitado um número. Além disso, também receberá os resultados fornecidos pelo programa. Quando a execução de um programa é finalizada, esta janela será fechada automaticamente. Agora que já conhecemos o ambiente de desenvolvimento de programa C, precisamos aprender os comandos para fazer um programa completo. Nos próximos capítulos iremos ver tais comandos, para podermos começar a programar. Não fiquem ansiosos(as), a nossa hora de programar está chegando! Atividades e Orientações de Estudo Vamos resolver mais uma lista de exercícios? Note que estamos conhecendo, ao poucos, os detalhes que envolve a programação de computadores. A resolução das atividades propostas fará com que estes conceitos sejam assimilados de forma mais natural. É sempre importante complementar o nosso conhecimento com a leitura de livros e materiais disponíveis na Internet, indicados na seção “Conheça Mais”. Será que vocês estão lembrados (as) das respostas para as questões abaixo? 1. Quando é que precisamos incluir uma biblioteca em um programa C? 2. O que é diretiva de compilação? 3. O que deve ter no corpo do programa principal? 4. O que é uma palavra reservada? 5. Porque devemos comentar nossos programas? 6. Qual a função do pré-processador no momento da compilação de um programa? 7. Qual o papel do linker no processo de compilação? 8. Qual elemento do computador é responsável pela execução do programa? 37
  • 38. Programação 2 Conheça Mais Vocês poderão aprender mais sobre boas práticas de programação nos sites: http://www.ibm.com/developerworks/aix/library/au-hook_ duttaC.html http://www2.eletronica.org/artigos/eletronica-digital/ programando-em-c-boas-praticas Para conhecer mais detalhes do ambiente de programação que iremos utilizar, acessem os sites: http://www.bloodshed.net/dev/index.html http://www.uniqueness-template.com/devcpp/ Vamos revisar? Nesta seção iremos revisar os principais tópicos vistos neste capítulo. Vale a pena dar uma lida para verificar como está o nosso aprendizado. Observem o resumo a seguir: • A estrutura básica de um programa C deve seguir a seguinte ordem: inclusão de bibliotecas, declaração das constantes e programa principal. No corpo de programa principal temos: declaração de variáveis e seqüência de comandos. • Uma biblioteca é um arquivo que contém comandos complementares, que são utilizados pelo programa. Para a inclusão de uma biblioteca devemos usar um comando que é chamado de diretiva de compilação. • As palavras reservadas de uma linguagem definem o que pode ser feito e como pode ser feito. O programador não pode utilizar uma palavra reservada da linguagem para dar nome as suas variáveis, constantes e funções. • O uso de comentário nos programas é uma boa prática de programação, e facilita o entendimento do código fonte. 38
  • 39. Programação 2 • Passos para o desenvolvimento de um programa: edição, pré- processamento, compilação, ligação (linking), carregamento e execução. • O compilador traduz o código fonte para o código em linguagem de máquina. O pré-processador analisa o código fonte, executando as diretivas de compilação. • O linker faz a ligação do código objeto, gerado pelo compilador, com o código das funções que estão disponíveis nas bibliotecas que incluímos no programa. • Ao ser executado, um programa deve ser carregado na memória. O carregador, também conhecido por loader, e responsável por acessar o programa armazenado no disco e carregá-lo para a memória principal do computador. • Os programas são executados passo a passo pelo processador do computador. 39
  • 40. Programação 2 Capítulo 3 – Tipos de Dados, Variáveis e Constantes Saiba Mais Vamos conversar sobre o assunto? 16 A linguagem Programas são feitos para manipular dados. Armazenar notas, C não possui o tipo lógico, calcular médias, alterar um endereço, etc. Os dados são a essência que armazena de um programa. Dados precisam ser armazenados e modificados verdadeiro ou falso. ao longo da execução do programa. Neste capítulo, iremos conhecer os tipos de dados suportados pela linguagem C e aprender a definir constantes e variáveis. Saiba Mais Inicialmente, os comandos serão apresentados em separado. Mas, logo em seguida, veremos o ponto em que cada comando deve ser 17 Bit é uma colocado na estrutura do programa, certo? Tenham paciência! Vocês abreviatura de “Binary Digit” irão notar que muito dos conceitos estudados nos capítulos anteriores (dígito binário). Este termo foi serão referenciados neste capítulo. Mas isto não é problema, não é criado pelo mesmo? Vamos continuar os nossos estudos, conhecendo mais um engenheiro belga Claude Shannon pouco da linguagem C. que em 1949 para simbolizar uma unidade de informação. Tudo 3.1. Tipos de dados na informática é medido em bits, desde o tamanho Nesta seção, vamos aprender um conceito importante em de um número até a velocidade programação, que é: tipo de dados. De maneira geral, os programas de transferência de dados em uma manipulam dados, armazenando-os e, muitas vezes, modificando seus rede. Por ser uma valores. Primeiramente, vamos conhecer quais os tipos de dados são unidade binária, pode ter apenas manipulados na linguagem C. Basicamente, a linguagem C, manipula dois valores, zero ou um. quatro tipos de dados: inteiro, real, caractere e void16. Para cada tipo de dado, é necessária uma quantidade de bits17 para armazená-lo. A partir do bit, Além disso, cada tipo de dado possui um conjunto de operações surgiu o byte, que nada mais é do que pode ser executada sobre ele. Nas subseções seguintes, vamos que um conjunto de 8 bits. detalhar cada tipo de dado separadamente. Existem diversos múltiplos dos bytes: um kilobyte 3.1.1. Inteiro (KB), equivalente a 1.024 bytes; Os dados do tipo inteiro são toda e qualquer informação numérica um megabyte (MB), equivalente que pertença ao conjunto dos números inteiros relativos (negativo, a 1.024 KB; e um gigabyte, nulo ou positivo). Os números inteiros, em C, se dividem em três tipos, equivalente a como mostra a tabela a seguir. 1.024 MB. 40
  • 41. Programação 2 Tipo Tamanho Intervalo Suportado Short 16 bits -32.768 a +32.767 Int 32 bits -2.147.483.648 a + 2.147.483.647 -9.223.372.036.854.775.808 Long 64 bits a +9.223.372.036.854.775.807 Atenção Qual a diferença entre cada um deles? A diferença entre os tipos short, int e long é a quantidade de memória18 que é reservada para 18 A memória é a parte do armazená-los. Veja como é simples: à medida que se utiliza mais computador que memória, aumenta o intervalo do valor que pode ser armazenado. Por tem como função o armazenamento exemplo, para armazenar um dado do tipo short, são reservados 16 de dados. Quando um dado vai ser bits de memória. Com isso, o tipo short pode suportar um número armazenado, inteiro no intervalo de -32.768 a +32.767, como apresentado na precisamos reservar uma tabela. Portanto, dependendo do valor que será armazenado, deve quantidade de memória para ser escolhido um tipo (short, int ou long) que comporte tal valor. Por isto. exemplo, para armazenar a idade de um funcionário, o tipo short é o mais adequado (já que a idade de uma pessoa é um valor que raramente ultrapassa 100). No entanto, para armazenar a quantidade de eleitores de uma cidade, deve-se usar o tipo int (note que em muitas cidades, a quantidade de eleitores ultrapassará o maior valor suportado pelo tipo short: 32.767). Para facilitar nosso estudo, neste material, sempre será usado o tipo int para armazenar os dados inteiros. 3.1.2. Real Os dados do tipo real são toda e qualquer informação numérica que pertença ao conjunto de números reais (negativo, positivo ou nulo). Os números reais, em C, podem ser de dois tipos, como mostra a tabela abaixo: Tipo Tamanho Intervalo Suportado float 32 bits 3.4E-38 a 3.4E+38 double 64 bits 1.7E-308 a 1.7E+308 Para o tipo float são reservados 32 bits de memória, o que possibilita armazenar um valor no intervalo 3.4–38 a 3.438. Como o tipo float suporta valores bem altos, neste material, sempre será usado o tipo float para armazenar os dados reais. 41
  • 42. Programação 2 3.1.3. Caractere Na linguagem C, os caracteres são do tipo char, representados por toda e qualquer informação composta por um único caractere alfa numérico (a, b, c,...z, A, B, C,...Z, 0...9) ou especial (como por exemplo: ; # ? @ ! < ?). O tipo char armazena um único caractere. Quando se deseja armazenar vários caracteres, é necessário definir um vetor de caractere (mais detalhes na seção 3.2.2). Por exemplo, o nome de um aluno é formado por uma cadeia de caracteres, assim, será necessário usar um vetor de caracteres. Cada caractere armazenado ocupa o espaço de 8 bits de memória. Um caractere deve ser representado entre apóstrofo, por exemplo: ‘a’. Mas, quando temos uma cadeia de caracteres, esta deve ser representada entre aspas dupla, por exemplo: “Pedro Goncalves”. 3.1.4. Void Em Inglês, void quer dizer vazio e é isto mesmo que o void é. Void é um tipo que não armazena nada (um tanto esquisito, não é?). Este tipo serve para indicar que um resultado não tem um tipo definido. Ele é utilizado quando estamos definindo funções nos nossos programas. Permiti-nos desenvolver funções que não retornam nada e funções que não têm parâmetros. Voltaremos a falar do tipo void no Volume 2, no capítulo que aborda modularização. 3.2. Variáveis e Constantes Agora que já sabemos os tipos de dados manipulados pela linguagem C, vamos aprender como reservar espaços de memória para o armazenamento dos nossos dados. Qualquer dado que seja manipulado pelo programa deve ficar armazenado na memória principal do computador. Para que o armazenamento seja possível, precisaremos reservar espaços na memória principal do computador. As variáveis e constantes são unidades básicas de armazenamento dos dados em programação. Elas são um espaço de memória reservado para armazenar um certo tipo de dado e possuem um identificador (nome) para referenciar o seu conteúdo. Dessa forma, nossos dados ficam armazenados em constantes ou variáveis. Uma variável pode conter, a cada instante, valores diferentes. No 42
  • 43. Programação 2 entanto, as constantes referem-se a valores fixos que não podem ser alterados durante a execução do programa. O modo como cada constante é representada depende do seu tipo (este assunto será detalhado um pouco mais a frente). Para entender o conceito de variáveis e constantes, vamos fazer a seguinte analogia: um armário cheio de gavetas de tamanhos diferentes. Acompanhem o raciocínio: Pedro tem um armário e decide que em cada gaveta será guardado um tipo de roupa: camisa, bermuda, calça, etc. Figura 3.1: Armário cheio de gavetas Em uma dada gaveta, só podem ser armazenadas camisas. Não será permitido o armazenamento de calças nesta gaveta. Para facilitar a identificação, Pedro coloca uma etiqueta informando o que cada gaveta guarda. Com isso, Pedro poderá identificar, rapidamente, em qual a gaveta estão guardadas suas camisas. Agora vamos associar a ideia das gavetas com a ideia de variáveis, constantes e tipo. As gavetas que guardam as roupas são como os espaços de memória que armazenam nossos dados. Assim como uma gaveta só pode armazenar um tipo de roupa, os espaços de memória são especificados para armazenar um tipo de dado. Dependendo do tipo de roupa, a gaveta precisa ser maior ou menor. Da mesma forma, dependendo do tipo de dado, é feito uma reserva de mais ou menos memória para armazená-lo (de acordo com as tabelas da seção 3.1). As etiquetas das gavetas são os identificadores dos nossos 43
  • 44. Programação 2 espaços de memória. Assim, iremos encontrar, facilmente, um dado armazenado nos nossos espaços de memória. Quando temos uma variável, o conteúdo da nossa gaveta pode mudar ao longo do tempo. Mas, no caso de uma constante, seu conteúdo será sempre o mesmo. Nas próximas seções, vamos aprender as regras para dar nomes às nossas variáveis e constantes e como criar as nossas gavetas – espaços de memória (variáveis e constantes). 3.2.1. Identificadores Para que o compilador saiba quais dados estamos querendo manipular, eles precisam ter um nome. É como nós, todos temos um nome. Sabemos quando alguém está nos chamando quando falam o nosso nome. Vai acontecer a mesma coisa com os espaços de memória dos nossos programas, precisamos identificá-los, de alguma forma. Os identificadores são os nomes que damos as nossas variáveis, constantes, funções e procedimentos usados no programa. Para criar um identificador é necessário respeitar as regras a seguir: • O primeiro caractere deve ser uma letra ou _ (underscore); • O restante do nome deve ser formado por caracteres pertencentes ao seguinte conjunto: a,b,c,..z, A,B,C,...Z, 0,1,2,...,9, _ (ou seja: letras, números e underscore); • Não deve haver espaço em branco (ou seja, não existe identificadores compostos, formados por dois ou mais nomes); • Não utilizar acentos, nem cedilha; • Os identificadores podem ter até 32 caracteres; • Não deve haver identificadores repetidos (Se dermos o mesmo nome para duas variáveis do nosso programa, o compilador não vai saber qual delas será chamada, e isso não pode acontecer). A linguagem C faz distinção de maiúsculas e minúsculas. Assim, os identificadores: Media, MEDIA, MediA e media, são diferentes. O fato de termos uma única letra de forma diferente (maiúscula ou minúscula), já faz com que os identificadores se diferenciem. Esta propriedade é chamada de case sensibility (sensibilidade a letras maiúsculas e minúsculas). 44
  • 45. Programação 2 DICA: Boa Prática de Programação Escolham bem os nomes das variáveis e constantes do programa. Os identificadores escolhidos devem ser claros, a fim de explicitar o conteúdo que será armazenado, mas também não devem ser extensos para não dificultar a escrita. A seguir, vamos verificar exemplos de identificadores corretos e incorretos: • Identificadores corretos: a, x2, Nome_Aluno, Media, SalarioFuncionario. Note que, quando queremos usar identificadores com mais de uma palavra, que foi o caso de Nome_Aluno, usamos o _ para ligar uma palavra a outra. Ou usamos as palavras juntas, como o exemplo SalarioFuncionario. Lembrando que não podemos usar espaço em branco. • Identificadores incorretos: 2m (começou com número), media* (caractere * não é permitido), Nome disciplina (não pode haver espaço em branco), funcionário (não pode acentuar). Até este momento, vimos os conceitos de tipos de dados, variáveis, constantes e identificadores. Na próxima seção, estes conceitos serão utilizados em conjunto, para que possamos declarar as nossas variáveis, ou seja, criar espaços de memória para armazenar os dados manipulados pelo nosso programa. Continuemos a nossa leitura. 3.2.2. Declaração de Variáveis Para que se possa usar uma variável em um programa, primeiramente, é necessário fazer a declaração dela. A declaração de uma variável informa ao processador duas coisas: o identificador (nome) da variável e o seu tipo de dado. As variáveis precisam de um nome para que o processador saiba onde desejamos armazenar o nosso dado. Além disso, toda variável precisa ser associada a um tipo de dado, para que o processador reserve o espaço de memória necessário para o seu armazenamento. Como visto na seção 3.1, cada tipo de variável, ocupa uma quantidade de bits diferente. Resumindo, toda variável possui um nome, um tipo e um conteúdo (ou valor que é armazenado na variável). 45
  • 46. Programação 2 A declaração de variáveis deve obedecer a seguinte sintaxe: Sintaxe tipo [variavel_1, variavel_2, ...]; Onde tipo é o tipo de dado (int, float, char) e variavel_1 é o nome da variável a ser declarada. O nome da variável deve seguir a regra dos identificadores (mencionadas na seção 3.2.1). Se houver mais de uma variável do mesmo tipo, seus nomes são separados por vírgulas. Notem que, no final do comando, aparece um ponto e virgula (;), indicando ao compilador que o comando terminou. Exemplo 3.1: Declaração de Variáveis 1 int idade, matricula; 2 float media, total; 3 char letra, nome_aluno[20]; As variáveis idade e matricula são espaços de memória que armazenam números inteiros. As variáveis media e total armazenam números reais. Note que na linha 3, temos as variáveis letra e nome_aluno. Quando uma variável caractere tem apenas um único caractere, na sua declaração, é necessário apenas dar um nome a esta variável. Quando houver necessidade de armazenar vários caracteres, temos o que é chamado de cadeia de caracteres, vetor de caracteres ou string. Uma cadeia de caracteres forma uma palavra ou frases. Para declarar uma variável capaz de armazenar uma cadeia de caracteres, devemos colocar ao lado do nome da variável, entre colchetes, um valor inteiro, que significa quantos caracteres podem ser armazenados nesta cadeia. Assim, a variável nome_aluno, declarada na linha 3, tem capacidade de armazenar uma palavra/frase com até 20 caracteres. A figura 3.2 representa a memória do computador, após a declaração das variáveis do exemplo. Cada caixa representa uma variável. E, cada variável possui o seu identificador. Assim, esta declaração de variáveis resultou na reserva de seis espaços na memória. Toda vez que precisarmos acessar ou armazenar o conteúdo de uma variável, utilizaremos o seu identificador. 46
  • 47. Programação 2 Figura 3.2: Representação da memória do computador após a declaração de um conjunto de variáveis Atenção Como dito anteriormente, o C difere as letras minúsculas das maiúsculas. Assim, os tipos de dados e comandos que iremos aprender ao longo da disciplina, DEVEM ser escritos em minúsculo. Se vocês fizerem a seguinte declaração : Int x,y; Vai ocorrer um erro no momento da compilação do seu programa, já que o C não conhece o tipo Int com “I” maiúsculo. Fiquem atentos, pois esse é um erro comum para quem está começando a programar em C. De acordo com o que foi visto, quando estudamos a estrutura da um programa C, as variáveis devem ser declaradas logo quando inicia o corpo do programa principal. Vamos estudar, a seguir, como fazemos para declarar as nossas constantes. 3.2.3. Declaração de Constantes Diferente das variáveis, as constantes mantêm seu valor ao longo do programa. Para indicar ao compilador que se trata de uma constante, a diretiva de compilação #define é utilizada. Segue a sintaxe da declaração de uma constante. Sintaxe #define <identificador> <valor> 47
  • 48. Programação 2 Não é necessário colocar o ponto e vírgula no final da linha e também não precisa informar o tipo de dado da constante. O valor de uma constante não pode ser modificado, de maneira alguma, ao longo da execução do programa. O modo como cada constante é representada depende do seu tipo. Constantes do tipo inteiro são representadas por números sem o componente fracionário, por exemplo, 123 e 2009. Constantes reais precisam do uso de ponto decimal seguido do componente fracionário do número, por exemplo, 302.54. Constantes caractere são colocadas entre apóstrofos, por exemplo, ‘a’. Constantes cadeia de caractere são colocadas entre aspas duplas, por exemplo, “Casa” e “Maria”. A seguir são apresentadas as declarações de quatro constantes: Exemplo 3.2: Declaração de Constantes 1 #define DIAS 7 2 #define PI 3.1416 3 #define RESPOSTA ‘s’ 4 #define DISCIPLINA “Matemática” De acordo com o exemplo, a constante DIAS irá armazenar sempre 7. Como o valor que esta constante recebeu foi um valor inteiro, o compilador entende, automaticamente, que esta é uma constante inteira. Da mesma forma, como a constante PI recebeu 3.1416 (um número real), o compilador saberá que se trata de uma constante do tipo real. A constante RESPOSTA armazena um char e DISCIPLINA uma cadeia de caracteres. É interessante declarar uma constante quando sabemos que um valor não será modificado ao longo da execução do programa. Por questões de padronização, declare as suas constantes com todas as letras em maiúsculo, como apresentado nos exemplos. Assim você estará diferenciando-as das variáveis. De acordo com a estrutura de um programa C, as nossas constantes são declaradas no início do programa, logo após incluirmos as bibliotecas que serão utilizadas. Estão lembrados(as) disso? Se não estão, deem uma revisada na seção 2.1, certo? Ao serem criadas, as constantes já recebem o valor que elas vão armazenar ao longo do programa. Isto não acontece com as variáveis. 48
  • 49. Programação 2 Mas como fazemos para armazenar um valor em uma variável? Esta resposta vocês encontrarão na próxima seção. 3.3. Operador de Atribuição (=) Esse operador é utilizado para armazenar um valor em uma dada variável. Assim, o operador de atribuição nos possibilita armazenar um dado em um espaço de memória, que foi previamente declarado. É importante que o dado que será armazenado seja compatível com o tipo da variável que receberá a atribuição. Por exemplo, as variáveis reais podem receber valores reais e inteiros. No entanto, uma variável inteira, não pode receber um valor real. Segue a sintaxe do operador de atribuição. Sintaxe Variavel = Valor; Variavel_1 = Variavel_2; Variavel = Expressão Aritmética; Variavel = função; Variavel_1 = variavel_2 = variavel_3 = valor; O operador de atribuição é representado pelo símbolo =. No lado esquerdo do operador da atribuição, temos a variável que vai receber o valor. No lado direito do operador, temos o valor que será atribuído à variável. Ao final da linha de atribuição deve ter um ponto e vírgula. Notem que o operador de atribuição permite várias possibilidades. Para um melhor entendimento, o exemplo 3.3 apresenta cada uma das possibilidades do operador de atribuição. 49