SlideShare une entreprise Scribd logo
1  sur  186
Semana da Tecnologia
                      Grupo Unis




Mini-Curso
Linguagem C
• Semana da Tecnologia
                                               • Grupo Unis
• APRESENTAÇÃO
  – Professor Wariston Pereira
     • MBA em Gestão Estratégica e Inteligência em Negócios
     • Bacharel em Ciência da Computação
     • Analista de Sistemas: TI – Unis
     • Professor Atualmente nos Cursos: Ciência da Computação,
       Engenharia Civil e Automação Industrial. Já atuei também nos cursos
       de Engenharia de Produção e Administração.
     • Consultor e Proprietário da W4Solutions – Soluções em Tecnologia
       da Informação e Comunicação Empresarial.
     • Atuação nas Áreas de Análise, Desenvolvimento, Consultoria, Redes
       de Computadores e Simulação Computacional.




                                                                             2
• Semana da Tecnologia
                                      • Grupo Unis
• OBJETIVOS
– Caracterizar Linguagens de Programação;
– Caracterizar a linguagem C;
– Dev-Cpp – Compilador C/C++
– Estruturas Básicas em C;
– Identificadores;
– Operadores Relacionais, Lógicos e Aritméticos;
– Comandos de Entrada e Saída;
– Estruturas Condicionais;
– Estruturas de Controle/Repetição;
– Funções.
                                                   3
• Semana da Tecnologia
                                       • Grupo Unis
• Algumas Sugestões....



                    •Apostilas
                          • Curso de Linguagem C – UFMG
                          • Introdução à Linguagem C – UNICAMP




                                                          4
• Semana da Tecnologia
                                              • Grupo Unis


• AGENDA


– Laboratório 3
     • 26/04 – 21:00 às 22:30 hrs
     • 27/04 – 19:30 às 21:00 hrs
     • 29/04 – 19:30 às 21:00 hrs




                                                        5
• Semana da Tecnologia
                  • Grupo Unis




Agora é com vocês....
   • Nome
   • Expectativa
   • Atuação



                            6
Linguagem C


  Introdução e
Primeiros Passos



                   7
Introdução
 Por que programar ?


Quando o homem necessita do auxilio do computador para
executar algumas tarefas.


 O Que é um programa ?


 Conjunto de instruções de uma determinada linguagem
 através das quais, um computador executa algumas
 tarefas.
                                                       8
Introdução
O Que é uma linguagem ?


Uma linguagem consiste de um conjunto de palavras
reservadas e regras de sintaxe que possibilita criar
programas de computadores.


Este conjunto de palavras possui regras de estruturação
lógica e sintática própria.


                                                       9
Exemplos de Códigos: BASIC
Pseudo-código      BASIC
leia(num)          10 input num
para n de 1        20 for n=1 to 10
 até 10 passo 1         step 1
  faça
                   30 let tab=num*n
    tab←num*n
                   40 print chr$(tab)
    imprima(tab)
                   50 next n
  fim-para;




                                        10
Exemplos de Códigos:
FORTRAN
Pseudo-código      FORTRAN
leia(num)             read (num)
para n de 1           do 10 n=1:10
 até 10 passo 1         tab=num*n
  faça
                        write(tab)
    tab←num*n
                   10 continue
    imprima(tab)
  fim-para;




                                     11
Exemplos de Códigos:
Assembly
Pseudo-código      Assembly (Intel 8088)
leia(num)            MOV CX,0
para n de 1          IN   AX,PORTA
 até 10 passo 1      MOV DX,AX
  faça
                     LABEL:
    tab←num*n
                     INC CX
    imprima(tab)
                     MOV AX,DX
  fim-para;
                     MUL CX
                     OUT AX, PORTA
                     CMP CX,10
                                           12
                     JNE LABEL
Exemplos de Códigos: C
Pseudo-código      C
leia(num)          scanf(&num);
para n de 1        for(n=1;n<=10;n++){
 até 10 passo 1        tab=num*n;
  faça
                       printf(”n %d”,
    tab←num*n          tab);
    imprima(tab)       };
  fim-para;




                                         13
Tipos de Linguagens: Baixo
Nível
 São linguagens com foco na maquina, ou
  seja, utiliza instruções detalhadas que
  controla os circuitos internos do computador.
   Usualmente são genericamente chamadas
  de linguagens de maquina, Assembly ou de
  linguagem de montagem.




                                                  14
Tipos de Linguagens: Baixo
Nível

  Vantagens: Maior velocidade de
   processamento e ocupam menor espaço na
   memória.

  Desvantagens: Pouca portabilidade, ou
   seja, o código é gerado para um tipo de
   processador não serve para outro.




                                             15
Tipos de Linguagens: Alto
Nível

 São linguagens voltadas para que haja uma
  maior interação entre o homem e a máquina.

 Necessitam de compiladores ou
  interpretadores para gerar as instruções do
  microprocessador.




                                                16
Tipos de Linguagens: Alto
Nível
  Vantagens: São compiladas ou
   interpretadas, têm maior portabilidade
   podendo ser executados em várias
   plataformas com pouquíssimas
   modificações.

  Desvantagens: São mais lentas e ocupam
   mais memória.



                                            17
Compiladores x
Interpretadores
A única linguagem que o computador entende é a linguagem
de máquina. Programas escritos em um linguagem de alto
nível, devem ser traduzidos para a linguagem de máquina.

Os Programas que fazem esta tradução, classificam em:

    - INTERPRETADORES
    - COMPILADORES




                                                        18
Compiladores x
Interpretadores
Os INTERPRETADORES, traduzem o código fonte em
linguagem de máquina através da interpretação de cada
instrução feita a medida que o software é executado.
Necessitam de um componente interpretador presente na
máquina.
 Os COMPILADORES, por sua vez, traduzem o código
fonte em linguagem de máquina através da geração de
um programa .OBJ, que após ser linkeditado, torna-se um
arquivo executável. Em C os programas são compilados.

                                                        19
Linguagem C


Sobre a linguagem C




                      20
Histórico
C foi originalmente desenvolvida por Dennis Ritchie e
K. Thompson nos Laboratórios Bell nos anos 70.
Derivadas de duas linguagens anteriores chamadas BCPL
e B.
 Inicialmente para máquinas com o sistema operacional
UNIX.
 Tornou-se uma das mais importantes e populares nos
últimos dias.
 Foi projetada para o desenvolvimento de programas
estruturados e modulares.
                                                         21
Histórico
Nos anos seguintes, a popularidade da linguagem C
  aumentou consideravelmente, aumentando também o
  surgimento de ferramentas de desenvolvimento.

  Inicialmente, muitas implementações do C não
   traduziam fielmente a definição original, o que gerou
   alguns problemas de incompatibilidade

  A portabilidade proposta pela definição original ficou
   bastante comprometida.



                                                            22
ANSI
O Padrão ANSI

Buscando uma padronização na definição da linguagem C,
a American National Standard Institute (ANSI),
desenvolveu um padrão hoje bastante utilizado no mundo
da linguagem C, chamado de C padrão ANSI ou C ANSI.



Quase todas as ferramentas de desenvolvimento da
linguagem C atuais, seguem este padrão.

                                                         23
Características

    Linguagem de propósito genérico;
     
         Usada para escrever processadores de texto,
         planilhas, sistemas operacionais, programas de
         comunicação, programas para automação
         industrial, SGBDs, navegadores e servidores
         Web, etc.

    Possui características de alto e de baixo nível;

    Excelente performance;

    Muito popular;

    Sintaxe de C serve de base para muitas
    outras linguagens.
                                                      24
Características

    Deu origem a outras linguagens de
    programação, entre elas C++, Java, C#, PHP,
    Ruby, Python, etc.

    Muito usada no desenvolvimento de:
    
        Compiladores, interpretadores, editores de texto,
        banco de dados, computação gráfica,
        manipulação e processamento de imagens,
        controle de processos, …



                                                       25
Características

    Portabilidade

    Geração de códigos executáveis
    compactos e rápidos

    Interação com o sistema operacional

    Facilidade de uso

    Linguagem estruturada

    Confiabilidade

    Simplicidade

    Case sensitive
     
         Maiúsculas e minúsculas fazem diferença.
                                                    26
Estrutura básica de um
programa C
Um programa em C consiste de uma ou várias funções,
onde uma delas precisa ser denominada “main” e deve
existir em algum lugar de seu programa. Esta função
marca o início da execução do programa.


 Outras funções podem ser definidas pelo programador ou
 preencher a função main, porém em um programa
 executável em C, a função main deve sempre existir.



                                                      27
Estrutura básica de um
programa
      main(Argumentos)
      {    /* início do corpo da função */


      }    /* término do corpo da função */


   Uma função deve conter :
     - Um header que consiste do nome da função

    - Uma lista de argumentos entre parênteses.

      - Um bloco de instruções delimitado por chaves.
                                                        28
Estrutura básica de um
programa
 O nome da função, os parênteses e as chaves, são os
únicos elementos obrigatórios de uma função

 Os comentários podem aparecer em qualquer lugar de
um programa, devendo ser colocados entre os
delimitadores /* e */

 Letras minúsculas e maiúsculas não são equivalentes
em C.
 Note que cada expressão dentro do bloco deve
terminar com um ponto-e-vírgula.
                                                        29
Geração de Executável

    Editor (módulo fonte em C)

    Pré‐processador (novo fonte expandido)

    Compilador (arquivo objeto)

    Lincador (executável)




                                             30
Linguagem C
     Dev C
  Ambiente de
Desenvolvimento
  Linguagem C


                  31
Tela Principal




                 32
Painel Principal




                   33
Painel Principal
• Clicando em Arquivo

                - Criar Arquivo Fonte.
                - Criar Novo Projeto




                                         34
Painel Principal
• Clicando em Arquivo

                - (Re)Abrir Arquivo Fonte.
                - (Re)Abrir Novo Projeto




                                             35
Painel Principal
• Clicando em Arquivo

                  - Salvar o conteúdo da aba
                  aberta.
                  - Salvar o conteúdo da aba
                  aberta em outro arquivo.
                  - Salvar o projeto em outro
                  arquivo.
                  - Salvar todos(as)
                  arquivos(abas) alterados.



                                                36
Painel Principal
• Clicando em Arquivo

                - Fechar o conteúdo da aba aberta.
                - Fechar todas as abas abertas.
                - Fechar o projeto.




                                                     37
Painel Principal
• Clicando em Arquivo

                - Imprime todas as informações do
                arquivo atual.




                                                    38
Painel Principal
• Clicando em Arquivo

                - Importa um projeto de outro
                ambiente de programação.
                - Exporta o projeto para HTML,
                muito útil para documentação do
                projeto.




                                                  39
Painel Principal
• Clicando em Arquivo

                -Menus de impressão.




                                       40
Painel Principal
• Clicando em Arquivo

                - Sair.




                          41
Painel Principal




                   42
Painel Principal
• Clicando em Editar

                - Desfazer e Refazer as últimas ações.




                                                   43
Painel Principal
• Clicando em Editar

               - Recortar, copiar e colar.




                                             44
Painel Principal
• Clicando em Editar

               - Inserir cabeçalho e data e hora no
               código fonte.
               - Bookmarks é uma marca que você
               faz no código fonte. Essa marca é
               um atalho para um determinado
               trecho do código.




                                                      45
Painel Principal
• Clicando em Editar

                - Seleciona todo o conteúdo do
                código fonte aberto.




                                                 46
Painel Principal
• Clicando em Editar

               - Comenta e “descomenta” uma
               determinada parte do código fonte.




                                                    47
Painel Principal
• Clicando em Editar

                - “Indenta” e “unidenta” uma
                determinada parte do código fonte.




                                                     48
Painel Principal




                   49
Painel Principal




 - Localizar em um fonte especifico ou no projeto todo
 uma função ou qualquer palavra qualquer.

                                                         50
Painel Principal




 - Configuração das barras de ferramentas.


                                             51
Painel Principal




 - Adicionar ou remover arquivo ao projeto, usaremos
 os ícones abaixo para fazer essas ações.

                                                       52
Painel Principal




 - Executa, compila e recompila o projeto atual.
 Usaremos os ícones em vermelho.

                                                   53
Painel Principal




 - Execução passo a passo. Nesse primeiro momento
 não vamos utilizar essa ferramenta.

                                                    54
Painel Principal




 - Algumas configurações de projeto. Nesse primeiro
 momento usaremos as configurações padrões.

                                                      55
Painel Principal




 - Controle da janela do e das abas Dev C.


                                             56
Painel Principal




 - Ajuda de utilização e sobre o programa Dev C.


                                                   57
Meu primeiro programa em C




                             58
Meu primeiro programa em C




                             59
Meu primeiro programa em C




   - Inclui sa bibliotecas que contêm as funções de
   entrada, saída e comando “System”.                 60
Meu primeiro programa em C




   -Toda função em C retorna algo e recebe algo
   como parâmetro.
   -Void significa vazio.
   -Por padrão a função “main” é executada no     61
   início do programa;
Meu primeiro programa em C




   -Imprime na tela “Olá Mundo!”.
                                    62
Meu primeiro programa em C




   -Essa mensagem serve para travar o console do DOS.
                                                  63
Meu primeiro programa em C




   -Retorna 0.               64
Linguagem C


Identificadores




                  65
Regra de identificação
Todas as letras maiúsculas de A a Z e as minúsculas de a
  a z , os dígitos de 0 a 9 e alguns caracteres especiais,
  podem ser utilizados na criação de códigos em C.


Os nomes de variáveis, funções e matrizes em C,
  obedecem a regra de que voce pode usar letras e
  números, porem o primeiro digito deve ser apenas uma
  LETRA ou o caracter especial undescore (_).


Um nome não pode ser uma das palavras reservadas da
                                                             66
  linguagem C.
Regra de identificação
Exemplo de nomes válidos :

                     a     y12      soma1    _estoque


Exemplos de nomes não válidos :


2th (o primeiro caracter deve ser letra ou _ )

“a”   (inicia com um caracter ilegal (“) )

numero-ordem (caracter ilegal (-))

nome completo (espaço em branco)
                                                        67
Regra de identificação

Um identificador de nome pode ter mais de 32 caracteres,
  porem somente os 32 primeiros serão reconhecidos.



Algumas implementações do C, reconhece apenas os 8
  (oitos) primeiros, assim os nomes : taxa_dia e taxa_diaria,
  nestes sistemas não tem diferenca, pois o compilador
  reconhece apenas os oitos primeiros caracteres.

                                                           68
Palavras reservadas
 auto      double   int      struct
 break     else     long     switch
 case      enum     register typedef
 char      extern   return   union
 const     float    short    unsigned
 continue for       signed   void
 default   goto     sizeof   volatile
 do        if       static   while


 São apenas 32 palavras reservadas que não podem ser
                                                       69
 utilizadas para outro propósito
Tipos de Dados

Em C existem 5 tipos válidos:

  tipo              Palavra     Quant.   Bytes       Faixa
                    Reservada   Bit
  Caracter          Char           8       1       -128 a 127
  Inteiro           Int            16      2     -32768 a 32768
  Ponto flutuante   Float          32      4       3.4E-38 a
                                                    3.4E+38
  Pont. Flutuante   Double         64      8       1.7E-308 a
  duplo                                             1.7E+308
  Sem valor         void           0       0       Sem valor


                                                                  70
Tipos de Dados

Modificadores de Tipos


Com exceção do tipo void, os demais tipos podem ter
alguns modificadores. Um modificador é usado para alterar
o significado do tipo para adequá-los melhor às
necessidades do programador.




                                                            71
Tipos de Dados
Os modificadores são :
              signed, unsigned, long e short


Exemplo de utilização:


Se uma variável é declarada como char ela ocupa 8 bit e
tem a faixa de valores de -128 a 127, mais se o
modificador unsigned é colocado antes da palavra char,
ela continua ocupando 8 bits, mais sua faixa de valores vai
de 0 a 255.
                                                          72
Tipo de Dados Inteiro
Os dados inteiros são caracterizados pelos números
 positivos ou negativos que não seja fracionário. Em C
 referenciamos este tipo de dados com os seguintes
 identificadores :


 Tipo do Inteiro    Qt.Bit                Faixa

 int                 16             -32768 a 32767
 long int            32      -2.147.483.648 a 2.147.483.648
 unsigned int        16             De 0 até 65535
 signed long int     32          De 0 até 4.292.967.295




                                                              73
Tipo de Dados Reais

Os dados reais são caracterizados pelos números
 positivos, negativos, inteiros e os fracionários. Em C
 referenciamos este tipo de dados com os seguintes
 identificadores :

 Tipo do Inteiro    Qt.Bit                Faixa

 float               32           de 3.4e-38 até 3.4e+38
 double              64         de 1.7e-308 até 1.7e+308
 Long double         128       de -3.4e-4932 até 1.1e+4932



                                                             74
Tipo de Dados Caracteres
Os dados caracteres são caracterizados pelas sequencias
  de letras, números e simbolos especiais delimitados por
  ( “ ” ) . Em C referenciamos este tipo de dados pelo
  identificadores : char podendo armazenar de 0 até 255
  caracteres




                                                        75
Tipo de Dados Lógicos
Na linguagem C não existe o tipo de dados booleano , ou
  seja, não existe o valor lógico “false” ou “true” de forma
  predefinida.



Em C qualquer valor igual a 0 (zero), é considerado como
  valor lógico falso e qualquer valor diferente de 0 (zero),
  é considerado como valor lógico verdadeiro.




                                                               76
Constantes

Constantes são valores que permanecem fixos e na
  linguagem C temos 4 tipos básicos de constantes:


  - Inteiras
  - ponto-flutuante
  - caracteres
  - string (cadeia de caracteres)




                                                     77
Constantes numéricas

As constantes do tipo Inteiras e de ponto-flutuante,
  representam números.
As constantes do tipo Inteiras podem ser escritas em três
  sistemas de numeração, sendo :
             • decimal (base 10)
             • octal (base 8)
             • hexadecimal (base 16)

Uma constante inteira decimal pode ser formada por
 qualquer combinação dos dígitos de 0 a 9. Se tem mais
 de dois dígitos, o primeiro não pode ser zero. Ex.:
                     5   13    230 540
                                                            78
Constantes numéricas
Uma constante inteira octal pode ser formada por qualquer
 combinação dos dígitos de 0 a 7 e o primeiro deve ser
 zero. Ex.:
                       0 013 0656 0540
Uma constante inteira hexadecimal pode ser formada por
 qualquer combinação dos dígitos de 0 a 9 e de A a F
 (maiúsculas ou minúsculas). Deve sempre iniciar com
 0x ou 0X. Ex.:
                   0x 0x1 0xABC 0xabc
Normalmente a magnitude de uma constante inteira é:


             Decimal   = 32767
             Octal     = 07777
             Hexa      = 0x7FFF                          79
Constantes numéricas

As constantes do tipo ponto-flutuante é um número na base 10 que
   contem casas decimais e/ou um expoente. Ex.:


                    0.     0.5    1.3     230.323 .540e2


Observe que o caracter que separa a casa decimal é um ponto e não
  uma virgula


Para representar um número com expoente, trocamos a base 10 pela
  letra ´e´. Assim para representar 2 x 10², teremos:


          200. ou        2e2     ou     2e+2   ou 2E2 ou 2.0e+2
                                                                    80
Constantes caracteres

As constantes do tipo caracter consiste em um simples caracter
   colocado entre apóstrofos. Ex.:
                          ´A´ ´x´ ´5´ ´$´
Uma constante de caracter tem valores inteiros correspondentes a um
  conjunto de caracteres especificos.


Normalmente os computadores utilizam o conjunto de caracteres ASCII,
  onde cada caracter é representado por uma combinação de 7 bits,
  Representando assim 2e+7 = 128 diferentes caracteres.


Desta forma, cada constante de caracter, tem um valor inteiro
  correspondente.

                                                                      81
Constantes caracteres
Caracter   Valor   Caracter   Valor   Caracter   Valor   Caracter   Valor

A           65     M           77     a           97     0           48
B           66     N           78     b           98     1           49
C           67     O           79     c           99     2           50
D           68     P           80     d          100     3           51
E           69     Q           81     e          101     4           52
F           70     R           82     f          102     5           53
G           71     S           83     g          103     6           54
H           72     T           84     h          104     7           55
I           73     U           85     i          105     8           56
J           74     V           86     j          106     9           57
K           75     W           87     k          107     DEL        127
L           76     X           88     l          108     ESC         27
                                                                            82
Constantes string

As constantes do tipo string consiste em um conjunto de caracteres
   colocado entre aspas. Ex.:
       “hugo”
       “vasco”
       “São Luis”
       “Boa Noite !!!”
       “235-2234”
       “2*(I+3)/J”

Algumas seqüências de caracteres podem ser incluídas dentro da
   string para possibilitar a formatação. Ex.:


           “Esta é a primeira linhan e esta a segunda linha”        83
Exemplos - Atribuições
 #include <stdio.h>
 #include <stdlib.h>

 int main(void)
 {
   int numero;
   unsigned int numero2;
   signed long numero3;

     numero = 10; // Não gera erro
     numero = 10.555; // Gera Erro, número fracionário
     numero2 = -10; //Gera erro, numero negativo
     numero3 = -10; // Não gera erro
     numero = 999999999999; // Gera erro, inteiro muito grande
     numero = 'A'; // Retorna o Valor ASCII de A = 65
     printf("A = %in",numero);
     numero = "A"; // Gera erro, atribuição de string para inteiro
     system("PAUSE");
     return 0;
 }
                                                                     84
Exemplos - Atribuições
 #include <stdio.h>
 #include <stdlib.h>
  int main(void)
 {
   float decimal;
   decimal = 10.123456; // Numero Fracionário
   printf("%fn",decimal);
   decimal = 10e5; // 10 ^ 5 = 1.000.000
   printf("%fn",decimal);
   decimal = 0775; // Octal = 509
   printf("%fn",decimal);
   decimal = 0xFF; // Hexadecimal = 255
   printf("%fn",decimal);
   system("PAUSE");
   return 0;
 }



                                                85
Exemplos - Atribuições
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
  int main(void)
 {
   char letra;
   char texto[11] = “TESTE”; // 10 Caracteres + 0
   letra='A‘;
   letra="A"; // Gera erro, string
   letra="ALO MUNDO!";// Gera erro, string
   texto='ALO';// Gera erro, caracter
   texto="A";// Gera erro, string menor de 10 caracteres
   texto="ALO MUNDO!"; // Não se pode atribuir string diretamente
   printf("%sn",texto); // Mostra o valor de texto
   strcpy(texto,"ALO MUNDO!"); deve-se usar strcpy da biblioteca string.h
   printf("%sn",texto);
   system("PAUSE");
   return 0;
 }
                                                                            86
Seqüência de escape
Algums caracteres especiais e os não-
  imprimíveis, são expressos como uma
  seqüência de escape.

Uma sequencia de escape sempres
 começa co uma barra invertida (“”)
 seguida por um caracter. Alguns
 comandos em C, são representados
 desta forma. Ex.:

                                        87
Seqüência de escape
Caracter                    Seqüência de escape   Valor ASCII
Nova linha (line feed) FD           n                10
Campainha (bell)                    a                07
Tabulação horizontal                t                09
Aspas (“)                           ”                34
Apóstrofo (´)                       ´                39
Interrogação (?)                    ?                63
Barra invertida ()                                 92




                                                            88
Exemplos - Escape


 #include <stdio.h>
 #include <stdlib.h>
 int main(void)
 {
   printf("PulanLinha");
   printf("nTabulacaotTabulacaotTabulacao");
   printf("ASPAS DUPLAS "");
   printf("ASPAS SIMPLES '");
   printf("INTERROGACAO ?");
   printf("BARRA INVERTIDA  0");
   printf("a"); // Gera Beep
   system("PAUSE");
   return 0;
 }


                                                  89
Variáveis

As variáveis são o aspecto fundamental em qualquer
linguagem de computador.


Uma variável nada mais é que um espaço de memória
reservado para armazenar um certo tipo de dado. Uma
variável deve receber um nome para servir de referência e a
cada instante ela pode conter valores diferente.



                                                         90
Declaração de Variáveis
Declarar uma variável significa reservar um espaço em
memória para um determinado tipo de dados e indicar que
o conteúdo daquele espaço, será referenciado pelo o nome
da variável.


Uma declaração de variável consiste em um tipo seguido
do nome da variável. Exemplo:


   int    num;     // uma variável do tipo int
   char a;       // uma variável do tipo char

                                                         91
Declaração de variáveis:

Para serem usadas, as variáveis precisam ser declaradas
de modo que o compilador possa reservar espaço na
memória para o valor a ser armazenado.


A forma geral de uma declaração é:

        tipo lista_de_variaveis;


Exemplos:
         int i;
         unsigned int a, b, c;
         double salario;
                                                          92
Atribuição de valores às
variáveis
Após ser declarada, a variável pode receber valores.
O operador de atribuição "=" indica que o valor à direita será
atribuído à variável.


O valor inicial pode ser atribuído de duas formas:


- Durante a declaração da variável
         Ex.: int i=0, j=10;

- Durante execução de uma a função
                                                            93
Tipos de Variáveis
O tipo de uma variável informa a quantidade de memória,

em bytes, que ela irá ocupar e a forma como o seu

conteúdo será armazenado.



Os tipos de dados básicos do C visto anteriormente
devem ser utilizados para prototipar uma variável
conforme a necessidade do programa.


                                                          94
Atribuição de valores às
variáveis
… possível atribuir a uma variável o valor resultante de uma
expressão. Ex.:


      int a;
      a = (8+2)/2;


A atribuição de uma variável do tipo char, pode ser feita de
duas formas:
- Atribuindo uma constante de caracter:
                        char b = ‘A’;

- Atribuindo o código ASCII correspondente antecedido pela
barra invertida:
                                                               95
                       char b = ‘65’
Analisando um Programa
Exemplo
01 #include <stdio.h>
02 #include <stdlib.h>
03 int a=5;    // declaração de um inteiro
04 int b=5;    // declaração de um inteiro
05 int soma;   // declaração de um inteiro
06 int main(void)
07 {
08   soma=a+b;
09   printf("%d",soma);
10   system(“pause”);
11 }
                                             96
Analisando um Programa
Exemplo
01 #include <stdio.h>
02 #include <stdlib.h>
03 int a=5, b=5, soma;
04 int main(void)
05 {
06   soma=a+b;
07   printf("%d",soma);
08   system(“pause”);
09 }



                          97
Atribuição de valores às
variáveis

Na linguagem C, não temos o tipo ´string´
pre-definido, o que nos leva a utilizar os
vetores de caracter. Desta forma um string
em C será atribuída a um vetor do tipo char
na sua inicialização.

       char nome[20] = “Hugo Sampaio”;        98
Analisando um Programa
Exemplo
#include <stdio.h>
#include <conio.h>


char nome[20];


int main()
{
    printf("Digite o seu nome : ");
    scanf("%s", nome);
    printf("Ola! %s ",nome);
    getch();
}                                     99
String

    Uma string em C é um vetor de caracteres
    terminado com um caractere nulo.

    O caracter nulo é um caractere com valor inteiro
    igual a zero

    O terminador nulo também pode ser representato em
    C por '0'.

    O comprimento da string deve ser pelo menos 1
    caractere maior que o que pretendemos armazenar,
    pois um caractere é reservado ao terminador nulo.

    A função gets() lê uma string e insere o terminador
    nulo na string quando a tecla Enter for pressionada.
                                                       100
String

    Usamos um índice para acessar o caractere
    desejado dentro da string.
    
        str[1] = 'a';

    Em C, o índice inicia em zero.

    char str[10] = "Joao";
    
        A declaração acima inicializa a string str com os
        caracteres 'J' 'o' 'a' 'o' e '0'.

    O código de controle %s na função printf()
    é usado para exibir uma string.
                                                     101
String

    Podemos ler uma string usando scanf().
     
       Não usamos o e comercial (&) para strings, pois o
       nome de um vetor já é um endereço de memória
       do começo do vetor.
         
           scanf("%s", texto);

    Infelizmente scanf() lê somente até o primeiro
    espaço, ou seja, lê somente uma palavra.

    Para contornar isso, usamos a função gets que lê
    até encontrar o caracter de fim de linha (enter).
     
         gets(texto);
                                                    102
String


    #include <stdio.h>
    #include <stdlib.h>
    int main(void) {
      char nome[6];
      printf("Digite um nome: ");
      gets(nome);
      printf("Ola, %sn", nome);
      system("pause");
    }


                                    103
String

    O problema de gets é que ele pode
    provocar sérios problemas de segurança,
    pois permite o armazenamento de
    caracteres além da capacidade da string.

    Uma solução mais segura é usar a função
    fgets que limita o tamanho máximo a ser
    lido.
    
        fgets(texto, 50, stdin);


                                           104
String
#include <stdio.h>
#include <stdlib.h>
main() {
  char nome1[21], nome2[21];
  printf("Digite um nome: ");
  gets(nome1);
    printf("Digite um nome: ");
    fgets(nome2,21,stdin);
    printf("nNomes:n%s - %snn", nome1, nome2);
    system("pause");
}


                                                105
String
#include <stdio.h>
#include <stdlib.h>
main(){
    char nome[10] = "Joao";
    printf("String: %sn", nome);
    printf("Terceira letra: %cn", nome[2]);
    printf("Quarta letra: %cn", nome[3]);
    nome[2] = 'h';
    nome[3] = 'n';
    printf("Agora a terceira letra eh: %cn", nome[2]);
    printf("Agora a quarta letra eh: %cn", nome[3]);
    printf("String resultante: %sn", nome);
    system("pause");
}




                                                    106
String
#include <stdio.h>
#include <stdlib.h>
main(){
    char nome[10];
    printf("nnDigite um nome: ");
    gets(nome);
    printf("nString: %sn", nome);
    printf("Terceira letra: %cn", nome[2]);
    printf("Quarta letra: %cn", nome[3]);
    printf("o tamanho da string eh: %dn",
           strlen(nome));
    printf("o ultimo caractere eh: %cn",
           nome[strlen(nome)-1]);
    nome[2] = 'h';
    nome[3] = 'n';
    printf("Agora a terceira letra eh: %cn", nome[2]);
    printf("Agora a quarta letra eh: %cn", nome[3]);
    printf("String resultante: %sn", nome);
    system("pause");
}                                                   107
String – funções

    strlen(texto) — Retorna o tamanho da string
    texto em número de caracteres.

    strcpy(destino, fonte) — Copia a string fonte
    para a string destino.

    strcat(destino, fonte) — Concatena a string
    fonte no fim da string destino.

    strcmp(str1, str2) — Compara duas cadeias e
    caracteres e retorna um valor
     
         = 0 - se str1 e str2 forem iguais
     
         < 0 - se str1 for menor que str2
     
         > 0 - se str1 for maior que str2

                                             108
String – funções
#include <stdio.h>
#include <string.h>
main() {
  char nome1[] = "Regis";
  printf("%snn",nome1);
    char nome2[100];
    strcpy(nome2, "Isaac");
    printf("%snn",nome2);
    strcat(nome2," Newton");
    printf("%snn",nome2);
    strcpy(nome2,"Maria");
    printf("%snn",nome2);
    system("pause");
}                              109
Conversão de tipos
Algumas vezes o compilador faz uma conversão automática quando vai atribuir
um valor de uma expressão a uma variável. Ex.: sendo:
      main()
      {
          float f1,f = 21.45;
          char   c1,c = 'A';
          int    i1,i = 10;


          i1 = f;   // i1 receberá o valor 21
          printf("%dn",i1);
          f1 = i;   // f1 receberá o valor 10.00
          printf("%fn",f1);
          c1 = i;   // c1 receberá o valor 10
          printf("%dn",c1);
          i1 = c;   // i1 receberá o valor 65
          printf("%dn",i1);
       getch();                                                         110
      }
Conversão de tipos
O Programador pode “forçar” a conversão. Ex.: sendo:
main()
{
    int a = 65; float x = 2.1, y = 8.95, z; char c;
    c = (char)a;
    printf("Valor de c ( %c ) --> %dn", c,c);
    c = (char)(a + (int)x);
    printf("Valor de c ( %c ) --> %dn", c,c);
    z = (float)((int)x * (int)y);
    printf("Valor de z ( %f ) --> %dn", z,z);
    z = (float)((x * y));
    printf("Valor de z ( %f ) --> %dn", z,z);
    getch();
                                                       111
}
Exemplo 2
#include <stdio.h>
main() {
  int Dias;
  /*
   * Declaracao de
   * Variaveis
   */
  float Anos;
  printf("Entre com o numero de dias: ");
  /* Entrada de Dados */
  scanf("%d", &Dias);
  Anos=Dias/365.25; // Conversao Dias->Anos
  printf("nn%d dias equivalem a %f anos.n", Dias, Anos);
  system("pause");
}




                                                        112
Exemplo 3
#include <stdio.h>
main() {
  int x;
  printf("Digite um numero");
  scanf("%d",&x);
  printf("%dn",x);
  system("pause");
}


                                113
Exemplo 4
#include <stdio.h>
main() {
  int x;
  printf("Digite um numero");
  scanf("%d",&x);
  printf("O dobro e %dn", 2 * x);
  system("pause");
}


                                114
Entrada e Saída

Para que exemplos possam ser construídos, necessitamos
conhecer um pouco sobre entrada e saída de dados.


Um programa que não fornece resultados nem pede valores
para operar não deve ter grande utilidade.


A entrada de dados será feita pelo teclado e a saída poderá
ser vista na tela do computador.


Com isto, é possível resolver problemas bastante
interessantes.
                                                         115
Entradas e Saídas

    Caracteres
    
        Tipo char.
    
        Ocupa 8 bits.

    #include <stdio.h>
    main() {
      char Ch;
      Ch='D';
      printf("%c", Ch);
      printf("%d", Ch);   // Imprime como inteiro
      system("pause");
    }
                                               116
Entradas e Saídas

    Para obter o caractere pressionado:
    
        getche()
         
             Imprime o caractere na tela antes de retorná-lo.
    
        getch()
         
             Apenas retorna o caratere pressionado sem imprimi-lo
             na tela.

    Essas funçoes são encontradas no arquivo
    conio.h que somente está disponível para
    Windows. Não é padrão ANSI.

                                                                117
g
getch()
#include <stdio.h>
#include <conio.h>
main() {
  printf("Tecle algo...");
  char ch=getch();
  printf("Voce pressionou a tecla %cn", ch);
  system("pause");
}




                                           118
Equivalente ANSI

    Diferenças:
     
         Requer o pressionamento da tecla <ENTER>
         após a entrada de teclado.

    #include <stdio.h>
    main() {
      char ch;
      printf("Tecle algo...");
      scanf("%c", &ch);
      printf("Voce pressionou a tecla %cn", ch);
      system("pause");
    }

                                                    119
p
    printf() e scanf()

    Forma geral da função printf():
     
         printf (string_de_controle,lista_de_argumentos);


    Forma geral da função scanf():
     
         scanf (string_de_controle,lista-de-argumentos);




                                                      120
Biblioteca Padrão

Para termos acesso à biblioteca que contém as
funções, macros e variáveis que facilitam a entrada
e saída de dados, o programa deve conter a
declaração

             #include <stdio.h>
no início do programa.

Normalmente os programadores usam os símbolos
menor (<) e maior (>), mas é possível a alternativa
             #include "stdio.h"                  121
Saída - A Função printf

A função printf permite que dados sejam escritos na tela do
computador.


O formato é de uso simples e bastante flexível, permitindo
que os dados possam ser apresentados de diversas
maneiras.


Syntax: printf(controle, arg1, arg2, ...);


Onde os argumentos são impressos de acordo com a
maneira indicada pelo controle. Um exemplo simples pode
tornar a explicação mais clara.                        122
Saída - A Função printf
O programa abaixo imprime o valor da variável ano.
#include <stdio.h>
#include <conio.h>
// Biblioteca de entrada e saída
                                               ARGUMENTO
main()
{
   int ano = 2011; // Declarei ano como inteiro e ja defini
seu valor.
    printf(“ Estamos no ano %d ", ano );
    getch();
}
Na tela do computador será impresso:                 CONTROLE
                                                                123
                        Estamos no ano 2011;
Saída - A Função printf

O controle, que deve aparecer sempre entre " ", define como
serão impressos os argumentos.


Neste controle podem existir dois tipos de informações:
caracteres comuns e códigos de formatação.


Os caracteres comuns, como no exemplo (Estamos no
ano) são escritos na tela sem nenhuma modificação.


Os códigos de formatação, aparecem precedidos por um %
e são aplicados aos argumentos na ordem em que
aparecem.                                            124
Códigos de Formatação
Deve haver um código de formatação para cada argumento. O código
%d indica que o valor armazenado em ano deve ser impresso na
notação inteiro decimal.


       Código   Comentário
        %c      Caractere simples
        %d      Inteiro decimal com sinal
        %i      Inteiro decimal com sinal
        %e      Real em notação científica com e
        %f      Real em ponto flutuante
        %o      Inteiro em base octal
        %s      Cadeia Caracteres
        %u      Inteiro decimal sem sinal
        %x      Inteiro em base hexadecimal (letras minúsculas)
        %%      Imprime o caracter %
                                                                  125
Formatação Numérica


    %<numero>d
    Escreve um inteiro na tela, preenchendo com espaços à
    


    esquerda para que ele ocupe pelo menos <numero>
    casas na tela.
printf("%4d", 10);
    
        Exibe:
<espaco><espaco>10




                                                       126
Formatação Numérica


    %0<numero>d
    Escreve um inteiro na tela, preenchendo com zeros à
    


    esquerda para que ele ocupe pelo menos <numero>
    casas na tela.
printf("%04d", 10);
    
        Exibe:
0010




                                                          127
Formatação Numérica


    %<numero1>.0<numero2>d
    Escreve um inteiro na tela, preenchendo com espaços à
    


    esquerda para que ele ocupe pelo menos <numero1>
    casas na tela e com zeros para que ele possua pelo
    menos comprimento <numero2>.
printf("%6.04d", 10);
    
        Exibe:
<espaço><espaço>0010


                                                       128
Formatação Numérica


    %f
    Escreve um ponto flutuante na tela, sem formatação.
    


printf("%f", 10.0);
    
        Exibe:
10.000000




                                                          129
Formatação Numérica


    %e
    Escreve um ponto flutuante na tela em notação
    


    científica.
printf("%e", 10.02545);
    
        Exibe:
1.002545e+01




                                                    130
Formatação Numérica


    %<tamanho>.<decimais>f
    
        Escreve um ponto flutuante na tela, com tamanho
        <tamanho> e <decimais> casas decimais.
         
             O ponto também conta no tamanho.
printf("%6.2f", 10.0);
    
        Exibe:
<espaço>10.00



                                                          131
Saída justificada
Um sinal de menos para especificar que o argumento deve ser
tabulado a esquerda no seu campo de impressão pode ser
acrescentado.
Exemplo a seguir ilustra os dois tipos de justificação.
                                                          Observe
main()
{
 int ano = 2007;
 printf("Justificado a esquerda Ano = %-8dn", ano);
 printf("Justificado a direita               Ano = %8dn", ano);
 getch();
}

                                                                    132
Especificador de Precisão
O especificador de precisão consiste de um ponto que separa o
número que define o tamanho do campo do número que especifica o
máximo número de dígitos a serem impressos a direita do ponto em um
número do tipo float ou double


#include <stdio.h>
#include <conio.h>

                                    Observe
main()
{
 float r = 1.0/3.0;
 printf("O resultado e = %9.5fn", r);
 getch();
                                                               133
}
Entrada - A Função scanf
A função scanf pode ser utilizada para entrada de
dados a partir do teclado. Esta função é
equivalente à função printf e seu formato é:
Syntax: scanf(controle, arg1,
arg2, ...);


Uma diferença fundamental existe entre as duas
funções é que os argumentos da função scanf são
os endereços das variáveis que irão receber os
valores lidos e não, como em printf, as próprias
variáveis.
                                                134
Entrada - A Função scanf
A indicação que estamos referenciando um
endereço e não a variável se faz pelo
operador &. Por exemplo, o comando
     scanf("%d %d", &a, &b)

espera que dois valores inteiros sejam
digitados no teclado. O primeiro é
armazenado na variável a e o segundo em
b.

                                          135
Entrada - A Função scanf


Cada variável a ser lida, deverá ser precedida pelo
caracter &


Para seqüência de caracteres (%s), o caracter &
não deverá ser usado.




                                                  136
Entrada - A Função scanf
int main()
{
 int numero;
 char string[30];
 printf("Digite uma string: ");
 scanf("%s",string);
 printf("Digite um numero: ");
 scanf("%d",&numero);
 printf("A string digitada foi: t%sn“,string);
 printf("O numero digitado foi: t%dn“, numero);
 system("system");
}
                                                    137
Lendo e Imprimindo
Caracteres
Para ler e escrever caracteres do teclado as funções de entrada e saída mais simples
são getchar e putchar que estão na biblioteca stdio.h
#include <stdio.h>
#include <conio.h>

main()
{
     char c;
     int i;


     printf("Entre com um caracter entre 0 e 9.n");
     c = getchar();
     printf("O caracter lido foi o ");
     putchar(c);


    getch();
                                                                                       138
}
Exercícios

Escreva um programa que declare variáveis
do tipo inteiro, char e float, inicializando-as,
e imprima os seus valores.




                                              139
Solução
  #include <stdio.h>
  main() {
      int i;
      char c;
      float f;
      i = 10;
      c = ‘A’;
      f = 10.5589;
      printf(“n Inteiro: %i“, i);
      printf(“n Char: %c“, c);
      printf(“n Real: %f“, f);
      system("pause");
  }
                                     140
Exercícios

Faça um programa capaz de ler um valor
real e escreve-lo com apenas uma casa
decimal.




                                         141
Solução


 #include <stdio.h>
 main() {
     float f;
     printf(“nDigite um número: “);
     scanf(“%f“, &f);
     printf(“n Real: %.1f“, f);
     system("pause");
 }


                                       142
Lendo e Imprimindo
Caracteres
Na definição original da função getchar a entrada
é armazenada até que a tecla ENTER seja
apertada. Com isto caracteres ficam em um buffer
esperando para serem tratados.
Em ambientes onde é necessário tratar o caracter
imediatamente esta função pode não ser útil.


Muitos compiladores incluem funções para permitir
entrada interativa de dados. As duas funções mais
comuns são getch e getche e seus protótipos
podem ser encontrados na biblioteca <conio.h>.
                                               143
Operadores

    Atribuição (=)

    Aritméticos
    
        *e/
    
        %
    
        +e-




                     144
Operadores Relacionais

==   igual
!=   diferente de
>    maior que
<    menor que
>=   maior ou igual
<=   menor ou igual


                         145
Operadores Lógicos

    && (e)

    || (ou)

    ! (não)




                     146
Operador Ternário

    Operador que usa três argumentos:
       
           expr ? valor1 : valor2
       
           Se expr avaliar for verdadeira, valor1 será o resultado
           da expressão.
       
           Se expr for falsa, valor2 será o resultado da expressão.


             int x, y, maior;
             ...
             maior = x > y ? x : y;
             ...


                                                              147
Operador Ternário
#include <stdio.h>
main() {
  int n1, n2;
  printf("Digite um numero: ");
  scanf("%d", &n1);
  printf("Digite outro numero: ");
  scanf("%d", &n2);
  printf("O maior e: %dn", n1 > n2 ? n1 : n2);
    system("pause");
}




                                            148
Expressões

    O resultado de uma expressão lógica ou
    relacional é:
    
        0 (falso)
    
        1 ou qualquer outro número diferente de zero
        (verdadeiro)

    Para facilitar:
    
        NÃ0
    
        S1M

                                                   149
Operadores de incremento e
decremento

    Incremento (++)

    Decremento (--)

    a++;
    
        Incrementa o valor da variável a em uma
        unidade.

    A posição do operador de incremento e
    decremento determina a ordem de
    execução do que está em seu derredor.

                                                  150
Operadores de incremento e
decremento
#include <stdio.h>
main() {
  int a = 10;
  printf("%d", ++a);
  system("pause");
}

                 #include <stdio.h>
                 main() {
                   int a = 10;
                   printf("%d", a++);
                   system("pause");
                 }
                                   151
Atribuições Simplificadas

Comando   Exemplo   Corresponde a:
+=        a += 2    a = a + 2;
-=        a -= 2    a = a - 2;
∗=        a *= 2;   a = a * 2;
/=        a /= 2;   a = a / 2;
%=        a %= 2;   a = a % 2;


                                 152
Linguagem C



Estruturas de Controle

  Desvio / Decisão


                         153
if ... else ...
                             if (expressão) {
if (expressão) {
                                comandos;
comandos;
                             } else {
}
                                comandos;
                             }


                              #include <stdio.h>
#include <stdio.h>
                              main() {
main() {
                                int idade = 21;
  int idade = 15;
                                if (idade < 18) {
  if (idade < 18) {
                                  printf("Invalidan");
     printf("Invalidan");
                                } else {
   }
                                  printf("OKn");
  system("pause");
                                }
}
                                system("pause");
                              }                      154
Par ou ímpar
 #include <stdio.h>
 main() {
   int a;
   printf("Digite um numero inteiro: ");
   scanf("%d", &a);
   if (a % 2 == 0) {
     printf("O valor eh par.n");
   } else {
     printf("O valor eh impar.n");
   }
   system("pause");
 }

                                           155
Exercício


    Escreva um programa em linguagem C
    para receber um número e dizer se ele é
    positivo, negativo ou zero.




                                              156
Positivo, Negativo ou Zero
  #include <stdio.h>
  main() {
    int n;
    printf("Digite um numero: ");
    scanf("%d", &n);
    if (n > 0) {
      printf("positivo");
    } else if (n < 0) {
      printf("negativo");
    } else {
       printf("zero");
    }
    printf("n");
    system("pause");
  }                                 157
Decisão Múltipla

    O comando switch simplifica uma expressão onde
    uma variável inteira ou caracter deve fazer
    diferentes operações, dependendo do seu valor.

        switch (variavel) {
          case valor:
            comandos;
            break;
          case valor:
            comandos;
            break;
          default:
            comandos;
        }                                        158
Decisão Múltipla
#include <stdio.h>
main() {
  int num;
  printf("Digite um numero inteiro: ");
  scanf("%d", &num);
  switch (num) {
    case 1: printf("um"); break;
    case 2: printf("dois"); break;
    case 3: printf("tres"); break;
    case 4: printf("quatro"); break;
    case 5: printf("cinco"); break;
    default: printf("nao conheco");
  }
  printf("n");
  system("pause");
                                          159
}
Exercício


    Dada uma letra, escreva na tela se essa
    letra é ou não é uma vogal.
    
        Dica: a função toupper(c) converte um char
        para caixa alta e a função tolower(c)
        converte um char para caixa baixa.




                                                160
Exercício

#include <stdio.h>
main() {
  char letra;
  printf("Digite uma letra: ");
  scanf("%c", &letra);
  switch (tolower(letra)) {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u': printf("A letra %c e uma vogal", letra); break;
    default: printf("A letra %c nao e uma vogal", letra);
  }
  printf("n");
  system("pause");
}


                                                          161
Linguagem C



Estruturas de Controle

      Repetição


                         162
Laços condicionais

                       Laço condicional com teste
while (expressão) {    no início
  comandos;
}

                       Laço condicional com teste
do {                   no final
  comandos;
} while (expressão);




                                               163
Laço condicional
  ...
  int i = 0;
  while (i < 10) {
      printf("olá!");
      i = i + 1;
  }
  ...



                        164
Laços usando for

    Em C, a declaração da variável deve ser
    realizada antes do for.
    for (inicializacao; condicao; incremento) {
       codigo;
    }


    int i;
    for (i = 0; i < 10; i++) {
        printf("olá!");
    }



                                                  165
I’ll not throw paper airplanes in class




                                      166
I’ll not throw paper airplanes in class

 #include <stdio.h>

 int main(void) {
      int count;
      for(count=1;count<=500; count++)
           printf("I’ll not throw paper
 airplanes in class!");
      system(”pause”);
      return(0);
 }




                                          167
Exemplo – Linha de *
#include <stdio.h>

int main() {
  int i, n;
  printf("Digite um numero: ");
  scanf("%d", &n);
  for (i=0; i < n; i++) {
     printf("*");
  }
  printf("n");
  system(”pause”) ;
  return(0);
}                                 168
Exemplo – Quadrado de *
#include <stdio.h>

int main() {
  int coluna, linha, n;
  printf("Digite um numero: ");
  scanf("%d", &n);

    for (linha=1; linha <= n; linha++) {
      for (coluna=1; coluna <= n; coluna++) {
        printf("* ");
      }
      printf("n");
    }
    system(”pause”) ;
    return(0);
                                            169
}
Controlando loops

    break e continue

              main()
              {
              int i;
                for (i = 0; i < 100; i++) {
                  if(i > 50 && i < 60) {
                    continue;
                  }
                  printf("%dn", i);
                }
              system(”pause”)~;
              }

                                              170
Linguagem C




Funções



              171
Introdução às funções

    Uma função é um bloco de código de
    programa que pode ser usado diversas vezes
    em sua execução.

    O uso de funções permite que o programa
    fique mais legível, mais bem estruturado.

    Um programa em C consiste, no fundo, de
    várias funções colocadas juntas.



                                                172
Introdução às funções

    Argumentos
    
        Argumentos são as entradas que a função
        recebe. … através dos argumentos que
        passamos parâmetros para a função.
    
        As funções printf() e scanf() são funções que
        recebem argumentos.




                                                    173
Declaração
tipo_de_retorno
  nome_da_função
  (declaração_de_parâmetros)
      {
         corpo_da_função
      }


                               174
Exemplo – media de 2
números
#include<stdio.h>

float media2(float a, float b) {
  return ((a + b) / 2.0);
}

int main() {
  float num_1, num_2, media;
  puts("Digite dois numeros:");
  scanf("%f %f", &num_1, &num_2);
  media = media2(num_1, num_2);
  printf("nA media destes numeros eh %f", media);
  system(”pause”);
}

                                               175
Exemplo - soma
 #include <stdio.h>

 float soma(float a, float b) {
   return a + b;
 }

 int main() {
   float n1, n2;
   printf("Digite um numero: ");
   scanf("%f", &n1);
   printf("Digite outro numero: ");
   scanf("%f", &n2);
   printf("Soma: %fn", soma(n1, n2));
   system(”pause”);
   return 0;                             176
 }
Procedimentos


    Em C não há procedimentos. O mais
    próximo de procedimentos em C são as
    funções que nada retornam, ou seja, cujo
    retorno é void.




                                           177
Exemplo - repeticao
#include <stdio.h>

void repete(char texto[], int n) {
  int i;
  for (i=0; i < n; i++) {
    printf("%s", texto);
  }
}

int main() {
  char palavra[20];
  printf("Digite uma palavra: ");
  fgets(palavra, 20, stdin);
  repete(palavra, 10);
  system(”pause”);
  return 0;                          178
}
Exemplo de Função
#include <stdio.h>
/* Funcao simples: so imprime Ola! */
mensagem() {
  printf("Ola! ");
}
main() {
  mensagem();
  printf("Eu estou vivo!n");
  system("pause");
}



                                        179
Exemplo de função
#include <stdio.h>
/* Calcula o quadrado de x */
int square(int x) {
  return x * x;
}
main() {
  int num;
  printf("Entre com um numero: ");
  scanf("%d", &num);
  printf("nnO quadrado e %dn", square(num));
  system("pause");
}


                                            180
Exemplo de função
 #include <stdio.h>
 int prod(int x, int y) {
   return (x*y);
 }
 main() {
   int saida;
   saida=prod(12, 7);
   printf("A saida e: %dn", saida);
   system("pause");
 }

                                       181
Exemplo de função
 #include <stdio.h>
 float prod(float x, float y) {
   return (x*y);
 }
 main() {
   float saida;
   saida=prod(45.2, 0.0067);
   printf("A saida e: %fn", saida);
   system("pause");
 }

                                       182
Exercício

    Escreva uma função para receber dois
    números e, depois, exibir a sua soma.




                                            183
Solução
#include <stdio.h>
main() {
  float n1, n2;
  printf("Digite um numero: ");
  scanf("%f", &n1);
  printf("Digite outro numero: ");
  scanf("%f", &n2);
  printf("A soma e: %fn", (n1 + n2));
  system("pause");
}


                                     184
Exercícios

Sabendo que os argumentos da função
"printf" podem ser expressões (a+b, a/b,
a*b...), e não somente argumentos, faça um
programa capaz de ler um valor inteiro X e
imprimir na tela o cubo, o quadrado e a
metade de X.

Ex.: para X= 6, imprimir

Cubo = 18; Quadrado = 36; Metade = 3.
                                        185
Solução
#include <stdio.h>
main() {
  float n1;
  printf("Digite um numero: ");
  scanf("%f", &n1);
  printf(“n Cubo: %f“, n1 * n1 * n1);
    printf(“n Quadrado: %f“, n1 * n1);
    printf(“n Metade: %f“, n1 / 1);
    system("pause");
}


                                     186

Contenu connexe

Tendances

ATPS - Programação Estruturada II
ATPS - Programação Estruturada IIATPS - Programação Estruturada II
ATPS - Programação Estruturada IIthomasdacosta
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Tutorial kturtle iniciante
Tutorial kturtle inicianteTutorial kturtle iniciante
Tutorial kturtle inicianteRodrigo Costa
 
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 1Ramon Mayor Martins
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02thomasdacosta
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem cMarcia Santana
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentaçãoJosé Meirelles
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1Isaac Barros
 

Tendances (19)

ATPS - Programação Estruturada II
ATPS - Programação Estruturada IIATPS - Programação Estruturada II
ATPS - Programação Estruturada II
 
Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Tutorial kturtle iniciante
Tutorial kturtle inicianteTutorial kturtle iniciante
Tutorial kturtle iniciante
 
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
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
 
Fundamentos de Programação
Fundamentos de ProgramaçãoFundamentos de Programação
Fundamentos de Programação
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Fundamentos da linguagem c
Fundamentos da linguagem cFundamentos da linguagem c
Fundamentos da linguagem c
 
Plp aula-01-apresentação
Plp aula-01-apresentaçãoPlp aula-01-apresentação
Plp aula-01-apresentação
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Aula 3 - Programação 1
Aula 3 - Programação 1Aula 3 - Programação 1
Aula 3 - Programação 1
 

Similaire à Mini-Curso de Linguagem C

Similaire à Mini-Curso de Linguagem C (20)

Apostila c
Apostila cApostila c
Apostila c
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Linguagem C Entendendo a Programação
Linguagem C Entendendo a ProgramaçãoLinguagem C Entendendo a Programação
Linguagem C Entendendo a Programação
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Aula 02 informática aplicada - sistemas operacionais
Aula 02  informática aplicada - sistemas operacionaisAula 02  informática aplicada - sistemas operacionais
Aula 02 informática aplicada - sistemas operacionais
 
C hardware
C hardwareC hardware
C hardware
 
Apostila chardwere
Apostila chardwereApostila chardwere
Apostila chardwere
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 
apostila de dev.pdf
apostila de dev.pdfapostila de dev.pdf
apostila de dev.pdf
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430055 A 094   Material Auxiliar Para Curso AvançAdo I Msp430
055 A 094 Material Auxiliar Para Curso AvançAdo I Msp430
 
Apostila de devc++ novo
Apostila de devc++ novoApostila de devc++ novo
Apostila de devc++ novo
 
Int. sistemas de informação iii
Int. sistemas de informação iiiInt. sistemas de informação iii
Int. sistemas de informação iii
 
Apostila de dev
Apostila de devApostila de dev
Apostila de dev
 

Dernier

parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzparte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzAlexandrePereira818171
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas BrasileirosMary Alvarenga
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxacaciocarmo1
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxkarinasantiago54
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxLuizHenriquedeAlmeid6
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.HildegardeAngel
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxJMTCS
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLaseVasconcelos1
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileirosMary Alvarenga
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptxpamelacastro71
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoCelianeOliveira8
 
Mini livro sanfona - Diga não ao bullying
Mini livro sanfona - Diga não ao  bullyingMini livro sanfona - Diga não ao  bullying
Mini livro sanfona - Diga não ao bullyingMary Alvarenga
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfErasmo Portavoz
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxDeyvidBriel
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREIVONETETAVARESRAMOS
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxHenriqueLuciano2
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãodanielagracia9
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAlexandreFrana33
 
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfmarialuciadasilva17
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxHlioMachado1
 

Dernier (20)

parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzparte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
parte indígena.pptxzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
Mini livro sanfona - Povos Indigenas Brasileiros
Mini livro sanfona  - Povos Indigenas BrasileirosMini livro sanfona  - Povos Indigenas Brasileiros
Mini livro sanfona - Povos Indigenas Brasileiros
 
Baladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptxBaladão sobre Variação Linguistica para o spaece.pptx
Baladão sobre Variação Linguistica para o spaece.pptx
 
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptxFree-Netflix-PowerPoint-Template-pptheme-1.pptx
Free-Netflix-PowerPoint-Template-pptheme-1.pptx
 
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptxSlides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
Slides Lição 2, Central Gospel, A Volta Do Senhor Jesus , 1Tr24.pptx
 
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
LIVRO A BELA BORBOLETA. Ziraldo e Zélio.
 
Orientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptxOrientações para a análise do poema Orfeu Rebelde.pptx
Orientações para a análise do poema Orfeu Rebelde.pptx
 
Linguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdfLinguagem verbal , não verbal e mista.pdf
Linguagem verbal , não verbal e mista.pdf
 
19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros19 de abril - Dia dos povos indigenas brasileiros
19 de abril - Dia dos povos indigenas brasileiros
 
Aula 1, 2 Bacterias Características e Morfologia.pptx
Aula 1, 2  Bacterias Características e Morfologia.pptxAula 1, 2  Bacterias Características e Morfologia.pptx
Aula 1, 2 Bacterias Características e Morfologia.pptx
 
Gametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e femininoGametogênese, formação dos gametas masculino e feminino
Gametogênese, formação dos gametas masculino e feminino
 
Mini livro sanfona - Diga não ao bullying
Mini livro sanfona - Diga não ao  bullyingMini livro sanfona - Diga não ao  bullying
Mini livro sanfona - Diga não ao bullying
 
O guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdfO guia definitivo para conquistar a aprovação em concurso público.pdf
O guia definitivo para conquistar a aprovação em concurso público.pdf
 
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptxÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
ÁREA DE FIGURAS PLANAS - DESCRITOR DE MATEMATICA D12 ENSINO MEDIO.pptx
 
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTREVACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
VACINAR E DOAR, É SÓ COMEÇAR - - 1º BIMESTRE
 
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptxEVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
EVANGELISMO É MISSÕES ATUALIZADO 2024.pptx
 
atividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetizaçãoatividades diversas 1° ano alfabetização
atividades diversas 1° ano alfabetização
 
As Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptxAs Viagens Missionária do Apostolo Paulo.pptx
As Viagens Missionária do Apostolo Paulo.pptx
 
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdfTIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
TIPOS DE DISCURSO - TUDO SALA DE AULA.pdf
 
Revolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptxRevolução Industrial - Revolução Industrial .pptx
Revolução Industrial - Revolução Industrial .pptx
 

Mini-Curso de Linguagem C

  • 1. Semana da Tecnologia Grupo Unis Mini-Curso Linguagem C
  • 2. • Semana da Tecnologia • Grupo Unis • APRESENTAÇÃO – Professor Wariston Pereira • MBA em Gestão Estratégica e Inteligência em Negócios • Bacharel em Ciência da Computação • Analista de Sistemas: TI – Unis • Professor Atualmente nos Cursos: Ciência da Computação, Engenharia Civil e Automação Industrial. Já atuei também nos cursos de Engenharia de Produção e Administração. • Consultor e Proprietário da W4Solutions – Soluções em Tecnologia da Informação e Comunicação Empresarial. • Atuação nas Áreas de Análise, Desenvolvimento, Consultoria, Redes de Computadores e Simulação Computacional. 2
  • 3. • Semana da Tecnologia • Grupo Unis • OBJETIVOS – Caracterizar Linguagens de Programação; – Caracterizar a linguagem C; – Dev-Cpp – Compilador C/C++ – Estruturas Básicas em C; – Identificadores; – Operadores Relacionais, Lógicos e Aritméticos; – Comandos de Entrada e Saída; – Estruturas Condicionais; – Estruturas de Controle/Repetição; – Funções. 3
  • 4. • Semana da Tecnologia • Grupo Unis • Algumas Sugestões.... •Apostilas • Curso de Linguagem C – UFMG • Introdução à Linguagem C – UNICAMP 4
  • 5. • Semana da Tecnologia • Grupo Unis • AGENDA – Laboratório 3 • 26/04 – 21:00 às 22:30 hrs • 27/04 – 19:30 às 21:00 hrs • 29/04 – 19:30 às 21:00 hrs 5
  • 6. • Semana da Tecnologia • Grupo Unis Agora é com vocês.... • Nome • Expectativa • Atuação 6
  • 7. Linguagem C Introdução e Primeiros Passos 7
  • 8. Introdução Por que programar ? Quando o homem necessita do auxilio do computador para executar algumas tarefas. O Que é um programa ? Conjunto de instruções de uma determinada linguagem através das quais, um computador executa algumas tarefas. 8
  • 9. Introdução O Que é uma linguagem ? Uma linguagem consiste de um conjunto de palavras reservadas e regras de sintaxe que possibilita criar programas de computadores. Este conjunto de palavras possui regras de estruturação lógica e sintática própria. 9
  • 10. Exemplos de Códigos: BASIC Pseudo-código BASIC leia(num) 10 input num para n de 1 20 for n=1 to 10 até 10 passo 1 step 1 faça 30 let tab=num*n tab←num*n 40 print chr$(tab) imprima(tab) 50 next n fim-para; 10
  • 11. Exemplos de Códigos: FORTRAN Pseudo-código FORTRAN leia(num) read (num) para n de 1 do 10 n=1:10 até 10 passo 1 tab=num*n faça write(tab) tab←num*n 10 continue imprima(tab) fim-para; 11
  • 12. Exemplos de Códigos: Assembly Pseudo-código Assembly (Intel 8088) leia(num) MOV CX,0 para n de 1 IN AX,PORTA até 10 passo 1 MOV DX,AX faça LABEL: tab←num*n INC CX imprima(tab) MOV AX,DX fim-para; MUL CX OUT AX, PORTA CMP CX,10 12 JNE LABEL
  • 13. Exemplos de Códigos: C Pseudo-código C leia(num) scanf(&num); para n de 1 for(n=1;n<=10;n++){ até 10 passo 1 tab=num*n; faça printf(”n %d”, tab←num*n tab); imprima(tab) }; fim-para; 13
  • 14. Tipos de Linguagens: Baixo Nível São linguagens com foco na maquina, ou seja, utiliza instruções detalhadas que controla os circuitos internos do computador. Usualmente são genericamente chamadas de linguagens de maquina, Assembly ou de linguagem de montagem. 14
  • 15. Tipos de Linguagens: Baixo Nível  Vantagens: Maior velocidade de processamento e ocupam menor espaço na memória.  Desvantagens: Pouca portabilidade, ou seja, o código é gerado para um tipo de processador não serve para outro. 15
  • 16. Tipos de Linguagens: Alto Nível São linguagens voltadas para que haja uma maior interação entre o homem e a máquina. Necessitam de compiladores ou interpretadores para gerar as instruções do microprocessador. 16
  • 17. Tipos de Linguagens: Alto Nível  Vantagens: São compiladas ou interpretadas, têm maior portabilidade podendo ser executados em várias plataformas com pouquíssimas modificações.  Desvantagens: São mais lentas e ocupam mais memória. 17
  • 18. Compiladores x Interpretadores A única linguagem que o computador entende é a linguagem de máquina. Programas escritos em um linguagem de alto nível, devem ser traduzidos para a linguagem de máquina. Os Programas que fazem esta tradução, classificam em: - INTERPRETADORES - COMPILADORES 18
  • 19. Compiladores x Interpretadores Os INTERPRETADORES, traduzem o código fonte em linguagem de máquina através da interpretação de cada instrução feita a medida que o software é executado. Necessitam de um componente interpretador presente na máquina. Os COMPILADORES, por sua vez, traduzem o código fonte em linguagem de máquina através da geração de um programa .OBJ, que após ser linkeditado, torna-se um arquivo executável. Em C os programas são compilados. 19
  • 20. Linguagem C Sobre a linguagem C 20
  • 21. Histórico C foi originalmente desenvolvida por Dennis Ritchie e K. Thompson nos Laboratórios Bell nos anos 70. Derivadas de duas linguagens anteriores chamadas BCPL e B.  Inicialmente para máquinas com o sistema operacional UNIX.  Tornou-se uma das mais importantes e populares nos últimos dias.  Foi projetada para o desenvolvimento de programas estruturados e modulares. 21
  • 22. Histórico Nos anos seguintes, a popularidade da linguagem C aumentou consideravelmente, aumentando também o surgimento de ferramentas de desenvolvimento.  Inicialmente, muitas implementações do C não traduziam fielmente a definição original, o que gerou alguns problemas de incompatibilidade  A portabilidade proposta pela definição original ficou bastante comprometida. 22
  • 23. ANSI O Padrão ANSI Buscando uma padronização na definição da linguagem C, a American National Standard Institute (ANSI), desenvolveu um padrão hoje bastante utilizado no mundo da linguagem C, chamado de C padrão ANSI ou C ANSI. Quase todas as ferramentas de desenvolvimento da linguagem C atuais, seguem este padrão. 23
  • 24. Características  Linguagem de propósito genérico;  Usada para escrever processadores de texto, planilhas, sistemas operacionais, programas de comunicação, programas para automação industrial, SGBDs, navegadores e servidores Web, etc.  Possui características de alto e de baixo nível;  Excelente performance;  Muito popular;  Sintaxe de C serve de base para muitas outras linguagens. 24
  • 25. Características  Deu origem a outras linguagens de programação, entre elas C++, Java, C#, PHP, Ruby, Python, etc.  Muito usada no desenvolvimento de:  Compiladores, interpretadores, editores de texto, banco de dados, computação gráfica, manipulação e processamento de imagens, controle de processos, … 25
  • 26. Características  Portabilidade  Geração de códigos executáveis compactos e rápidos  Interação com o sistema operacional  Facilidade de uso  Linguagem estruturada  Confiabilidade  Simplicidade  Case sensitive  Maiúsculas e minúsculas fazem diferença. 26
  • 27. Estrutura básica de um programa C Um programa em C consiste de uma ou várias funções, onde uma delas precisa ser denominada “main” e deve existir em algum lugar de seu programa. Esta função marca o início da execução do programa. Outras funções podem ser definidas pelo programador ou preencher a função main, porém em um programa executável em C, a função main deve sempre existir. 27
  • 28. Estrutura básica de um programa main(Argumentos) { /* início do corpo da função */ } /* término do corpo da função */ Uma função deve conter : - Um header que consiste do nome da função - Uma lista de argumentos entre parênteses. - Um bloco de instruções delimitado por chaves. 28
  • 29. Estrutura básica de um programa  O nome da função, os parênteses e as chaves, são os únicos elementos obrigatórios de uma função  Os comentários podem aparecer em qualquer lugar de um programa, devendo ser colocados entre os delimitadores /* e */  Letras minúsculas e maiúsculas não são equivalentes em C.  Note que cada expressão dentro do bloco deve terminar com um ponto-e-vírgula. 29
  • 30. Geração de Executável  Editor (módulo fonte em C)  Pré‐processador (novo fonte expandido)  Compilador (arquivo objeto)  Lincador (executável) 30
  • 31. Linguagem C Dev C Ambiente de Desenvolvimento Linguagem C 31
  • 34. Painel Principal • Clicando em Arquivo - Criar Arquivo Fonte. - Criar Novo Projeto 34
  • 35. Painel Principal • Clicando em Arquivo - (Re)Abrir Arquivo Fonte. - (Re)Abrir Novo Projeto 35
  • 36. Painel Principal • Clicando em Arquivo - Salvar o conteúdo da aba aberta. - Salvar o conteúdo da aba aberta em outro arquivo. - Salvar o projeto em outro arquivo. - Salvar todos(as) arquivos(abas) alterados. 36
  • 37. Painel Principal • Clicando em Arquivo - Fechar o conteúdo da aba aberta. - Fechar todas as abas abertas. - Fechar o projeto. 37
  • 38. Painel Principal • Clicando em Arquivo - Imprime todas as informações do arquivo atual. 38
  • 39. Painel Principal • Clicando em Arquivo - Importa um projeto de outro ambiente de programação. - Exporta o projeto para HTML, muito útil para documentação do projeto. 39
  • 40. Painel Principal • Clicando em Arquivo -Menus de impressão. 40
  • 41. Painel Principal • Clicando em Arquivo - Sair. 41
  • 43. Painel Principal • Clicando em Editar - Desfazer e Refazer as últimas ações. 43
  • 44. Painel Principal • Clicando em Editar - Recortar, copiar e colar. 44
  • 45. Painel Principal • Clicando em Editar - Inserir cabeçalho e data e hora no código fonte. - Bookmarks é uma marca que você faz no código fonte. Essa marca é um atalho para um determinado trecho do código. 45
  • 46. Painel Principal • Clicando em Editar - Seleciona todo o conteúdo do código fonte aberto. 46
  • 47. Painel Principal • Clicando em Editar - Comenta e “descomenta” uma determinada parte do código fonte. 47
  • 48. Painel Principal • Clicando em Editar - “Indenta” e “unidenta” uma determinada parte do código fonte. 48
  • 50. Painel Principal - Localizar em um fonte especifico ou no projeto todo uma função ou qualquer palavra qualquer. 50
  • 51. Painel Principal - Configuração das barras de ferramentas. 51
  • 52. Painel Principal - Adicionar ou remover arquivo ao projeto, usaremos os ícones abaixo para fazer essas ações. 52
  • 53. Painel Principal - Executa, compila e recompila o projeto atual. Usaremos os ícones em vermelho. 53
  • 54. Painel Principal - Execução passo a passo. Nesse primeiro momento não vamos utilizar essa ferramenta. 54
  • 55. Painel Principal - Algumas configurações de projeto. Nesse primeiro momento usaremos as configurações padrões. 55
  • 56. Painel Principal - Controle da janela do e das abas Dev C. 56
  • 57. Painel Principal - Ajuda de utilização e sobre o programa Dev C. 57
  • 60. Meu primeiro programa em C - Inclui sa bibliotecas que contêm as funções de entrada, saída e comando “System”. 60
  • 61. Meu primeiro programa em C -Toda função em C retorna algo e recebe algo como parâmetro. -Void significa vazio. -Por padrão a função “main” é executada no 61 início do programa;
  • 62. Meu primeiro programa em C -Imprime na tela “Olá Mundo!”. 62
  • 63. Meu primeiro programa em C -Essa mensagem serve para travar o console do DOS. 63
  • 64. Meu primeiro programa em C -Retorna 0. 64
  • 66. Regra de identificação Todas as letras maiúsculas de A a Z e as minúsculas de a a z , os dígitos de 0 a 9 e alguns caracteres especiais, podem ser utilizados na criação de códigos em C. Os nomes de variáveis, funções e matrizes em C, obedecem a regra de que voce pode usar letras e números, porem o primeiro digito deve ser apenas uma LETRA ou o caracter especial undescore (_). Um nome não pode ser uma das palavras reservadas da 66 linguagem C.
  • 67. Regra de identificação Exemplo de nomes válidos : a y12 soma1 _estoque Exemplos de nomes não válidos : 2th (o primeiro caracter deve ser letra ou _ ) “a” (inicia com um caracter ilegal (“) ) numero-ordem (caracter ilegal (-)) nome completo (espaço em branco) 67
  • 68. Regra de identificação Um identificador de nome pode ter mais de 32 caracteres, porem somente os 32 primeiros serão reconhecidos. Algumas implementações do C, reconhece apenas os 8 (oitos) primeiros, assim os nomes : taxa_dia e taxa_diaria, nestes sistemas não tem diferenca, pois o compilador reconhece apenas os oitos primeiros caracteres. 68
  • 69. Palavras reservadas auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while São apenas 32 palavras reservadas que não podem ser 69 utilizadas para outro propósito
  • 70. Tipos de Dados Em C existem 5 tipos válidos: tipo Palavra Quant. Bytes Faixa Reservada Bit Caracter Char 8 1 -128 a 127 Inteiro Int 16 2 -32768 a 32768 Ponto flutuante Float 32 4 3.4E-38 a 3.4E+38 Pont. Flutuante Double 64 8 1.7E-308 a duplo 1.7E+308 Sem valor void 0 0 Sem valor 70
  • 71. Tipos de Dados Modificadores de Tipos Com exceção do tipo void, os demais tipos podem ter alguns modificadores. Um modificador é usado para alterar o significado do tipo para adequá-los melhor às necessidades do programador. 71
  • 72. Tipos de Dados Os modificadores são : signed, unsigned, long e short Exemplo de utilização: Se uma variável é declarada como char ela ocupa 8 bit e tem a faixa de valores de -128 a 127, mais se o modificador unsigned é colocado antes da palavra char, ela continua ocupando 8 bits, mais sua faixa de valores vai de 0 a 255. 72
  • 73. Tipo de Dados Inteiro Os dados inteiros são caracterizados pelos números positivos ou negativos que não seja fracionário. Em C referenciamos este tipo de dados com os seguintes identificadores : Tipo do Inteiro Qt.Bit Faixa int 16 -32768 a 32767 long int 32 -2.147.483.648 a 2.147.483.648 unsigned int 16 De 0 até 65535 signed long int 32 De 0 até 4.292.967.295 73
  • 74. Tipo de Dados Reais Os dados reais são caracterizados pelos números positivos, negativos, inteiros e os fracionários. Em C referenciamos este tipo de dados com os seguintes identificadores : Tipo do Inteiro Qt.Bit Faixa float 32 de 3.4e-38 até 3.4e+38 double 64 de 1.7e-308 até 1.7e+308 Long double 128 de -3.4e-4932 até 1.1e+4932 74
  • 75. Tipo de Dados Caracteres Os dados caracteres são caracterizados pelas sequencias de letras, números e simbolos especiais delimitados por ( “ ” ) . Em C referenciamos este tipo de dados pelo identificadores : char podendo armazenar de 0 até 255 caracteres 75
  • 76. Tipo de Dados Lógicos Na linguagem C não existe o tipo de dados booleano , ou seja, não existe o valor lógico “false” ou “true” de forma predefinida. Em C qualquer valor igual a 0 (zero), é considerado como valor lógico falso e qualquer valor diferente de 0 (zero), é considerado como valor lógico verdadeiro. 76
  • 77. Constantes Constantes são valores que permanecem fixos e na linguagem C temos 4 tipos básicos de constantes: - Inteiras - ponto-flutuante - caracteres - string (cadeia de caracteres) 77
  • 78. Constantes numéricas As constantes do tipo Inteiras e de ponto-flutuante, representam números. As constantes do tipo Inteiras podem ser escritas em três sistemas de numeração, sendo : • decimal (base 10) • octal (base 8) • hexadecimal (base 16) Uma constante inteira decimal pode ser formada por qualquer combinação dos dígitos de 0 a 9. Se tem mais de dois dígitos, o primeiro não pode ser zero. Ex.: 5 13 230 540 78
  • 79. Constantes numéricas Uma constante inteira octal pode ser formada por qualquer combinação dos dígitos de 0 a 7 e o primeiro deve ser zero. Ex.: 0 013 0656 0540 Uma constante inteira hexadecimal pode ser formada por qualquer combinação dos dígitos de 0 a 9 e de A a F (maiúsculas ou minúsculas). Deve sempre iniciar com 0x ou 0X. Ex.: 0x 0x1 0xABC 0xabc Normalmente a magnitude de uma constante inteira é: Decimal = 32767 Octal = 07777 Hexa = 0x7FFF 79
  • 80. Constantes numéricas As constantes do tipo ponto-flutuante é um número na base 10 que contem casas decimais e/ou um expoente. Ex.: 0. 0.5 1.3 230.323 .540e2 Observe que o caracter que separa a casa decimal é um ponto e não uma virgula Para representar um número com expoente, trocamos a base 10 pela letra ´e´. Assim para representar 2 x 10², teremos: 200. ou 2e2 ou 2e+2 ou 2E2 ou 2.0e+2 80
  • 81. Constantes caracteres As constantes do tipo caracter consiste em um simples caracter colocado entre apóstrofos. Ex.: ´A´ ´x´ ´5´ ´$´ Uma constante de caracter tem valores inteiros correspondentes a um conjunto de caracteres especificos. Normalmente os computadores utilizam o conjunto de caracteres ASCII, onde cada caracter é representado por uma combinação de 7 bits, Representando assim 2e+7 = 128 diferentes caracteres. Desta forma, cada constante de caracter, tem um valor inteiro correspondente. 81
  • 82. Constantes caracteres Caracter Valor Caracter Valor Caracter Valor Caracter Valor A 65 M 77 a 97 0 48 B 66 N 78 b 98 1 49 C 67 O 79 c 99 2 50 D 68 P 80 d 100 3 51 E 69 Q 81 e 101 4 52 F 70 R 82 f 102 5 53 G 71 S 83 g 103 6 54 H 72 T 84 h 104 7 55 I 73 U 85 i 105 8 56 J 74 V 86 j 106 9 57 K 75 W 87 k 107 DEL 127 L 76 X 88 l 108 ESC 27 82
  • 83. Constantes string As constantes do tipo string consiste em um conjunto de caracteres colocado entre aspas. Ex.: “hugo” “vasco” “São Luis” “Boa Noite !!!” “235-2234” “2*(I+3)/J” Algumas seqüências de caracteres podem ser incluídas dentro da string para possibilitar a formatação. Ex.: “Esta é a primeira linhan e esta a segunda linha” 83
  • 84. Exemplos - Atribuições #include <stdio.h> #include <stdlib.h> int main(void) { int numero; unsigned int numero2; signed long numero3; numero = 10; // Não gera erro numero = 10.555; // Gera Erro, número fracionário numero2 = -10; //Gera erro, numero negativo numero3 = -10; // Não gera erro numero = 999999999999; // Gera erro, inteiro muito grande numero = 'A'; // Retorna o Valor ASCII de A = 65 printf("A = %in",numero); numero = "A"; // Gera erro, atribuição de string para inteiro system("PAUSE"); return 0; } 84
  • 85. Exemplos - Atribuições #include <stdio.h> #include <stdlib.h> int main(void) { float decimal; decimal = 10.123456; // Numero Fracionário printf("%fn",decimal); decimal = 10e5; // 10 ^ 5 = 1.000.000 printf("%fn",decimal); decimal = 0775; // Octal = 509 printf("%fn",decimal); decimal = 0xFF; // Hexadecimal = 255 printf("%fn",decimal); system("PAUSE"); return 0; } 85
  • 86. Exemplos - Atribuições #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char letra; char texto[11] = “TESTE”; // 10 Caracteres + 0 letra='A‘; letra="A"; // Gera erro, string letra="ALO MUNDO!";// Gera erro, string texto='ALO';// Gera erro, caracter texto="A";// Gera erro, string menor de 10 caracteres texto="ALO MUNDO!"; // Não se pode atribuir string diretamente printf("%sn",texto); // Mostra o valor de texto strcpy(texto,"ALO MUNDO!"); deve-se usar strcpy da biblioteca string.h printf("%sn",texto); system("PAUSE"); return 0; } 86
  • 87. Seqüência de escape Algums caracteres especiais e os não- imprimíveis, são expressos como uma seqüência de escape. Uma sequencia de escape sempres começa co uma barra invertida (“”) seguida por um caracter. Alguns comandos em C, são representados desta forma. Ex.: 87
  • 88. Seqüência de escape Caracter Seqüência de escape Valor ASCII Nova linha (line feed) FD n 10 Campainha (bell) a 07 Tabulação horizontal t 09 Aspas (“) ” 34 Apóstrofo (´) ´ 39 Interrogação (?) ? 63 Barra invertida () 92 88
  • 89. Exemplos - Escape #include <stdio.h> #include <stdlib.h> int main(void) { printf("PulanLinha"); printf("nTabulacaotTabulacaotTabulacao"); printf("ASPAS DUPLAS ""); printf("ASPAS SIMPLES '"); printf("INTERROGACAO ?"); printf("BARRA INVERTIDA 0"); printf("a"); // Gera Beep system("PAUSE"); return 0; } 89
  • 90. Variáveis As variáveis são o aspecto fundamental em qualquer linguagem de computador. Uma variável nada mais é que um espaço de memória reservado para armazenar um certo tipo de dado. Uma variável deve receber um nome para servir de referência e a cada instante ela pode conter valores diferente. 90
  • 91. Declaração de Variáveis Declarar uma variável significa reservar um espaço em memória para um determinado tipo de dados e indicar que o conteúdo daquele espaço, será referenciado pelo o nome da variável. Uma declaração de variável consiste em um tipo seguido do nome da variável. Exemplo: int num; // uma variável do tipo int char a; // uma variável do tipo char 91
  • 92. Declaração de variáveis: Para serem usadas, as variáveis precisam ser declaradas de modo que o compilador possa reservar espaço na memória para o valor a ser armazenado. A forma geral de uma declaração é: tipo lista_de_variaveis; Exemplos: int i; unsigned int a, b, c; double salario; 92
  • 93. Atribuição de valores às variáveis Após ser declarada, a variável pode receber valores. O operador de atribuição "=" indica que o valor à direita será atribuído à variável. O valor inicial pode ser atribuído de duas formas: - Durante a declaração da variável Ex.: int i=0, j=10; - Durante execução de uma a função 93
  • 94. Tipos de Variáveis O tipo de uma variável informa a quantidade de memória, em bytes, que ela irá ocupar e a forma como o seu conteúdo será armazenado. Os tipos de dados básicos do C visto anteriormente devem ser utilizados para prototipar uma variável conforme a necessidade do programa. 94
  • 95. Atribuição de valores às variáveis … possível atribuir a uma variável o valor resultante de uma expressão. Ex.: int a; a = (8+2)/2; A atribuição de uma variável do tipo char, pode ser feita de duas formas: - Atribuindo uma constante de caracter: char b = ‘A’; - Atribuindo o código ASCII correspondente antecedido pela barra invertida: 95 char b = ‘65’
  • 96. Analisando um Programa Exemplo 01 #include <stdio.h> 02 #include <stdlib.h> 03 int a=5; // declaração de um inteiro 04 int b=5; // declaração de um inteiro 05 int soma; // declaração de um inteiro 06 int main(void) 07 { 08 soma=a+b; 09 printf("%d",soma); 10 system(“pause”); 11 } 96
  • 97. Analisando um Programa Exemplo 01 #include <stdio.h> 02 #include <stdlib.h> 03 int a=5, b=5, soma; 04 int main(void) 05 { 06 soma=a+b; 07 printf("%d",soma); 08 system(“pause”); 09 } 97
  • 98. Atribuição de valores às variáveis Na linguagem C, não temos o tipo ´string´ pre-definido, o que nos leva a utilizar os vetores de caracter. Desta forma um string em C será atribuída a um vetor do tipo char na sua inicialização. char nome[20] = “Hugo Sampaio”; 98
  • 99. Analisando um Programa Exemplo #include <stdio.h> #include <conio.h> char nome[20]; int main() { printf("Digite o seu nome : "); scanf("%s", nome); printf("Ola! %s ",nome); getch(); } 99
  • 100. String  Uma string em C é um vetor de caracteres terminado com um caractere nulo.  O caracter nulo é um caractere com valor inteiro igual a zero  O terminador nulo também pode ser representato em C por '0'.  O comprimento da string deve ser pelo menos 1 caractere maior que o que pretendemos armazenar, pois um caractere é reservado ao terminador nulo.  A função gets() lê uma string e insere o terminador nulo na string quando a tecla Enter for pressionada. 100
  • 101. String  Usamos um índice para acessar o caractere desejado dentro da string.  str[1] = 'a';  Em C, o índice inicia em zero.  char str[10] = "Joao";  A declaração acima inicializa a string str com os caracteres 'J' 'o' 'a' 'o' e '0'.  O código de controle %s na função printf() é usado para exibir uma string. 101
  • 102. String  Podemos ler uma string usando scanf().  Não usamos o e comercial (&) para strings, pois o nome de um vetor já é um endereço de memória do começo do vetor.  scanf("%s", texto);  Infelizmente scanf() lê somente até o primeiro espaço, ou seja, lê somente uma palavra.  Para contornar isso, usamos a função gets que lê até encontrar o caracter de fim de linha (enter).  gets(texto); 102
  • 103. String #include <stdio.h> #include <stdlib.h> int main(void) { char nome[6]; printf("Digite um nome: "); gets(nome); printf("Ola, %sn", nome); system("pause"); } 103
  • 104. String  O problema de gets é que ele pode provocar sérios problemas de segurança, pois permite o armazenamento de caracteres além da capacidade da string.  Uma solução mais segura é usar a função fgets que limita o tamanho máximo a ser lido.  fgets(texto, 50, stdin); 104
  • 105. String #include <stdio.h> #include <stdlib.h> main() { char nome1[21], nome2[21]; printf("Digite um nome: "); gets(nome1); printf("Digite um nome: "); fgets(nome2,21,stdin); printf("nNomes:n%s - %snn", nome1, nome2); system("pause"); } 105
  • 106. String #include <stdio.h> #include <stdlib.h> main(){ char nome[10] = "Joao"; printf("String: %sn", nome); printf("Terceira letra: %cn", nome[2]); printf("Quarta letra: %cn", nome[3]); nome[2] = 'h'; nome[3] = 'n'; printf("Agora a terceira letra eh: %cn", nome[2]); printf("Agora a quarta letra eh: %cn", nome[3]); printf("String resultante: %sn", nome); system("pause"); } 106
  • 107. String #include <stdio.h> #include <stdlib.h> main(){ char nome[10]; printf("nnDigite um nome: "); gets(nome); printf("nString: %sn", nome); printf("Terceira letra: %cn", nome[2]); printf("Quarta letra: %cn", nome[3]); printf("o tamanho da string eh: %dn", strlen(nome)); printf("o ultimo caractere eh: %cn", nome[strlen(nome)-1]); nome[2] = 'h'; nome[3] = 'n'; printf("Agora a terceira letra eh: %cn", nome[2]); printf("Agora a quarta letra eh: %cn", nome[3]); printf("String resultante: %sn", nome); system("pause"); } 107
  • 108. String – funções  strlen(texto) — Retorna o tamanho da string texto em número de caracteres.  strcpy(destino, fonte) — Copia a string fonte para a string destino.  strcat(destino, fonte) — Concatena a string fonte no fim da string destino.  strcmp(str1, str2) — Compara duas cadeias e caracteres e retorna um valor  = 0 - se str1 e str2 forem iguais  < 0 - se str1 for menor que str2  > 0 - se str1 for maior que str2 108
  • 109. String – funções #include <stdio.h> #include <string.h> main() { char nome1[] = "Regis"; printf("%snn",nome1); char nome2[100]; strcpy(nome2, "Isaac"); printf("%snn",nome2); strcat(nome2," Newton"); printf("%snn",nome2); strcpy(nome2,"Maria"); printf("%snn",nome2); system("pause"); } 109
  • 110. Conversão de tipos Algumas vezes o compilador faz uma conversão automática quando vai atribuir um valor de uma expressão a uma variável. Ex.: sendo: main() { float f1,f = 21.45; char c1,c = 'A'; int i1,i = 10; i1 = f; // i1 receberá o valor 21 printf("%dn",i1); f1 = i; // f1 receberá o valor 10.00 printf("%fn",f1); c1 = i; // c1 receberá o valor 10 printf("%dn",c1); i1 = c; // i1 receberá o valor 65 printf("%dn",i1); getch(); 110 }
  • 111. Conversão de tipos O Programador pode “forçar” a conversão. Ex.: sendo: main() { int a = 65; float x = 2.1, y = 8.95, z; char c; c = (char)a; printf("Valor de c ( %c ) --> %dn", c,c); c = (char)(a + (int)x); printf("Valor de c ( %c ) --> %dn", c,c); z = (float)((int)x * (int)y); printf("Valor de z ( %f ) --> %dn", z,z); z = (float)((x * y)); printf("Valor de z ( %f ) --> %dn", z,z); getch(); 111 }
  • 112. Exemplo 2 #include <stdio.h> main() { int Dias; /* * Declaracao de * Variaveis */ float Anos; printf("Entre com o numero de dias: "); /* Entrada de Dados */ scanf("%d", &Dias); Anos=Dias/365.25; // Conversao Dias->Anos printf("nn%d dias equivalem a %f anos.n", Dias, Anos); system("pause"); } 112
  • 113. Exemplo 3 #include <stdio.h> main() { int x; printf("Digite um numero"); scanf("%d",&x); printf("%dn",x); system("pause"); } 113
  • 114. Exemplo 4 #include <stdio.h> main() { int x; printf("Digite um numero"); scanf("%d",&x); printf("O dobro e %dn", 2 * x); system("pause"); } 114
  • 115. Entrada e Saída Para que exemplos possam ser construídos, necessitamos conhecer um pouco sobre entrada e saída de dados. Um programa que não fornece resultados nem pede valores para operar não deve ter grande utilidade. A entrada de dados será feita pelo teclado e a saída poderá ser vista na tela do computador. Com isto, é possível resolver problemas bastante interessantes. 115
  • 116. Entradas e Saídas  Caracteres  Tipo char.  Ocupa 8 bits. #include <stdio.h> main() { char Ch; Ch='D'; printf("%c", Ch); printf("%d", Ch); // Imprime como inteiro system("pause"); } 116
  • 117. Entradas e Saídas  Para obter o caractere pressionado:  getche()  Imprime o caractere na tela antes de retorná-lo.  getch()  Apenas retorna o caratere pressionado sem imprimi-lo na tela.  Essas funçoes são encontradas no arquivo conio.h que somente está disponível para Windows. Não é padrão ANSI. 117
  • 118. g getch() #include <stdio.h> #include <conio.h> main() { printf("Tecle algo..."); char ch=getch(); printf("Voce pressionou a tecla %cn", ch); system("pause"); } 118
  • 119. Equivalente ANSI  Diferenças:  Requer o pressionamento da tecla <ENTER> após a entrada de teclado. #include <stdio.h> main() { char ch; printf("Tecle algo..."); scanf("%c", &ch); printf("Voce pressionou a tecla %cn", ch); system("pause"); } 119
  • 120. p printf() e scanf()  Forma geral da função printf():  printf (string_de_controle,lista_de_argumentos);  Forma geral da função scanf():  scanf (string_de_controle,lista-de-argumentos); 120
  • 121. Biblioteca Padrão Para termos acesso à biblioteca que contém as funções, macros e variáveis que facilitam a entrada e saída de dados, o programa deve conter a declaração #include <stdio.h> no início do programa. Normalmente os programadores usam os símbolos menor (<) e maior (>), mas é possível a alternativa #include "stdio.h" 121
  • 122. Saída - A Função printf A função printf permite que dados sejam escritos na tela do computador. O formato é de uso simples e bastante flexível, permitindo que os dados possam ser apresentados de diversas maneiras. Syntax: printf(controle, arg1, arg2, ...); Onde os argumentos são impressos de acordo com a maneira indicada pelo controle. Um exemplo simples pode tornar a explicação mais clara. 122
  • 123. Saída - A Função printf O programa abaixo imprime o valor da variável ano. #include <stdio.h> #include <conio.h> // Biblioteca de entrada e saída ARGUMENTO main() { int ano = 2011; // Declarei ano como inteiro e ja defini seu valor. printf(“ Estamos no ano %d ", ano ); getch(); } Na tela do computador será impresso: CONTROLE 123 Estamos no ano 2011;
  • 124. Saída - A Função printf O controle, que deve aparecer sempre entre " ", define como serão impressos os argumentos. Neste controle podem existir dois tipos de informações: caracteres comuns e códigos de formatação. Os caracteres comuns, como no exemplo (Estamos no ano) são escritos na tela sem nenhuma modificação. Os códigos de formatação, aparecem precedidos por um % e são aplicados aos argumentos na ordem em que aparecem. 124
  • 125. Códigos de Formatação Deve haver um código de formatação para cada argumento. O código %d indica que o valor armazenado em ano deve ser impresso na notação inteiro decimal. Código Comentário %c Caractere simples %d Inteiro decimal com sinal %i Inteiro decimal com sinal %e Real em notação científica com e %f Real em ponto flutuante %o Inteiro em base octal %s Cadeia Caracteres %u Inteiro decimal sem sinal %x Inteiro em base hexadecimal (letras minúsculas) %% Imprime o caracter % 125
  • 126. Formatação Numérica  %<numero>d Escreve um inteiro na tela, preenchendo com espaços à  esquerda para que ele ocupe pelo menos <numero> casas na tela. printf("%4d", 10);  Exibe: <espaco><espaco>10 126
  • 127. Formatação Numérica  %0<numero>d Escreve um inteiro na tela, preenchendo com zeros à  esquerda para que ele ocupe pelo menos <numero> casas na tela. printf("%04d", 10);  Exibe: 0010 127
  • 128. Formatação Numérica  %<numero1>.0<numero2>d Escreve um inteiro na tela, preenchendo com espaços à  esquerda para que ele ocupe pelo menos <numero1> casas na tela e com zeros para que ele possua pelo menos comprimento <numero2>. printf("%6.04d", 10);  Exibe: <espaço><espaço>0010 128
  • 129. Formatação Numérica  %f Escreve um ponto flutuante na tela, sem formatação.  printf("%f", 10.0);  Exibe: 10.000000 129
  • 130. Formatação Numérica  %e Escreve um ponto flutuante na tela em notação  científica. printf("%e", 10.02545);  Exibe: 1.002545e+01 130
  • 131. Formatação Numérica  %<tamanho>.<decimais>f  Escreve um ponto flutuante na tela, com tamanho <tamanho> e <decimais> casas decimais.  O ponto também conta no tamanho. printf("%6.2f", 10.0);  Exibe: <espaço>10.00 131
  • 132. Saída justificada Um sinal de menos para especificar que o argumento deve ser tabulado a esquerda no seu campo de impressão pode ser acrescentado. Exemplo a seguir ilustra os dois tipos de justificação. Observe main() { int ano = 2007; printf("Justificado a esquerda Ano = %-8dn", ano); printf("Justificado a direita Ano = %8dn", ano); getch(); } 132
  • 133. Especificador de Precisão O especificador de precisão consiste de um ponto que separa o número que define o tamanho do campo do número que especifica o máximo número de dígitos a serem impressos a direita do ponto em um número do tipo float ou double #include <stdio.h> #include <conio.h> Observe main() { float r = 1.0/3.0; printf("O resultado e = %9.5fn", r); getch(); 133 }
  • 134. Entrada - A Função scanf A função scanf pode ser utilizada para entrada de dados a partir do teclado. Esta função é equivalente à função printf e seu formato é: Syntax: scanf(controle, arg1, arg2, ...); Uma diferença fundamental existe entre as duas funções é que os argumentos da função scanf são os endereços das variáveis que irão receber os valores lidos e não, como em printf, as próprias variáveis. 134
  • 135. Entrada - A Função scanf A indicação que estamos referenciando um endereço e não a variável se faz pelo operador &. Por exemplo, o comando scanf("%d %d", &a, &b) espera que dois valores inteiros sejam digitados no teclado. O primeiro é armazenado na variável a e o segundo em b. 135
  • 136. Entrada - A Função scanf Cada variável a ser lida, deverá ser precedida pelo caracter & Para seqüência de caracteres (%s), o caracter & não deverá ser usado. 136
  • 137. Entrada - A Função scanf int main() { int numero; char string[30]; printf("Digite uma string: "); scanf("%s",string); printf("Digite um numero: "); scanf("%d",&numero); printf("A string digitada foi: t%sn“,string); printf("O numero digitado foi: t%dn“, numero); system("system"); } 137
  • 138. Lendo e Imprimindo Caracteres Para ler e escrever caracteres do teclado as funções de entrada e saída mais simples são getchar e putchar que estão na biblioteca stdio.h #include <stdio.h> #include <conio.h> main() { char c; int i; printf("Entre com um caracter entre 0 e 9.n"); c = getchar(); printf("O caracter lido foi o "); putchar(c); getch(); 138 }
  • 139. Exercícios Escreva um programa que declare variáveis do tipo inteiro, char e float, inicializando-as, e imprima os seus valores. 139
  • 140. Solução #include <stdio.h> main() { int i; char c; float f; i = 10; c = ‘A’; f = 10.5589; printf(“n Inteiro: %i“, i); printf(“n Char: %c“, c); printf(“n Real: %f“, f); system("pause"); } 140
  • 141. Exercícios Faça um programa capaz de ler um valor real e escreve-lo com apenas uma casa decimal. 141
  • 142. Solução #include <stdio.h> main() { float f; printf(“nDigite um número: “); scanf(“%f“, &f); printf(“n Real: %.1f“, f); system("pause"); } 142
  • 143. Lendo e Imprimindo Caracteres Na definição original da função getchar a entrada é armazenada até que a tecla ENTER seja apertada. Com isto caracteres ficam em um buffer esperando para serem tratados. Em ambientes onde é necessário tratar o caracter imediatamente esta função pode não ser útil. Muitos compiladores incluem funções para permitir entrada interativa de dados. As duas funções mais comuns são getch e getche e seus protótipos podem ser encontrados na biblioteca <conio.h>. 143
  • 144. Operadores  Atribuição (=)  Aritméticos  *e/  %  +e- 144
  • 145. Operadores Relacionais == igual != diferente de > maior que < menor que >= maior ou igual <= menor ou igual 145
  • 146. Operadores Lógicos  && (e)  || (ou)  ! (não) 146
  • 147. Operador Ternário  Operador que usa três argumentos:  expr ? valor1 : valor2  Se expr avaliar for verdadeira, valor1 será o resultado da expressão.  Se expr for falsa, valor2 será o resultado da expressão. int x, y, maior; ... maior = x > y ? x : y; ... 147
  • 148. Operador Ternário #include <stdio.h> main() { int n1, n2; printf("Digite um numero: "); scanf("%d", &n1); printf("Digite outro numero: "); scanf("%d", &n2); printf("O maior e: %dn", n1 > n2 ? n1 : n2); system("pause"); } 148
  • 149. Expressões  O resultado de uma expressão lógica ou relacional é:  0 (falso)  1 ou qualquer outro número diferente de zero (verdadeiro)  Para facilitar:  NÃ0  S1M 149
  • 150. Operadores de incremento e decremento  Incremento (++)  Decremento (--)  a++;  Incrementa o valor da variável a em uma unidade.  A posição do operador de incremento e decremento determina a ordem de execução do que está em seu derredor. 150
  • 151. Operadores de incremento e decremento #include <stdio.h> main() { int a = 10; printf("%d", ++a); system("pause"); } #include <stdio.h> main() { int a = 10; printf("%d", a++); system("pause"); } 151
  • 152. Atribuições Simplificadas Comando Exemplo Corresponde a: += a += 2 a = a + 2; -= a -= 2 a = a - 2; ∗= a *= 2; a = a * 2; /= a /= 2; a = a / 2; %= a %= 2; a = a % 2; 152
  • 153. Linguagem C Estruturas de Controle Desvio / Decisão 153
  • 154. if ... else ... if (expressão) { if (expressão) { comandos; comandos; } else { } comandos; } #include <stdio.h> #include <stdio.h> main() { main() { int idade = 21; int idade = 15; if (idade < 18) { if (idade < 18) { printf("Invalidan"); printf("Invalidan"); } else { } printf("OKn"); system("pause"); } } system("pause"); } 154
  • 155. Par ou ímpar #include <stdio.h> main() { int a; printf("Digite um numero inteiro: "); scanf("%d", &a); if (a % 2 == 0) { printf("O valor eh par.n"); } else { printf("O valor eh impar.n"); } system("pause"); } 155
  • 156. Exercício  Escreva um programa em linguagem C para receber um número e dizer se ele é positivo, negativo ou zero. 156
  • 157. Positivo, Negativo ou Zero #include <stdio.h> main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n > 0) { printf("positivo"); } else if (n < 0) { printf("negativo"); } else { printf("zero"); } printf("n"); system("pause"); } 157
  • 158. Decisão Múltipla  O comando switch simplifica uma expressão onde uma variável inteira ou caracter deve fazer diferentes operações, dependendo do seu valor. switch (variavel) { case valor: comandos; break; case valor: comandos; break; default: comandos; } 158
  • 159. Decisão Múltipla #include <stdio.h> main() { int num; printf("Digite um numero inteiro: "); scanf("%d", &num); switch (num) { case 1: printf("um"); break; case 2: printf("dois"); break; case 3: printf("tres"); break; case 4: printf("quatro"); break; case 5: printf("cinco"); break; default: printf("nao conheco"); } printf("n"); system("pause"); 159 }
  • 160. Exercício  Dada uma letra, escreva na tela se essa letra é ou não é uma vogal.  Dica: a função toupper(c) converte um char para caixa alta e a função tolower(c) converte um char para caixa baixa. 160
  • 161. Exercício #include <stdio.h> main() { char letra; printf("Digite uma letra: "); scanf("%c", &letra); switch (tolower(letra)) { case 'a': case 'e': case 'i': case 'o': case 'u': printf("A letra %c e uma vogal", letra); break; default: printf("A letra %c nao e uma vogal", letra); } printf("n"); system("pause"); } 161
  • 162. Linguagem C Estruturas de Controle Repetição 162
  • 163. Laços condicionais Laço condicional com teste while (expressão) { no início comandos; } Laço condicional com teste do { no final comandos; } while (expressão); 163
  • 164. Laço condicional ... int i = 0; while (i < 10) { printf("olá!"); i = i + 1; } ... 164
  • 165. Laços usando for  Em C, a declaração da variável deve ser realizada antes do for. for (inicializacao; condicao; incremento) { codigo; } int i; for (i = 0; i < 10; i++) { printf("olá!"); } 165
  • 166. I’ll not throw paper airplanes in class 166
  • 167. I’ll not throw paper airplanes in class #include <stdio.h> int main(void) { int count; for(count=1;count<=500; count++) printf("I’ll not throw paper airplanes in class!"); system(”pause”); return(0); } 167
  • 168. Exemplo – Linha de * #include <stdio.h> int main() { int i, n; printf("Digite um numero: "); scanf("%d", &n); for (i=0; i < n; i++) { printf("*"); } printf("n"); system(”pause”) ; return(0); } 168
  • 169. Exemplo – Quadrado de * #include <stdio.h> int main() { int coluna, linha, n; printf("Digite um numero: "); scanf("%d", &n); for (linha=1; linha <= n; linha++) { for (coluna=1; coluna <= n; coluna++) { printf("* "); } printf("n"); } system(”pause”) ; return(0); 169 }
  • 170. Controlando loops  break e continue main() { int i; for (i = 0; i < 100; i++) { if(i > 50 && i < 60) { continue; } printf("%dn", i); } system(”pause”)~; } 170
  • 172. Introdução às funções  Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução.  O uso de funções permite que o programa fique mais legível, mais bem estruturado.  Um programa em C consiste, no fundo, de várias funções colocadas juntas. 172
  • 173. Introdução às funções  Argumentos  Argumentos são as entradas que a função recebe. … através dos argumentos que passamos parâmetros para a função.  As funções printf() e scanf() são funções que recebem argumentos. 173
  • 174. Declaração tipo_de_retorno nome_da_função (declaração_de_parâmetros) { corpo_da_função } 174
  • 175. Exemplo – media de 2 números #include<stdio.h> float media2(float a, float b) { return ((a + b) / 2.0); } int main() { float num_1, num_2, media; puts("Digite dois numeros:"); scanf("%f %f", &num_1, &num_2); media = media2(num_1, num_2); printf("nA media destes numeros eh %f", media); system(”pause”); } 175
  • 176. Exemplo - soma #include <stdio.h> float soma(float a, float b) { return a + b; } int main() { float n1, n2; printf("Digite um numero: "); scanf("%f", &n1); printf("Digite outro numero: "); scanf("%f", &n2); printf("Soma: %fn", soma(n1, n2)); system(”pause”); return 0; 176 }
  • 177. Procedimentos  Em C não há procedimentos. O mais próximo de procedimentos em C são as funções que nada retornam, ou seja, cujo retorno é void. 177
  • 178. Exemplo - repeticao #include <stdio.h> void repete(char texto[], int n) { int i; for (i=0; i < n; i++) { printf("%s", texto); } } int main() { char palavra[20]; printf("Digite uma palavra: "); fgets(palavra, 20, stdin); repete(palavra, 10); system(”pause”); return 0; 178 }
  • 179. Exemplo de Função #include <stdio.h> /* Funcao simples: so imprime Ola! */ mensagem() { printf("Ola! "); } main() { mensagem(); printf("Eu estou vivo!n"); system("pause"); } 179
  • 180. Exemplo de função #include <stdio.h> /* Calcula o quadrado de x */ int square(int x) { return x * x; } main() { int num; printf("Entre com um numero: "); scanf("%d", &num); printf("nnO quadrado e %dn", square(num)); system("pause"); } 180
  • 181. Exemplo de função #include <stdio.h> int prod(int x, int y) { return (x*y); } main() { int saida; saida=prod(12, 7); printf("A saida e: %dn", saida); system("pause"); } 181
  • 182. Exemplo de função #include <stdio.h> float prod(float x, float y) { return (x*y); } main() { float saida; saida=prod(45.2, 0.0067); printf("A saida e: %fn", saida); system("pause"); } 182
  • 183. Exercício  Escreva uma função para receber dois números e, depois, exibir a sua soma. 183
  • 184. Solução #include <stdio.h> main() { float n1, n2; printf("Digite um numero: "); scanf("%f", &n1); printf("Digite outro numero: "); scanf("%f", &n2); printf("A soma e: %fn", (n1 + n2)); system("pause"); } 184
  • 185. Exercícios Sabendo que os argumentos da função "printf" podem ser expressões (a+b, a/b, a*b...), e não somente argumentos, faça um programa capaz de ler um valor inteiro X e imprimir na tela o cubo, o quadrado e a metade de X. Ex.: para X= 6, imprimir Cubo = 18; Quadrado = 36; Metade = 3. 185
  • 186. Solução #include <stdio.h> main() { float n1; printf("Digite um numero: "); scanf("%f", &n1); printf(“n Cubo: %f“, n1 * n1 * n1); printf(“n Quadrado: %f“, n1 * n1); printf(“n Metade: %f“, n1 / 1); system("pause"); } 186