![Page 1: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/1.jpg)
1 Curso de Linguagem C
Curso de Linguagem C
Rodolfo Jardim de AzevedoInstituto de Computação
UNICAMP
![Page 2: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/2.jpg)
2 Curso de Linguagem C
Programação Estruturada
n A linguagem C é uma linguagem estruturadaem bloco simples. Uma característicadistintiva de uma linguagem estruturada embloco é a compartimentalização de seucódigo e de seus dados, que é a habilidadede uma linguagem tem de seccionar eesconder do resto do programa todas asinstruções necessárias para a realização deuma determinada tarefa.
![Page 3: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/3.jpg)
3 Curso de Linguagem C
Declaração de variáveis
n Variáveis devem ser declaradas antesde serem usadas, permitindo assim,que o compilador saiba de antemãoinformações como tipo e espaço gastoem memória podendo fazer checagemdurante o processo de compilação.
![Page 4: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/4.jpg)
4 Curso de Linguagem C
Funções - Blocos de código
n Utilizando funções, é possível esconderparte do código e variáveis, evitandoassim, que sejam gerados efeitoscolaterais em outras partes doprograma. Desta forma, é necessáriosaber apenas o que as rotinas fazem, enão como elas fazem.
![Page 5: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/5.jpg)
5 Curso de Linguagem C
Laços
n Os programas passam a maior parte dotempo repetindo tarefas até que umacondição seja satisfeita (ou um númerofixo de vezes). Desta forma, fica maisfácil a programação e eliminam-se osinconvenientes gerados por váriosgotos espalhados pelo programa.
![Page 6: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/6.jpg)
6 Curso de Linguagem C
Testes de condições
n Numa linguagem estruturada, os testesde condições são amplamenteutilizados, tanto como controle de laços,quanto para execuções condicionais deblocos de código.
![Page 7: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/7.jpg)
7 Curso de Linguagem C
A linguagem C
n Surgiu nos anos 70 de uma linguagem chamadaB. Criada por Dennis Ritchie. Emborahouvessem poucas divergências entre asprimeiras implementações em nível de código-fonte, foi desenvolvido o padrão ANSI sendoassim, qualquer programa C ANSI pode sercompilado em qualquer compilador C ANSI nãoimportando a máquina na qual o programa vá serexecutado. Por isso, quando se querportabilidade, a escolha acaba recaindo sobre alinguagem C.
![Page 8: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/8.jpg)
8 Curso de Linguagem CLinguagem feita paraprogramadores
n Ao contrário do que possa parecer, nemtodas as linguagens foram feitas paraprogramadores. C é virtualmente única,porque ela foi criada, influenciada e testadaem campo por programadores. Ela ofereceao programador exatamente o que ele quer:poucas restrições e queixas, código rápido eeficiência. Por isso ela é a linguagem maispopular entre os programadores profissionaisaltamente qualificados.
![Page 9: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/9.jpg)
9 Curso de Linguagem C
Sensível ao caso
n A linguagem C é sensível ao caso, istoquer significa que letras maiúsculas eminúsculas são tratadas comocaracteres separados.
![Page 10: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/10.jpg)
10 Curso de Linguagem C
Programa exemplo
/* Este é o primeiro programa */ #include <stdio.h> main() { printf(“Alo mundo\n”); }n Este é um exemplo bem simples, mas que mostra
alguns componentes básicos que existem nosprogramas feitos em C. Nele vemos:
![Page 11: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/11.jpg)
11 Curso de Linguagem C
/* Este é o primeiro programa */
n Esta linha é um comentário.
![Page 12: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/12.jpg)
12 Curso de Linguagem C
#include <stdio.h>
n Indica a inclusão de arquivos dentro doprograma atual (neste caso, o arquivostdio.h). Normalmente são arquivoscabeçalhos contendo declarações detipos e protótipos de funções. Serãovistos mais tarde.
![Page 13: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/13.jpg)
13 Curso de Linguagem C
main()
n Todo programa em C tem que ter afunção main, é na primeira linha destafunção que o programa começa a serexecutado e quando a última linha forexecutada, o programa será encerrado.
![Page 14: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/14.jpg)
14 Curso de Linguagem C
{
n Inicia um bloco de código.
![Page 15: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/15.jpg)
15 Curso de Linguagem C
printf(“Alo mundo\n”);
n Chamada a uma função em C. A funçãoprintf é utilizada para imprimir umamensagem na tela, neste caso, amensagem Alo mundo que é chamadode parâmetro passado à função.
![Page 16: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/16.jpg)
16 Curso de Linguagem C
}
n Encerra um bloco de código.
![Page 17: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/17.jpg)
17 Curso de Linguagem C
Blocos de código
n Por ser uma linguagem estruturada, alinguagem C permite a criação de blocos decódigo. Um bloco de código é um grupo decomandos de programa conectadoslogicamente que o computador trata comouma unidade. Para criar um bloco de código,coloque uma seqüência de comandos entrechaves, como pode ser visto no programaexemplo, as linhas 5, 6 e 7 representam umbloco de código.
![Page 18: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/18.jpg)
18 Curso de Linguagem C
Ponto e vírgula
n O ponto e vírgula é um terminador decomandos, por isso, todos oscomandos devem ser terminados porum. Desta forma, podemos ter várioscomandos numa mesma linha sendocada um terminado com um ponto evírgula.
![Page 19: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/19.jpg)
19 Curso de Linguagem C
Chaves
n Todo bloco de código escrito em Cdeve vir entre chaves. Não é necessáriocolocar um ponto e vírgula depois defechar chaves pois cada comandodentro do bloco já possui o seuterminador.
![Page 20: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/20.jpg)
20 Curso de Linguagem C
Comentários
n Na linguagem C, os comentários sãodelimitados por /* e */ como pode servisto na primeira linha do programaanterior. Não é permitido colocarcomentários aninhados. Oscomentários podem vir em qualquerposição do programa e não apenas emlinhas separadas. Eles também podemcomeçar em uma linha e terminar emoutra.
![Page 21: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/21.jpg)
21 Curso de Linguagem C
Palavras reservadas
n Como todas as outras linguagens deprogramação, C consiste em palavrasreservadas e em regras de sintaxe que seaplicam a cada palavra reservada. Umapalavra reservada é essencialmente umcomando, e na maioria das vezes, aspalavras reservadas de uma linguagemdefinem o que pode ser feito e como seráfeito. O padrão ANSI C especifica asseguintes palavras reservadas:
![Page 22: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/22.jpg)
22 Curso de Linguagem C
Palavras reservadas
auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while
![Page 23: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/23.jpg)
23 Curso de Linguagem CVariáveis, constantes,operadores e expressões
n Por ser uma linguagem estruturada, emC, as variáveis devem ser declaradasantes de serem usadas, permitindoassim, que o compilador façachecagens em tempo de compilação.
![Page 24: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/24.jpg)
24 Curso de Linguagem C
Identificadores
n Identificadores são nomes usados parase fazer referência a variáveis, funções,rótulos e vários outros objetos definidospelo usuário. Um identificador pode terde um a vários caracteres. O primeirodeve ser uma letra ou um sublinhado, eos caracteres subseqüentes deve sermletras, números ou um sublinhado.
![Page 25: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/25.jpg)
25 Curso de Linguagem C
Tipos de dados
n Em C, existem 5 tipos de dadosbásicos: caracter, inteiro, pontoflutuante, ponto flutuante de duplaprecisão e sem valor. As palavrasreservadas para declarar variáveisdestes tipos são char, int, float, doublee void respectivamente. Veja na tabelaa seguir o espaço gasto por cada umdestes tipos assim como seus limitesem máquinas IBM PC compatíveis.
![Page 26: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/26.jpg)
26 Curso de Linguagem C
Tipos de dados
Tipo Extensãoem bits
Escala
char 8 -128 a 127int 16 -31768 a 32767float 32 3.4E-38 a 3.4E+38double 64 1.7E-308 a 1.7E308void 0 sem valor
![Page 27: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/27.jpg)
27 Curso de Linguagem C
Modificadores de tipo
n Com exceção de void, os tipos de dados básicostêm vários modificadores que os precedem. Omodificador é usado para alterar o significado dotipo-base para que ele se adapte da maneiramais precisa às necessidades das váriassituações. Eis aqui uma lista dos modificadores:signed, unsigned, long, short. Os dois primeirosmodificadores indicam a existência ou não desinal enquanto os outros dois são relativos aotamanho de memória necessário para armazenaro valor de um elemento deste tipo.
![Page 28: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/28.jpg)
28 Curso de Linguagem C
Modificadores de tipo
Tipo Extensão em bitschar 8int 16
short int 16long int 32
float 32short float 32long float 64double 64
short double 64long double 80
![Page 29: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/29.jpg)
29 Curso de Linguagem C
Declarando variáveis
n Uma declaração de variável deve seguira seguinte regra:
tipo lista_variáveis;
n onde tipo deve ser um tipo válido em Ce lista_variáveis pode consistir em umou mais identificadores separados porvírgula.
![Page 30: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/30.jpg)
30 Curso de Linguagem CExemplos de declaração devariável
n int i, j, l;n short int si;n unsigned int ui;n long inteiro_grande;n double balanco, lucro, prejuizo;
![Page 31: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/31.jpg)
31 Curso de Linguagem C
Onde declarar?
n Existem 3 lugares em um programa Conde as variáveis podem serdeclaradas.
![Page 32: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/32.jpg)
32 Curso de Linguagem C
Variável global
n O primeiro lugar é fora de todas asfunções, incluindo a função main(). Avariável decalrada dessa maneira échamada variável global e pode serusada em qualquer parte do programa.
![Page 33: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/33.jpg)
33 Curso de Linguagem C
Variável local
n O segundo lugar é dentro de umafunção. Estas variáveis são chamadasvariáveis locais e podem ser usadassomente pelos comandos queestiverem na mesma função.
![Page 34: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/34.jpg)
34 Curso de Linguagem C
Parâmetro (argumento)
n O último lugar onde as variáveis podemser declaradas é na declaração dosparâmetros formais de uma função,embora as variáveis aqui declaradassejam utilizadas para receber osargumentos quando a função échamada, eles podem ser utilizadoscomo outra variávei qualquer.
![Page 35: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/35.jpg)
35 Curso de Linguagem C
Programa exemplo:
/* soma os números de 0 a 9 */ int soma; /* Variável global */ main() { int cont; /* Variável local */ soma = 0; /* inicializa variável soma */ for (cont = 0; cont < 10; cont ++) { total(cont); display(); } }
![Page 36: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/36.jpg)
36 Curso de Linguagem C
Função total()
/* acumula no total parcial */
total(x) int x; /* Parâmetro formal */
{ soma = x + soma;
}
![Page 37: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/37.jpg)
37 Curso de Linguagem C
Função display()
display()
{ int cont; /* Variável local */
/* esta variável cont é diferente daquela declarada em main() */
for(cont = 0; cont < 10; cont ++) printf(“-”);
printf(“A soma atual é %d”, soma); }
![Page 38: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/38.jpg)
38 Curso de Linguagem C
Comentários
n Neste exemplo, qualquer função do programapode acessar a variável global soma. Porémtotal() não pode acessar diretamente a variávellocal cont em main(), que deve passar cont comoum argumento. Isto é necessário porque umavariável local só pode ser usada pelo código queestá na mesma função na qual ela é declarada.Observe que cont em display() é completamenteseparada de cont em main(), novamente porqueuma variável local é conhecida apenas pelafunção na qual ela é declarada.
![Page 39: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/39.jpg)
39 Curso de Linguagem C
Inicialização de variáveis
n Nós vimos que em main() existe uma linhasomente para inicializar a variável soma, estalinha poderia ser suprimida se a variávelfosse declarada
int soma = 0;
n Desta forma, podemos inicializar variáveis nomomento de sua declaração, o que facilitamuito a escrita do programa além de reduziro seu tamanho.
![Page 40: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/40.jpg)
40 Curso de Linguagem C
Constantes
n Constantes são valores fixos que oprograma não pode alterar.
![Page 41: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/41.jpg)
41 Curso de Linguagem C
Exemplos de Constantes
Tipo de dado Exemplo
char ‘a’ ‘n’ ‘9’int 1 123 2100 -234
long int 35000 -34short int 10 -12 90
unsigned int 10000 987 40000float 123.23 4.34E-3
double 123.23 12312333 -0.9876
![Page 42: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/42.jpg)
42 Curso de Linguagem C
Constantes hexadecimais e octais
n Podem ser declaradas constantes emhexadecimal ou octal conforme oexemplo a seguir:int hex = 0xFF; /* 255 em decimal *//* as constantes em hexadecimal devem
ser precedidas por 0x */int oct = 011; /* 9 em decimal */
/* as constantes em octal devem ser precedidas por 0 */
![Page 43: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/43.jpg)
43 Curso de Linguagem C
Constantes strings
n Uma string é um conjunto de caracteresentre aspas. Por exemplo, “esta é umastring” é uma string. Não confundirstrings com caracteres, ‘a’ é umcaracter enquanto “a” é uma string.
![Page 44: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/44.jpg)
44 Curso de Linguagem C
Constantes com barras invertidas
n Existem alguns caracteres que nãopodem ser representados no textocomum, as constantes com barrainvertida servem para representar estescaracteres.
![Page 45: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/45.jpg)
45 Curso de Linguagem C
Constantes com barras invertidas
Código Significado\b retrocesso\f avanço de página\n mudança de linha\r retorno de carro\t tab horizontal\” aspas duplas\’ aspas simples\0 ASCII 0\\ barra invertida\v tab vertical\a alerte (beep)\x constante hexadecimal
![Page 46: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/46.jpg)
46 Curso de Linguagem C
Operadores
n A linguagem C é muito rica emoperadores. Os operadores sãodivididos em 3 categorias gerais:aritméticos, de relação e lógicos e bit abit. Além desses, C tem operadoresespeciais para tarefas particulares.
![Page 47: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/47.jpg)
47 Curso de Linguagem C
Operadores aritméticos
Operador Ação- subtração, também menos unário+ adição* multiplicação/ divisão
% resto da divisão-- decremento++ incremento
![Page 48: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/48.jpg)
48 Curso de Linguagem C
Exemplo:
main(){
int x = 10, y = 3;printf(“%d\n”, x / y); /* exibirá 3 */printf(“%d\n”, x % y); /* exibirá 1, o resto da divisão de inteiros */x = 1;y = 2;printf(“%d %d\n”, x / y, x % y);/* exibirá 0 e 1 */
![Page 49: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/49.jpg)
49 Curso de Linguagem C
Exemplo (continuação)
x ++;printf(“%d\n”, x); /* exibirá 2*/printf(“%d %d\n”, x++, ++y);/* exibirá 2 e 3 *//* neste caso, x só é incrementado depois que ocomando é executado enquando y é incrementado antes */
}
![Page 50: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/50.jpg)
50 Curso de Linguagem C
Operadores de relação
Operador Ação
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a
== igual a
!= não igual a
![Page 51: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/51.jpg)
51 Curso de Linguagem C
Operadores lógicos
Operador Ação&& AND
|| OR! NOT
![Page 52: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/52.jpg)
52 Curso de Linguagem C
Observação
n Em C, o número 0 representa falso equalquer número não-zero éverdadeiro, assim, os operadoresanteriores retornam 1 para verdadeiro e0 para falso.
![Page 53: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/53.jpg)
53 Curso de Linguagem C
Operador de atribuição
n O operador = é o operador deatribuição. Ao contrário de outraslinguagens, C permite que o operadorde atribuição seja usado emexpressões com outros operadores.int a, b, c;a = b = c = 1; /* atribui 1 às 3 variáveis */((a = 2 * b) > c) /* a = 2 e a comparação
resulta em 1 */
![Page 54: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/54.jpg)
54 Curso de Linguagem C
Expressões
n Os operadores, as constantes e asvariáveis são os componentes dasexpressões. Uma expressão em C équalquer combinação válida dessescomponentes.
![Page 55: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/55.jpg)
55 Curso de Linguagem C
Conversões de tipos
n Quando você mistura constantes evariáveis de tipos diferentes em umaexpressão, C as converte para omesmo tipo. O compilador C converterátodos os operandos para o tipo domaior operando, uma operação de cadavez, conforme descrito nestas regras deconversão de tipo:
![Page 56: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/56.jpg)
56 Curso de Linguagem C
Regra 1
n Todo char e short int é convertido paraint. Todo float é convertido para double.
![Page 57: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/57.jpg)
57 Curso de Linguagem C
Regra 2
n Para todos os pares de operandos,ocorre o seguinte, em seqüência: se umdos operandos for um long double, ooutro será convertido para long double.Se um dos operandos for double, ooutro será convertido para double. Seum dos operandos for long, o outro seráconvertido para long. Se um dosoperandos for unsigned, o outro seráconvertido para unsigned.
![Page 58: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/58.jpg)
58 Curso de Linguagem C
Type cast
n Pode-se forçar o compilador a efetuardeterminada conversão utilizando-seum type cast que tem a seguinte forma:(tipo) expressão
![Page 59: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/59.jpg)
59 Curso de Linguagem C
Exemplo:
main(){
int x = 3;printf(“%f %f\n”, (float) x / 2, (float) (x / 2));
/* serão impressos na tela 1.5 e 1.0 pois no primeirocaso, x é convertido para float e depois é dividido, jáno segundo, somente o resultado é convertido parafloat */
}
![Page 60: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/60.jpg)
60 Curso de Linguagem C
Modificadores de acesso
n Os modificadores de acesso informamsobre como será feito o acesso àvariável.
![Page 61: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/61.jpg)
61 Curso de Linguagem C
Register
n Sempre que uma variável for declaradado tipo register, o compilador fará omáximo possível para mante-la numdos registradores do microprocessador,acelerando assim o acesso a seu valor.É pratica comum, declarar as variáveisde controle de loop como sendoregister.
![Page 62: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/62.jpg)
62 Curso de Linguagem C
Static
n Variáveis static são variáveis existemdurante toda a execução do programa,mas só podem ser acessadas de dentrodo bloco que a declarou.
![Page 63: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/63.jpg)
63 Curso de Linguagem C
Exemplo:
/* Exemplo de variável static */main(){
printf(“%d\n”, numero()); /* imprimirá 0 */printf(“%d\n”, numero()); /* imprimirá 1 */
}numero(){
static valor = 0; /* atribuição só executada 1 vez */return valor ++;
}
![Page 64: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/64.jpg)
64 Curso de Linguagem C
printf()
n Rotina de finalidade geral para saídapelo console
n A função printf() serve para mostrarmensagens na tela. Sua forma geral é
printf(“string de controle”, lista argumentos);
![Page 65: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/65.jpg)
65 Curso de Linguagem C
“string de controle”
n A string de controle consiste em doistipos de itens:Caracteres que a função imprimirá na tela
Comandos de formatação
![Page 66: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/66.jpg)
66 Curso de Linguagem C
Comandos de formatação
n Todos os comandos de formataçãocomeçam por % que é seguido pelocódigo de formatação
n Deve haver exatamente o mesmonúmero de argumentos quanto forem oscomandos de formatação e eles devemcoincidir em ordem
![Page 67: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/67.jpg)
67 Curso de Linguagem C
Comandos de formatação
Código Formato%c um único caracter%d decimal%i decimal%e notação científica%f ponto decimal flutuante%g usa %e ou %f - aquele que for menor%o octal%s string de caracteres%u decimal sem sinal%x hexadecimal%% sinal %%p exibe um ponteiro%n o argumento associado será um ponteiro inteiro no
qual será colocado o número de caracteres escritosaté o momento
![Page 68: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/68.jpg)
68 Curso de Linguagem C
Comprimento mínimo do campo
n Para especificar o comprimento mínimo queum campo poderá ter, basta colocar uminteiro entre o sinal % e o comando deformatação. Observe que este é ocomprimento mínimo e que o campo podeocupar um espaço maior.
Exemplo Função%3d inteiro com pelo menos 3 dígitos (preenchido
com espaços)%03d inteiro com pelo menos 3 dígitos (preenchido
com zeros)%5s string com pelo menos 5 caracteres
![Page 69: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/69.jpg)
69 Curso de Linguagem C
Número de casas decimais
n Para especificar o número de casasdecimais, coloque um ponto decimalapós o especificador de largura mínimado campo e depois dele, o número decasas decimais que deverão serexibidas.
Exemplo Função%7.2f Usar 2 casas decimais
![Page 70: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/70.jpg)
70 Curso de Linguagem C
Comprimento máximo
n Quando o formato de casas decimais écolocado em strings, o número decasas decimais passa a serconsiderado como comprimentomáximo do campo.
Exemplo Função%5.7s string com no mínimo 5 e no
máximo 7 caracteres
![Page 71: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/71.jpg)
71 Curso de Linguagem C
Número mínimo de dígitos
n Quando o formato de casas decimais éaplicado em inteiros, o especificador decasas decimais será utilizado comonúmero mínimo de dígitos
Exemplo Função%7.6d 7 caracteres no mínimo e 6
dígitos no mínimo
![Page 72: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/72.jpg)
72 Curso de Linguagem C
Alinhamento
n Por padrão, todo resultado é alinhado àdireita, para inverter este padrão, utilizeum sinal de menos (-) antes deespecificar o tamanho.
Exemplo Função%-5d 5 caracteres alinhados à
esquerda%-10s 10 caracteres alinhados à
esquerda
![Page 73: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/73.jpg)
73 Curso de Linguagem C
Modificadores de formatação
n Podemos usar modificadores parainformar sobre a leitura de shorts(modificador h) ou longs (modificador l)
Exemplo Função%hd Imprime um short int%ld Imprime um long int
![Page 74: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/74.jpg)
74 Curso de Linguagem C
Exemplos
Comando printf() Resultado(“%-5.2f”, 123.234) 123.23(“%5.2f”, 3.234) 3.23(“%10s”, “alo”) alo(“%-10s”, “alo”) alo(“%5.7s”, “123456789”) 1234567(“%5.4d”, 123) 0123
![Page 75: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/75.jpg)
75 Curso de Linguagem C
scanf()
n Rotina de finalidade geral para entradapelo console
n A função scanf() serve para lerinformações do teclado. Sua formageral é
scanf(“string de controle”, lista argumentos);
![Page 76: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/76.jpg)
76 Curso de Linguagem C
“string de controle”
n A string de controle consiste em trêsclassificações de caracteres:Especificadores de formato
Caracteres brancosCaracteres não-brancos
![Page 77: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/77.jpg)
77 Curso de Linguagem C
Especificadores de formato
n Todos os especificadores de formatocomeçam por % que é seguido por umcaracter que indica o tipo de de dadoque será lido
n Deve haver exatamente o mesmonúmero de argumentos quanto forem osespecificadores de formato e elesdevem coincidir em ordem
![Page 78: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/78.jpg)
78 Curso de Linguagem C
Especificadores de formato
Código Lê%c único caracter%d decimal%i decimal%e número com ponto flutuante%f numero com ponto decimal flutuante%o número octal%s string de caracteres%x hexadecimal%p ponteiro%n recebe um valor inteiro igual ao número de
caracteres lidos até o momento
![Page 79: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/79.jpg)
79 Curso de Linguagem C
Caracter branco
n Um caracter branco na string decontrole faz com que scanf() passe porcima de um ou mais caracteres brancosna string de entrada
n Um caracter branco é um espaço, umtab ou um \n
![Page 80: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/80.jpg)
80 Curso de Linguagem C
Caracter não branco
n Um caracter não branco na string decontrole faz com que scanf() leia edesconsidere um caracter coincidente.Se o computador não encontrar ocaracter especificado, scanf terminará
n O comando “%d,%d” fará com quescanf leia um inteiro, depois leia edesconsidere uma vírgula e finalmente,leia um outro inteiro
![Page 81: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/81.jpg)
81 Curso de Linguagem C
Como chamar scanf()
n Todas as variáveis usadas para recebervalores através de scanf() devem serpassadas por seus endereços. Sequiser ler a variável cont, utilizescanf(“%d”, &cont);
n Como strings são representadas porvetores, NÃO deve ser colocado o &antes do nome da variável
![Page 82: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/82.jpg)
82 Curso de Linguagem C
Ignorar entrada
n Colocar um * entre o % e o código deformatação fará com que scanf() leiadados do tipo especificado massuprimirá suas atribuições. Desta formascanf(“%d%*c%d”, &x, &y)
n dada a entrada 10/20, coloca 10 em x,desconsidera o sinal de divisão ecoloca 20 em y
![Page 83: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/83.jpg)
83 Curso de Linguagem C
Comprimento máximo do campo
n Para especificar o comprimento máximo queum campo poderá ter, basta colocar uminteiro entre o sinal % e o comando deformatação. Os caracteres que sobraremserão utilizados nas próximas chamadas ascanf(). Caso não queira ler mais do que 20caracteres na string nome, utilizescanf(“%20s”, nome);
![Page 84: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/84.jpg)
84 Curso de Linguagem C
Espaços, tabs e \n
n Servem como separadores quando nãoestiverem sendo lidos caracteres. Sãolidos e atribuídos quando for pedido umcaracter de entrada. Caso o comandoscanf(“%c%c%c”, &a, &b, &c);
n seja lido com a entradax y
n scanf retornará com x em a, espaço emb e y em c
![Page 85: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/85.jpg)
85 Curso de Linguagem C
Comandos de controle de fluxo
n Os comandos de controle de fluxo são abase de qualquer linguagem.
n A maneira como eles são implementadosafeta a personalidade e percepção dalinguagem.
n C tem um conjunto muito rico e poderoso decomandos de controle de fluxo.
n Eles se dividem em comandos de teste decondições e comandos de controle de loop.
![Page 86: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/86.jpg)
86 Curso de Linguagem C
Comandos de testes de condições
n Estes comandos avaliam uma condiçãoe executam um bloco de código deacordo com o resultado. São eles:• if• switch
![Page 87: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/87.jpg)
87 Curso de Linguagem C
if
n O comando if serve para executarcomandos de acordo com umadeterminada condição
n A forma geral do comando if éif (condição) comando;
else comando;
n onde a parte else é opcional
![Page 88: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/88.jpg)
88 Curso de Linguagem C
Exemplo/* programa do número mágico */#include <stdlib.h>main(){
int magico, adivinhacao;magico = rand() % 10; /* gerar um número */printf(“Adivinhe o número: ”);scanf(“%d”, &adivinhacao);if (adivinhacao == magico)
printf(“** número certo **”);else
printf(“-- número errado --”);}
![Page 89: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/89.jpg)
89 Curso de Linguagem C
if aninhados
n C permite que sejam colocadoscomandos if dentro de outros comandosif. A isto chamamos de if aninhados.
n Quando se trata de if aninhados, ocomando else se refere ao if maispróximo que não possui um comandoelse. Tanto o if quanto o else devemestar dentro do mesmo bloco de código.
![Page 90: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/90.jpg)
90 Curso de Linguagem C
Exemplos
if (x)if (y) printf(“1”);else printf(“2”);
n Neste caso, o elsepertence aosegundo if.
if (x) {if (y) printf(“1”);
}else printf(“2”);
n Neste caso, o elsepertence ao primeiroif.
![Page 91: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/91.jpg)
91 Curso de Linguagem C
if-else-if
n É muito comum encontrar programasque possuem uma “escada” if-else-if daseguinte forma:if (condição)
comando;
else if (condição)comando;
elsecomando;
![Page 92: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/92.jpg)
92 Curso de Linguagem C
Avaliação do if-else-if
n O computador avalia as expressõescondicionais de cima para baixo. Assimque encontra uma condição verdadeira,ele executa o comando associado a elae passa por cima do resto da “escada”.
n Se nenhuma condição for verdadeira, ocomputador executará o else final.
![Page 93: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/93.jpg)
93 Curso de Linguagem C
A expressão condicional
n Qualquer expressão válida em C podeservir como expressão condicional.Veja o exemplo:/* dividir o primeiro número pelo segundo */main(){
int a, b;printf(“Digite dois números: “);scanf(“%d %d”, &a, &b);if (b) printf(“%d\n”, a/b);else printf(“não posso diridir por zero\n”);
}
![Page 94: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/94.jpg)
94 Curso de Linguagem C
switch
n Embora o if-else-if possa executar váriostipos de testes, o código pode ficar muitodifícil de ser seguido.
n C possui um comando de vários desvioschamado switch.
n No switch, o computador testa uma variávelsucessivamente contra uma lista deconstantes inteiras ou de caracteres eexecuta um comando ou bloco de comandosquando encontrar uma coincidência.
![Page 95: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/95.jpg)
95 Curso de Linguagem C
Forma geral do switch
switch (variável) {case constante1:
seqüência de comandosbreak;
case constante2:seqüência de comandosbreak;
default:seqüência de comandos
}
![Page 96: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/96.jpg)
96 Curso de Linguagem CO comando default dentro doswitch
n O comando default será executado senão for encontrada nenhumacoincidência na lista de constantes.
n Caso não seja colocado um comandodefault e não haja coincidência,nenhum comando será executado.
![Page 97: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/97.jpg)
97 Curso de Linguagem C
O comando break
n Quando o computador encontra algumacoincidência, ele executa os comandosassociados àquele case até encontrarbreak ou o fim do comando switch.
n É um erro comum programadoresesquecerem de colocar o break após oscomandos.
![Page 98: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/98.jpg)
98 Curso de Linguagem C
Importante
n O switch difere do if, já que o primeiro sópode testar igualdade e a expressãocondicional if pode ser de qualquer tipo.
n Não pode haver duas constantes case comvalores iguais no mesmo switch.
n Podem ser colocados comandos switchdentro de comandos switch.
n Pode ser deixado um case vazio quandomais de uma condição usa o mesmo código.
![Page 99: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/99.jpg)
99 Curso de Linguagem C
Comandos de controle de loops
n Os comandos de controle de loopspermitem que o computador repita umconjunto de instruções até que alcanceuma certa condição. Em C temos osseguintes comandos de controle deloop:• for
• while• do while
![Page 100: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/100.jpg)
100 Curso de Linguagem C
for
n O loop for em C é muito mais forte emais flexível que o da maioria dasoutras linguagens. Sua forma geral éfor (inicialização; condição; incremento)
comando;
n Observe que as três partes do loop forsão separadas por ponto e vírgula.
n Nenhuma destas partes precisa existir.
![Page 101: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/101.jpg)
101 Curso de Linguagem C
Inicialização
n Na forma mais simples, inicialização éum comando de atribuição que ocompilador usa para estabelecer avariável de controle de loop.
n A inicialização pode conter qualquercomando válido em C.
![Page 102: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/102.jpg)
102 Curso de Linguagem C
Condição
n A condição é uma expressão de relaçãoque testa se a condição final desejadapelo loop for ocorreu.
n Aqui também pode ser colocadoqualquer comando válido em C.
![Page 103: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/103.jpg)
103 Curso de Linguagem C
Incremento
n O incremento define a maneira como avariável de controle do loop seráalterada cada vez que o computadorrepetir o loop.
n Também aqui, podemos colocarqualquer comando válido em C.
![Page 104: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/104.jpg)
104 Curso de Linguagem C
Exemplo 1
/* imprimir os números de 1 a 100 */
main(){
int x;for (x = 1; x <= 100; x ++) printf(“%d ”, x);
}
![Page 105: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/105.jpg)
105 Curso de Linguagem C
Exemplo 2
/* imprimir os números de 100 a 1 */
main(){
int x;for (x = 100; x > 0; x --) printf(“%d ”, x);
}
![Page 106: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/106.jpg)
106 Curso de Linguagem C
Exemplo 3
/* imprimir os números de 0 a 100, 5 em 5 */
main(){
int x;for (x = 0; x <= 100; x = x + 5)
printf(“%d ”, x);}
![Page 107: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/107.jpg)
107 Curso de Linguagem C
Exemplo 4
/* executa um bloco de código 100 vezes */
main(){
int x;for (x = 0; x < 100; x ++) {
printf(“O valor de x é: %d ”, x);printf(“e o quadrado de x é: %d\n”, x * x);
}}
![Page 108: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/108.jpg)
108 Curso de Linguagem C
Variações do loop for
n Podem ser executados mais de umcomando nas partes de inicialização ede incremento. Veja quemain(){
int x, y;for (x = 0, y = 0; x + y < 100; ++x, y++)
printf(“%d ”, x + y);}
n Mostrará números de 0 a 98, 2 a 2.
![Page 109: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/109.jpg)
109 Curso de Linguagem C
Um uso diferente para formain()
{ int t;for (prompt(); t=readnum(); prompt()) sqrnum(t);
}
prompt(){ printf(“digite um inteiro:” );
}
readnum(){ int t;
scanf(“%d”, &t);
return t;}
sqrnum(int num)
{ printf(“%d\n”, num * num);}
![Page 110: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/110.jpg)
110 Curso de Linguagem C
Loop infinito
n Podemos fazer um comando forexecutar para sempre simplesmentenão especificando sua partecondicional. Vejafor (;;)
printf(“este loop rodará para sempre\n”);
![Page 111: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/111.jpg)
111 Curso de Linguagem C
Saindo de um loop
n Podemos usar o comando break paraencerrar um for a qualquer momento.Veja um exemplo:main(){
int a;for (a = 1; a < 100; a++)
if (a == 10) break;}
n O loop só será executado 10 vezes.
![Page 112: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/112.jpg)
112 Curso de Linguagem C
Loops for sem nenhum corpo
n Podem ser utilizados loops sem corpopara gerar retardo de tempo. Veja umexemplo:for (a = 0; a < 1000; a ++);
![Page 113: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/113.jpg)
113 Curso de Linguagem C
while
n O while executa um comando (ou blocode comandos) enquanto uma condiçãofor verdadeira.
n A forma geral do while é:while (condição)
comando;
![Page 114: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/114.jpg)
114 Curso de Linguagem C
Exemplo 1
pausa()
{char tecla = ‘\0’;
printf(“Tecle ESPAÇO para continuar...”);while (tecla != ‘ ’)
tecla = getche();}
![Page 115: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/115.jpg)
115 Curso de Linguagem C
Exemplo 2
n O exemplo anterior pode ser reescritosem utilizar variável. Veja:main()
{printf(“Tecle ESPAÇO para continuar...”);
while (getche() != ‘ ’);}
![Page 116: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/116.jpg)
116 Curso de Linguagem C
do while
n Ao contrário do loop for e do loop while,que testam a condição no começo doloop, o loop do while verifica a condiçãosomente no final. Desta forma, o loopserá executado pelo menos uma vez. Aforma geral do loop do while é:do {
comando;} while (condição);
![Page 117: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/117.jpg)
117 Curso de Linguagem C
Exemplo
/* Lê um número maior que 100 */
main(){
int num;do {
printf(“Digite um número maior que 100”);scanf(“%d”, &num);
} while (num <= 100);}
![Page 118: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/118.jpg)
118 Curso de Linguagem C
Loops aninhados
n Quando um loop está dentro do outro,dizemos que o loop interior estáaninhado.
n Loops aninhados permite que sejamsolucionados vários problemas deprogramação.
n Em C podemos aninhar qualquer tipode loop.
![Page 119: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/119.jpg)
119 Curso de Linguagem C
Exemplo/* exibir uma tabela de potências dos números de 1 a 9*/main(){ int i, j, k, temp;
printf(“\ti\ti^2\ti^3\ti^4\n”);for (i = 1; i < 10; i ++) { /* loop externo */
for (j = 1; j < 5; j ++) { /* primeiro nível de aninhamento */temp = 1;for (k = 0; k < j; k ++) /* loop mais interior */
temp = temp * i;printf(“%8d”, temp);
}}
}
![Page 120: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/120.jpg)
120 Curso de Linguagem C
Interrupção de loops
n Quando precisamos encerrar um loopsem que sua condição de encerramentoesteja satisfeita, podemos utilizar ocomando break.
n O comando break é especialmente útilquando algum evento externo controleum loop.
![Page 121: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/121.jpg)
121 Curso de Linguagem C
Comando continue
n O comando continue funciona demaneira parecida com o comandobreak. Porém, em vez de forçar oencerramento, continue força a próximaiteração do loop e pula o código queestiver no meio.
![Page 122: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/122.jpg)
122 Curso de Linguagem C
Exemplo
/* programa para imprimir os números paresentre 0 e 98 */
main(){
int x;for (x = 0; x < 100; x ++) {
if (x % 2) continue;printf(“%d ”, x);
}}
![Page 123: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/123.jpg)
123 Curso de Linguagem C
Vetores
n Vetores são uma coleção de variáveisdo mesmo tipo que são referenciadaspelo mesmo nome.
n Em C, um vetor consiste em locaçõescontíguas de memória.
n O elemento mais baixo corresponde aoprimeiro elemento e o mais alto aoúltimo.
n O vetor mais utilizado é o de caracteres.
![Page 124: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/124.jpg)
124 Curso de Linguagem C
Declarando vetores
n A forma geral da declaração de umvetor é:tipo nome_var[tamanho];
n Onde• tipo é o tipo base do vetor e• tamanho é a quantidade de elementos que
o vetor conterá
![Page 125: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/125.jpg)
125 Curso de Linguagem C
Acessando um vetor
n Os vetores são acessados através deíndices colocados entre colchetes.
n O índice do primeiro elemento do vetoré 0 (ZERO).int amostra[10]; /* vetor de 10 inteiros */
amostra[0] /* primeiro elemento */amostra[9] /* último elemento */
![Page 126: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/126.jpg)
126 Curso de Linguagem C
Exemplo
main()
{int x[10]; /* vetor com 10 elementos int */
int t;
for (t = 0; t < 10; t ++)x [ t ] = t;
}
![Page 127: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/127.jpg)
127 Curso de Linguagem C
Limites dos vetores
n C não faz checagem dos limites dosvetores, isto é responsabilidade doprogramador. Logo, o código a seguirnão causará nenhum erro.int elementos[10];elementos[12] = 0;
elementos[10] = 0;
![Page 128: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/128.jpg)
128 Curso de Linguagem C
Strings
n Uma string é por definição, um vetor decaracteres terminado em 0. Então, paradeclarar a string, devemos declararsempre um elemento a mais para oterminador. Veja quechar mensagem[10] = “Exemplo”
n Ficará armazenado na memória como:
E x e m p l o \0
![Page 129: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/129.jpg)
129 Curso de Linguagem C
Funções para manipular strings
Função Finalidadegets Lê uma string do tecladoputs Imprime uma string na tela
strcpy Copia uma string em outrasrtcat Concatena stringsstrcmp Compara stringsstrlen Retorna o tamanho da string
![Page 130: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/130.jpg)
130 Curso de Linguagem C
gets
n Lê uma string do teclado.n Forma geral:
gets(nome_string);
n Exemplo:main()
{ char str[80];gets(str);
printf(“%s”, str);}
![Page 131: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/131.jpg)
131 Curso de Linguagem C
puts
n Mostra uma string na tela.n Forma geral:
puts(nome_string);
n Exemplo:main()
{puts(“Esta é uma mensagem”);
}
![Page 132: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/132.jpg)
132 Curso de Linguagem C
strcpy
n Copia uma string em outra.n Forma geral:
strcpy(para, de);
n Lembre-se que a string para deve sergrande o suficiente para conter de.main()
{ char str[80];strcpy(str, “alo”);
}
![Page 133: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/133.jpg)
133 Curso de Linguagem C
strcat
n Adiciona uma string em outra.n Forma geral:
strcat(s1, s2);
n s2 será anexada ao final de s1.main(){ char primeiro[20], segundo[10];
strcpy(primeiro, “bom”);strcpy(segundo, “ dia”);strcat(primeiro, segundo);printf(“%s\n”, primeiro);
}
![Page 134: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/134.jpg)
134 Curso de Linguagem C
strcmp
n Compara 2 strings.n Forma geral:
strcmp(s1, s2)
n A função retorna:
0 se s1 igual a s2> 0 se s1 > s2< 0 se s2 > s1
![Page 135: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/135.jpg)
135 Curso de Linguagem C
strlen
n Retorna o tamanho da stringn Forma geral:
strlen(str);
n Exemplo:main(){ char str[80];
printf(“Digite uma string: ”);gets(str);printf(“Tamanho: %d\n”, strlen(str));
}
![Page 136: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/136.jpg)
136 Curso de Linguagem C
Matrizes bidimensionais
n C permite que sejam declaradasmatrizes bidimensionais.
n Forma da declaração:tipo nome_var[dimensão1][dimensão2];
n Exemplo:char tabela[5][5];
![Page 137: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/137.jpg)
137 Curso de Linguagem C
Matrizes multidimensionais
n De forma semelhante as matrizesbidimensionais, declaramos asmultidimensionais. Veja por exemplouma matriz de 4 dimensões:int matriz[5][7][3][8];
![Page 138: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/138.jpg)
138 Curso de Linguagem CAcessando os elementos dasmatrizes multidimensionais
main()
{int numeros[4][3], i, j;
for (i = 0; i < 4; i ++)for (j = 0; j < 3; j++)
numeros[ i ][ j ] = i * j;}
![Page 139: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/139.jpg)
139 Curso de Linguagem C
Matrizes de strings
n Uma matriz bidimensional de caracterespode ser interpretada como uma matrizde strings.main(){ char strings[5][20]; /* 5 strings */
int i;for (i = 0; i < 5; i ++)
gets(strings[ i ]);}
![Page 140: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/140.jpg)
140 Curso de Linguagem C
Inicialização de matrizes
n C permite que as matrizes globaissejam inicializadas.
n A forma geral é:tipo nome_matriz[tam1]...[tamN] = {lista de
valores}
n Exemplo:int i[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
![Page 141: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/141.jpg)
141 Curso de Linguagem C
Exemplo
int quadrados[5][2] = {
1, 1,2, 4,
3, 9,4, 16,
5, 25};1 12 43 94 165 25
quadrados =
![Page 142: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/142.jpg)
142 Curso de Linguagem C
Declarando vetores sem tamanho
n Podem ser declarados vetores semespecificar explicitamente seustamanhos. Os vetores devem serinicializados na declaração. O tamanhoserá definido na inicialização.
n Exemplo:char mensagem[ ] = “Esta é uma string”;
![Page 143: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/143.jpg)
143 Curso de Linguagem C
Exercícios
n Faça um programa que leia 3 nomescom suas respectivas idades e mostre omaior e o menor.
n Faça um programa que leia 5 númerose imprima “Números altos” se mais doque 3 deles forem maiores que 5, casocontrário, imprima “Números baixos”.
![Page 144: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/144.jpg)
144 Curso de Linguagem C
Modelos de memória
n A definição de modelos de memória foia forma utilizada para contornar aslimitações de segmentos emcomputadores IBM PC.
Modelo Código DadosTiny 1
Small 1 1Medium mais de 1 1Compact 1 mais de 1
Large mais de 1 mais de 1Huge mais de 1 mais de 1
![Page 145: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/145.jpg)
145 Curso de Linguagem C
Ponteiros
n Entender e usar corretamente osponteiros são pontos cruciais paracriação de programas bem-sucedidosem C.
n Além dos ponteiros serem uma dascaracterísticas mais fortes em C,também é a mais perigosa.
n É muito fácil usar ponteirosincorretamente causando erros difíceisde serem encontrados.
![Page 146: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/146.jpg)
146 Curso de Linguagem C
Motivos para usar ponteiros
n Os ponteiros fornecem maneiras pelasquais as funções podem modificar osargumentos recebidos.
n Dão apoio às rotinas de alocaçãodinâmica.
n Podem substituir o uso vetores emmuitas situações para aumentar aeficiência.
![Page 147: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/147.jpg)
147 Curso de Linguagem C
Ponteiros são endereços
n Um ponteiro é uma variável que contémum endereço de memória. Isto é, elespossuem armazenam a localização deoutra variável dentro da memória docomputador.
n Então dizemos que um ponteiro apontapara esta variável.
![Page 148: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/148.jpg)
148 Curso de Linguagem C
Ilustração de poteiros
Endereçamentode memória
Variável namemória
1000 100310011002100310041005
![Page 149: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/149.jpg)
149 Curso de Linguagem C
Variáveis ponteiros - declaração
n A declaração de variáveis ponteiros,segue a seguinte regra geral:tipo *nome_var;
n onde tipo é o tipo do elemento para oqual o ponteiro apontará.
n Exemplo:char *p;
int *temp, *valor;
![Page 150: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/150.jpg)
150 Curso de Linguagem C
Os operadores de ponteiros
n Existem 2 operadores especiais deponteiros: & e *.
n O operador & devolve o endereço davariável. É utilizado para fazer umponteiro apontar para ela.
n O operador * devolve o valorarmazenado no endereço apontadopelo ponteiro.
![Page 151: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/151.jpg)
151 Curso de Linguagem C
Exemplo
main()
{ int numero = 5, *p;p = №
printf(“%d %d\n”, numero, *p);*p = 3;
printf(“%d %d\n”, numero, *p);numero = 7;
printf(“%d %d\n”, numero, *p);}
![Page 152: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/152.jpg)
152 Curso de Linguagem C
Expressões com ponteiros
n C permite que sejam feitas expressõescom ponteiros e elas seguem asmesmas regras das outras expressõesem C.
n Quando se compara um ponteiro comoutro, estamos comparando seusendereços. Isto é útil quando ambos osponteiros apontam para elementos deum vetor.
![Page 153: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/153.jpg)
153 Curso de Linguagem C
Ponteiros e vetores
n Existe um relacionamento muitopróximo entre os ponteiros e os vetores.Veja o código:char str[80], *p;p = str;
n Este código faz com que p aponte parao primero elemento do vetor, pois umvetor sem o índice se comporta comoum ponteiro para seu primeiroelemento.
![Page 154: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/154.jpg)
154 Curso de Linguagem C
Exemplo
n Após a definição:char str[80], *p;
p = str;
n são equivalentes os acessos ao quintoelemento de str:str[4]
*(p + 4)p[4]
![Page 155: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/155.jpg)
155 Curso de Linguagem C
Problemas com ponteiros
n É muito fácil errar quando se trabalhacom ponteiros em C.
n Algumas vezes, os erros com ponteirossó aparecem quando o programacresce.
n Ponteiros que não foram inicializados,apontam para um lugar desconhecidona memória, que pode ser inclusive ocódigo do programa.
![Page 156: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/156.jpg)
156 Curso de Linguagem C
Dois erros comuns
/* este programa estáerrado */
main(){
int x, *p;x = 10;*p = x;
}
/* este programa estáerrado */
main(){
int x, *p;x = 10;p = x;printf(“%d”, *p);
}
![Page 157: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/157.jpg)
157 Curso de Linguagem C
Alocação dinâmica de memória
n A linguagem C permite que seja feitaalocação dinâmica de memória, isto é,solicitar memória a medida que ela forsendo necessária.
n Programas que utilizam listas, pilhas, eoutros tipos de dados complexos cujaquantidade máxima não é definidadurante a compilação, trabalham comalocação dinâmica de memória.
![Page 158: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/158.jpg)
158 Curso de Linguagem C
Funções de alocação dinâmica
n Alocar um bloco de memóriavoid *malloc(int número_de_bytes);
void *calloc(unsigned num, unsigned tam);
n Liberar um bloco de memóriavoid free(void *p);
n Alterar o tamanho de um bloco dememóriavoid *realloc(void *p, unsigned tam);
![Page 159: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/159.jpg)
159 Curso de Linguagem C
Exemplo 1
#include <stdio.h>#include <stdlib.h>main(){ char *str;
str = (char *) malloc(101 * sizeof(char));if (str) {
strcpy(str, “Isto é um teste”);printf(“%s”, str);free(str);
}}
![Page 160: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/160.jpg)
160 Curso de Linguagem C
Exemplo 2
#include <stdio.h>#include <stdlib.h>main(){ float *p;
p = (float *) calloc(100, sizeof(float));if (!p) {
printf(“alocação fracassada - abortado”);exit(1);
}free(p);
}
![Page 161: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/161.jpg)
161 Curso de Linguagem C
Funções
n Funções são os blocos de contruçãoem que ocorrem todas as atividades doprogramas.
n Programar utilizando funções é reduzira complexidade do código e simplificarsua escrita.
![Page 162: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/162.jpg)
162 Curso de Linguagem C
Forma geral
n A forma geral da declaração de umafunção é:tipo nome_função(lista_parâmetros)
declaração de parâmetros{
corpo da função}
n Caso não seja especificado o tipo dafunção, ela será do tipo int.
![Page 163: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/163.jpg)
163 Curso de Linguagem C
Comando return
n O comando return possui duasutilidades básicas:• Causar a saída imediata da função na qual
ele se encontra, retornando para o códigode chamada.
• Devolver um valor para a funçãochamadora.
![Page 164: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/164.jpg)
164 Curso de Linguagem C
Exemplo
/* retorna 1 se o parâmetro > 10 */
int maior_que_dez(int x){
return (x > 10);}
![Page 165: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/165.jpg)
165 Curso de Linguagem C
Argumentos
n Quando é necessário passar algumainformação extra para uma função, estainformação será passada através deargumentos.
n Para chamar uma função com argumentos,eles devem ser colocados entre parêntesesapós o identificador da função. Veja:puts(“Atenção”);
n a string “Atenção” é o argumentopassado para a função puts.
![Page 166: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/166.jpg)
166 Curso de Linguagem CChamadas por valor e porreferência
n Existem duas formas de se passar umparâmetro para uma função, utilizandochamadas por valor ou por referência.
n Quando um parâmetro é passado por valor,as alterações efetuadas na função nãoafetarão a variável da função chamadora.
n Quando um parâmetro é passado porreferência, qualquer alteração efetuada pelafunção afetará a variável da funçãochamadora.
![Page 167: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/167.jpg)
167 Curso de Linguagem C
Exemplo
main(){ int x = 3, y = 4;
printf(“%d %d\n”, x, y);processa(x, &y);printf(“%d %d\n”, x, y);
}
int processa(int a, int *b){ a = 6;
b = 7;}
![Page 168: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/168.jpg)
168 Curso de Linguagem C
Observações
n Vetores são passados por referência.n Quando uma função é feita para
receber um parâmetro por referência, oparâmetro deve ser declarado como umponteiro na lista de argumentos dafunção.
n Para conjuntos grandes de dados, apassagem de parâmetros por referênciaé mais rápida.
![Page 169: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/169.jpg)
169 Curso de Linguagem CArgumentos argc e argv paramain()
n A função main também recebeargumentos. Eles são os parâmetros dalinha de comando passados aoprograma. Os dois parâmetros são argce argv. Veja como eles devem serdeclarados:main(int argc, char *argv[ ])
n Argc conterá o número de parâmetrospassados e argv conterá osparâmetros.
![Page 170: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/170.jpg)
170 Curso de Linguagem C
Exemplo
/* Função para imprimir os parâmetros */
main(int argc, char *argv[ ]){
int i;for (i = 0; i < argc; i ++)
printf(“argv[%d]: %s\n”, i, argv[i]);}
![Page 171: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/171.jpg)
171 Curso de Linguagem CFunções que devolvem nãointeiros
n Quando o tipo de uma função não édeclarado, por default, ele será int.
n Se for necessário definir uma função queretorna valores de outros tipos, o tipo deveser especificado.
n Quando a função não é do tipo int, ela deveser identificada antes de ser chamada daprimeira vez. Assim, o compilador poderágerar um código correto para a chamada àfunção.
![Page 172: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/172.jpg)
172 Curso de Linguagem C
Protótipos
n Como vimos, as funções que nãoretornam int, devem ser identificadasantes de serem referenciadas, paraisto, deve ser definido um protótipo paraa função.
n Forma geraltipo nome_função(tipo_parâmetros);
![Page 173: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/173.jpg)
173 Curso de Linguagem C
Exemplo
float metade(float);
main(){
printf(“%f\n”, metade(3));}
float metade(float numero){
return (numero / 2);}
![Page 174: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/174.jpg)
174 Curso de Linguagem C
Recursividade
n A linguagem C permite que as própriasfunções se chamem. A estacaracterística damos o nome derecursividade.
n Existem muitos problemas que setornariam extremamente difíceis deserem implementados sem arecursividade.
![Page 175: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/175.jpg)
175 Curso de Linguagem C
Preprocessador
n Antes do programa ser compilado, ele ésubmetido ao preprocessador. Estacaracterística é muito útil.
n Todos os comandos do preprocessadorsão iniciados por um sinal #, sendo osdois mais usados:• #define• #include
![Page 176: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/176.jpg)
176 Curso de Linguagem C
#define
n O comando define serve para definir umidentificador e uma string. O compiladorsubstituirá o identificador pela stringtoda vez que for encontrado no arquivo-fonte. O identificador é chamado denome de macro, e o processo desubstituição é chamado de substituiçãode macro.#define indentificador string
![Page 177: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/177.jpg)
177 Curso de Linguagem C
Exemplo
#define mensagem “Isto é um teste.\n”
#define verdadeiro 1#define falso !verdadeiro
main()
{if (verdadeiro) printf(mensagem);
if (falso) printf(mensagem);}
![Page 178: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/178.jpg)
178 Curso de Linguagem C
#include
n Instrui o compilador a incluir um outro arquivofonte com aquele que contém o comando#include. O nome do arquivo a ser incluído deveestar entre aspas ou entre o sinal de maior emenor.
n Se o nome do arquivo for colocado entre aspas,o compilador procurará pelo arquivo na seguinteseqüência: diretório atual, diretórios configuradosno compilador e diretórios padrões. Caso o nomedo arquivo esteja entre < >, não será procuradono diretório atual.
![Page 179: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/179.jpg)
179 Curso de Linguagem C
Entrada e saída
n A entrada e saída em C é feitautilizando-se funções da biblioteca docompilador, não existe nenhumapalavra reservada para esta finalidade.
n Existem dois sistemas de entrada esaída em C:• Bufferizado• Não bufferizado
n O padrão ANSI só define o primeiro.
![Page 180: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/180.jpg)
180 Curso de Linguagem C
Arquivo cabeçalho stdio.h
n Muitas bibliotecas em C exigem quecertos tipos de dados ou outrasinformações sejam partes dosprogramas que as usam. Para isto, énecessário utilizar o comando #includee incluir arquivos cabeçalho com estasdefinições nos programas.#include <stdio.h>
![Page 181: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/181.jpg)
181 Curso de Linguagem C
Filas de bytes
n O sistema de arquivo bufferizadodestina-se a trabalhar com umavariedade de dispositivos, que incluiterminais, acionadores de disco eacionadores de fita.
n Embora cada dispositivo seja diferente,o sistema de arquivo bufferizadotransforma cada um em um dispositivológico chamado fila de bytes.
![Page 182: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/182.jpg)
182 Curso de Linguagem C
Arquivos
n Em C, um arquivo é um conceito lógicoque o sistema pode aplicar a qualquercoisa, desde arquivos em disco atéterminais.
n Para associar uma fila de bytes a umdeterminado arquivo, basta realizaruma operação de abertura.
n Todas as filas de bytes são iguais.n Nem todos os arquivos são iguais.
![Page 183: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/183.jpg)
183 Curso de Linguagem CSistema de entrada e saídabuferizado
n O sistema de entrada e saídabufferizado é composto de váriasfunções relacionadas.
n Para utiliza-las, é necessário incluir oarquivo-cabeçalho stdio.h no programa.
![Page 184: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/184.jpg)
184 Curso de Linguagem C
O ponteiro do arquivo
n É o que mantém unido o sistema deentrada e saída bufferizado.
n É um ponteiro para a informação quedefine vários aspectos do arquivo,incluindo nome, status e posiçãocorrente.
n Um ponteiro de arquivo é uma variávelde ponteiro do tipo FILE, que é definidaem stdio.h.
![Page 185: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/185.jpg)
185 Curso de Linguagem C
Algumas funções
Nome Funçãofopen() abre uma filafclose() fecha uma filaputc() grava um caracter na filagetc() lê um caracter na filafseek() ajusta a posição atual no arquivofprintf() printf para a filafscanf() scanf para a filafeof() indica se a marca EOF foi encontradaferror() indica se ocorreu um errorewind() reposiciona no início do arquivoremove apaga um arquivo
![Page 186: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/186.jpg)
186 Curso de Linguagem C
fopen()
n Abre uma fila de bytes para ser usada e ligaum arquivo a esta fila.
n Protótipo:FILE *fopen(char *nome_arq, char *modo);
n onde modo é uma string que contém o statusde abertura desejado.
n nome_arq é uma string com um nome dearquivo válido para o sistema operacional,podendo incluir drive e diretório.
n Retorna NULL ( = 0 ) se a função falhar.
![Page 187: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/187.jpg)
187 Curso de Linguagem C
Valores legais de modoModo Significado
r abre um arquivo-texto para leituraw cria um arquivo-texto para gravaçãoa anexa a um arquivo-textorb abre um arquivo binário para leiturawb cria um arquivo binário para gravaçãoab anexa a um arquivo binárior+ abre um arquivo-texto para leitura/gravaçãow+ cria um arquivo-texto para leitura/gravaçãoa+ abre ou cria um arquivo-texto para leitura/gravaçãor+b abre um arquivo binário para leitura/gravaçãow+b cria um arquivo binário para leitura/gravaçãoa+b abre um arquivo binário para leitura/gravaçãort abre um arquivo-texto para leiturawt cria um arquivo-texto para gravaçãoat anexa a um arquivo-textor+t abre um arquivo-texto para leitura/gravaçãow+t cria um arquivo-texto para leitura/gravaçãoa+t abre ou cria um arquivo-texto para leitura/gravação
![Page 188: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/188.jpg)
188 Curso de Linguagem C
fclose()
n Fecha uma fila que foi aberta comfopen().
n Todas as filas devem ser fechadasantes que o programa termine.
n Protótipo:int fclose(FILE *arquivo);
![Page 189: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/189.jpg)
189 Curso de Linguagem C
ferror() e rewind()
n ferror() determina se a última operaçãocom arquivos produziu um erro(devolvendo 1 caso tenha ocorrido).
n rewind() reposiciona no início doarquivo.
n Protótipos:int ferror(FILE *arquivo);
void rewind(FILE *arquivo);
![Page 190: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/190.jpg)
190 Curso de Linguagem C
getc() e putc()
n São utilizados para ler e gravar caracteresnuma fila previamente aberta.
n Protótipo:int putc(int caracter, FILE *arquivo);int getc(FILE *arquivo);
n putc devolve o caracter gravado em caso desucesso, em caso de erro EOF(definido emstdio.h) será devolvido.
n getc devolve um inteiro mas com o bytesuperior zero. Ele devolve EOF quandoalcançar o fim do arquivo.
![Page 191: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/191.jpg)
191 Curso de Linguagem C
fprintf() e fscanf()
n São os correspondentes a printf e scanfdo sistema de entrada e saída doconsole. A diferença é que o primeiroparâmetro é um ponteiro de arquivo.
n Protótipos:int fprintf(FILE *arq, const char *controle, ...);
int fscanf(FILE *arq, const char *controle, ...);
![Page 192: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/192.jpg)
192 Curso de Linguagem C
fgets() e fputs()
n São as correspondentes a gets e putspara arquivos.
n Protótipos:char *fputs(char *str, FILE *arquivo);
char *fgets(char *str, int comprimento, FILE*arquivo);
n Observe que em fgets pode serespecificado o comprimento máximo dastring e, ao contrário do gets, o \n final écolocado na string.
![Page 193: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/193.jpg)
193 Curso de Linguagem C
getw() e putw()
n São utilizadas para ler e gravar inteiros.n Elas trabalham exatamente como getc
e putc com exceção de gravareminteiros.
n Protótipos:int getw(FILE *arquivo);int putw(int numero, FILE *arquivo);
![Page 194: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/194.jpg)
194 Curso de Linguagem C
fread() e fwrite()
n São funções utilizadas para ler e gravar blocos dedados nos arquivos.
n Protótipos:int fread(void *buffer, int tamanho, int quantidade, FILE
*arquivo);int fwrite(void *buffer, int tamanho, int quantidade, FILE
*arquivo);
n buffer é um ponteiro para a região da memória quepossui os dados, tamanho é o tamanho em bytes decada unidade, quantidade determina quantos itens(cada um contendo tamanho bytes) serão lidos ougravados e arquivo é um ponteiro de arquivo parauma fila previamente aberta.
![Page 195: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/195.jpg)
195 Curso de Linguagem C
fseek()
n É utilizado para efetuar operações de leitura egravação aleatórias sob o sistema de entrada esaída bufferizado.
n Protótipo:int fseek(FILE *arquivo, long int num_bytes, int origem);
n fseek retorna zero em caso de sucesso.n Arquivo é o ponteiro de arquivo, num_bytes é o
número de bytes desde origem até chegar a novaposição e origem é um dos seguintes macros:
Origem Nomeinício do arquivo SEEK_SETposição corrente SEEK_CURfim do arquivo SEEK_END
![Page 196: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/196.jpg)
196 Curso de Linguagem CAs filas de bytes stdin, stdout estderr
n Existem 3 filas de bytes especiais quesão abertas automaticamente quando oprograma é inicializado:• stdin entrada padrão• sdtout saída padrão
• stderr erro padrão
n Elas podem ser usadas para efetuaroperações de entrada e saída noconsole.
![Page 197: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/197.jpg)
197 Curso de Linguagem C
Exemplo
#include <stdio.h>main(int argc, char *argv[ ]){ FILE *entrada, *saida;
char ch;if (argc != 3) {
printf(“Não foi digitado o nome da origem.\n”);exit(1);
}if (!(entrada = fopen(argv[1], “rb”)) {
printf(“arquivo de origem não achado.\n”);exit(1);
}
![Page 198: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/198.jpg)
198 Curso de Linguagem C
Exemplo (continuação)
if (!(saida = fopen(argv[2], “wb”)) {printf(“Arquivo destino não pode ser aberto.\n”);exit(1);
}/* esta é a linha que copia o arquivo */
while (!feof(entrada)) putc(getc(entrada), saida);fclose(entrada);fclose(saida);
}
![Page 199: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/199.jpg)
199 Curso de Linguagem CTipos de dados definidos pelosusuários
n Em C podem ser criados 5 tiposdiferentes de dados personalizados:• estrutura
• campo de bit• união
• enumeração• typedef
n O uso de tipos definido pelo usuáriofacilita a programação e dá maior poderao programador.
![Page 200: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/200.jpg)
200 Curso de Linguagem C
Estruturas
n Em C, uma estrutura é uma coleção devariáveis que são referenciadas pelo mesmonome.
n É uma forma conveniente de manter juntasinformações relacionadas.
n Forma geral:struct nome_estrutura {
tipo1 var1;tipo2 var2;
} var_estrutura;
![Page 201: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/201.jpg)
201 Curso de Linguagem CDeclarando variáveis do tipoestrutura
n Além de poder declarar variáveis dotipo da estrutura durante a definição daestrutura, elas podem ser declaradasda seguinte forma:struct nome_estrutura nome_variável;
![Page 202: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/202.jpg)
202 Curso de Linguagem CAcessando variáveis do tipoestrutura
n Para acessar variáveis do tipoestrutura, utiliza-se o operador . (ponto).
n Forma geral:nome_variavel.nome_elemento;
![Page 203: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/203.jpg)
203 Curso de Linguagem C
Exemplo
struct pessoa {
char nome[21];int idade;
} primeiro;main() {
struct pessoa segundo;strcpy(primeiro.nome, “José”);
primeiro.idade = 20;segundo = primeiro;
}
![Page 204: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/204.jpg)
204 Curso de Linguagem C
Vetores e matrizes de estruturas
n Podem ser declarados vetores ematrizes de estruturas, para isto,usamos a forma geral:struct nome_estrutura nome_var[t1][t2]...[tn];
n Exemplo:struct pessoa pessoas[5];
![Page 205: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/205.jpg)
205 Curso de Linguagem C
Ponteiros para estruturas
n Em C, podem ser declarados ponteirospara estruturas.
n Forma geral:struct pessoa *primeiro;
![Page 206: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/206.jpg)
206 Curso de Linguagem CVantagens de se usar ponteirospara estruturas
n Fazer chamada por referência parauma função;
n Criar listas ligadas com estruturasdinâmicas de dados usando o sistemade alocação.
n É mais rápido passar estruturasgrandes por referência (usandoponteiros) do que por valor, poisestamos passando apenas umendereço.
![Page 207: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/207.jpg)
207 Curso de Linguagem CAcessando os elementos usandoponteiros para estruturas
n Veja a declaração:struct pessoa *primeiro, segundo;
strcpy(segundo.nome, “José”);segundo.idade = 10;
primeiro = &segundo;
n Para acessar o campo idade deprimeiro:(*primeiro).idade
primeiro -> idade
![Page 208: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/208.jpg)
208 Curso de Linguagem CVetores, matrizes e estruturasdentro de estruturas
n Os elementos das estruturas podem sersimples ou complexos, assim, podemoscolocar vetores, matrizes e atéestruturas dentro das estruturas. Veja:struct complexa {
char setor[21];
struct pessoa funcionarios[50];}
![Page 209: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/209.jpg)
209 Curso de Linguagem C
Campos de bit
n C possui metodos para acessarsomente um bit dentro de um byte. Istoé útil para:• Economizar memória declarando várias
variáveis booleanas num só byte
• Comunicar com dispositivos quetransmitem informações diversascodificadas em bytes
• Rotinas de codificação que precisamacessar bits dos bytes
![Page 210: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/210.jpg)
210 Curso de Linguagem C
Como declarar campos de bit
n Os campos de bit só podem serdeclarados dentro de estruturas.
n Forma geral:struct nome_estrutura {
tipo1 var1 : comprimento;tipo2 var2 : comprimento;
} nome_var ;
n Os tipos podem ser: int, signed eunsigned. Quando o tamanho é 1, eledeve ser obrigatoriamente unsigned.
![Page 211: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/211.jpg)
211 Curso de Linguagem C
Exemplo
struct dispositivo {
unsigned ativo : 1;unsigned pronto : 1;
unsignet erro : 1;unsigned : 2;
unsigned ultimo_erro : 3;}
![Page 212: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/212.jpg)
212 Curso de Linguagem C
Uniões
n Em C, uma união é uma localização dememória que é usada por muitasvariáveis diferentes, que podem ser detipos diferentes.
n A declaração e o acesso a uma união éfeita de forma semelhante asestruturas, só que usando a palavrareservada union no lugar de struct.
![Page 213: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/213.jpg)
213 Curso de Linguagem C
Exemplo
union dois_bytes {
int inteiro;char caracter[2];
} valor;main()
{valor.inteiro = ‘A’ * 256 + ‘B’;
printf(“%c %c”, valor.caracter[0],valor.caracter[1]);
}
![Page 214: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/214.jpg)
214 Curso de Linguagem C
Enumerações
n Enumeração é um conjunto deconstantes inteiras com nome e eespecifica todos os valores legais queuma variável daquele tipo pode ter.
n Para declarar:enum nome_tipo { lista de constantes }
nome_var;
n Todas as constantes receberão valoresinteiros a começar por zero, a não serque seja especificado o contrário.
![Page 215: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/215.jpg)
215 Curso de Linguagem C
Exemplo
enum tamanhos {pequeno, medio, grande =5} tamanho;
main(){
tamanho = pequeno; printf(“%d”, tamanho);tamanho = medio; printf(“%d”, tamanho);
tamanho = grande; printf(“%d”, tamanho);}
![Page 216: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/216.jpg)
216 Curso de Linguagem C
sizeof
n Como estamos trabalhando só comcomputadores IBM PC, até agora, não nospreocupamos com os tamanhos dasvariáveis pois já sabemos seus valores.
n C possui o operador sizeof com a finalidadede garantir a portabilidade dos programasentre ambientes cujos tamanhos dasvariáveis sejam diferentes.
n sizeof retorna a quantidade de bytes queuma variável ocupa na memória.
![Page 217: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/217.jpg)
217 Curso de Linguagem C
Exemplos
n Alocar memória para 10 floats:float *numeros;
numeros = (float *) calloc(10, sizeof(float));
n Imprimir o tamanho gasto por umavariável inteira:printf(“%d”, sizeof(int));
![Page 218: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/218.jpg)
218 Curso de Linguagem C
typedef
n C permite que sejam definidosexplicitamente novos tipos de dadosusando a palavra reservada typedef.
n typedef não cria realmente uma novaclasse de dados, mas sim define umnovo nome para uma tipo já existente.
n O uso do typedef torna os programasem C mais legíveis e mais portáteispois bastará alterar a definição dotypedef quando trocar de ambiente.
![Page 219: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/219.jpg)
219 Curso de Linguagem C
Exemplo
n Após as definições:typedef float balanco;
typedef char string[21];typedef struct pessoa tipo_pessoa;
n As seguintes declarações serãoequivalentes:
balanco valor; float valor;string frase; char frase[21];tipo_pessoa aluno; struct pessoa aluno;
![Page 220: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/220.jpg)
220 Curso de Linguagem C
Operadores avançados
n C possui vários operadores especiaisque aumentam em muito sua força eflexibilidade - especialmente naprogramação a nível de sistema.
![Page 221: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/221.jpg)
221 Curso de Linguagem C
Operadores bit a bit
n Como C foi projetada para substituir alinguagem assembly na maioria dastarefas de programação, ela possui umcompleto arsenal de operadores bit abit.
n Os operadores bit a bit só podem serusados nos tipos char e int.
![Page 222: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/222.jpg)
222 Curso de Linguagem C
Tabela dos operadores bit a bit
Operador Ação& E| OU^ OU exclusivo (XOR)~ Complemento de um (NOT)
>> Deslocar para direita<< Deslocar para esquerda
![Page 223: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/223.jpg)
223 Curso de Linguagem C
Operador ?
n O operador ? pode ser usado parasubstituir comandos if / else quetenham a forma geral:if (condição)
expressão1;
elseexpressão2;
n Forma geral:condição ? expressão1 : expressão 2;
![Page 224: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/224.jpg)
224 Curso de Linguagem C
Exemplo
n A seqüência de comandos:x = 10;
if (x > 9) y = 100;else y = 200;
n pode ser substituída por:x = 10;
y = x > 9 ? 100 : 200;
![Page 225: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/225.jpg)
225 Curso de Linguagem C
Formas abreviadas
n C permite que sejam escritas formasabreviadas dos comandos deatribuição. Os comandos:x = x + 10;y = y * 20;
z = z - 5;
n podem ser reescritos da forma:x += 10;y *= 20;
z -= 5;
![Page 226: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/226.jpg)
226 Curso de Linguagem C
Operador vírgula
n O operador vírgula é usado para juntarvárias expressões. O compiladorsempre avalia o lado esquerdo davírgula como void. Assim, a expressãodo lado direito ficará sendo o valor detoda expressão separada por vírgula.
n Por exemplo:x = (y = 3, y + 1);
n Atribuirá 3 a y e 4 a x.
![Page 227: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/227.jpg)
227 Curso de Linguagem C
Parênteses e colchetes
n C considera os parênteses e oscolchetes como operadores.
n Os parênteses executam a tarefaesperada de aumentar a precedênciados operadores que estão dentro deles.
n Os colchetes executam a indexação devetores e matrizes.
![Page 228: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/228.jpg)
228 Curso de Linguagem C
Resumo de precedênciaMaior ( ) [ ] ->
! ~ ++ -- - (type cast) * & sizeof* / %+ -<< >>< <= >=== !=&^|&&||?= += -= *= /=
Menor ,
![Page 229: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/229.jpg)
229 Curso de Linguagem C
Funções comuns
n A biblioteca padrão de funções dalinguagem C é muito ampla.
n Os programas em C fazem uso intensodas funções da biblioteca.
n Os programadores iniciantes tendem areescrever funções já existentes nasbibliotecas.
![Page 230: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/230.jpg)
230 Curso de Linguagem C
Funções matemáticas
n Os protótipos das funções matemáticas ficamno arquivo math.h. Veja alguns protótipos:double sin(double arg);double cos(double arg);double tan(double arg)double exp(double arg);double log(double num);double log10(double num);double pow(double base, double exp);double sqrt(double num);
![Page 231: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/231.jpg)
231 Curso de Linguagem CAlguns erros comuns deprogramação
n Por ser uma linguagem que dá muitopoder ao programador, também é muitofácil de errar em C.
n Como o compilador aceita praticamentetudo o que se escreve, o programadordeve ter atenção redobrada na hora deprogramar.
![Page 232: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/232.jpg)
232 Curso de Linguagem CErros de ordem deprocessamento
n Os operadores de incremento edecremento são usados na maioria dosprogramas em C, e a ordem deocorrência da operação é afetada pelofato de esses operadores precederemou sucederem a variável. Logo, se y=10x = y++;
n será diferente dex = ++y;
![Page 233: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/233.jpg)
233 Curso de Linguagem C
Problemas com ponteiros
n O mau-uso de ponteiros em C podecausar muitos problemas. Veja os doisexemplos ERRADOS abaixo:int *x;char *p;
*p = malloc(100);*x = 10;
![Page 234: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/234.jpg)
234 Curso de Linguagem C
Redefinindo funções
n É possível, mas não recomendado, que sejacriada uma função com o mesmo nome deuma existente na biblioteca de C. Isto farácom que qualquer chamada a esta funçãoseja direcionada para a nova.
n A pior parte é que, mesmo o nosso programanão referenciando uma função da biblioteca,as próprias funções da biblioteca podemestar se referenciando, o que causaráproblemas da mesma forma. Por exemplo, oprogramador reescreveu a função getc masesqueceu-se que a função scanf a chama.
![Page 235: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/235.jpg)
235 Curso de Linguagem C
Erros por um
n Todos os índices dos vetores ematrizes em C começam em 0. Logo, oprograma abaixo está errado.main(){
int x, num[100];for (x = 1; x <= 100; x ++)
num[x] = x;}
![Page 236: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/236.jpg)
236 Curso de Linguagem C
Erros de limite
n Muitas funções em C (inclusive as dasbibliotecas) não possuem (ou possuempouca) verificação de limites. Assim, achamada a gets abaixo pode gerar umproblema caso o usuário digite maisque 20 caracteres.main()
{ char texto[21];gets(texto);
}
![Page 237: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/237.jpg)
237 Curso de Linguagem COmissões de declaração defunção
n Esquecer de definir o protótipo de umafunção pode causar erro pois ocompilador estará esperando sempreque as funções não declaradasretornem um inteiro. O mesmoproblema ocorre também com osparâmetros.
![Page 238: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/238.jpg)
238 Curso de Linguagem C
Erros de argumentos de chamada
n Os argumentos passados a uma funçãodevem ser do mesmo tipo do esperadopor elas. O programa abaixo estáerrado:main(){
int x;char string[10];
scanf(“%d%s”, x, string);}
![Page 239: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/239.jpg)
239 Curso de Linguagem C
Exercício (parte 1)
n Faça um programa que leia 5 nomescom suas respectivas idades e mostre omaior e o menor.
n Vamos dividir o problema em partes,primeiro vamos definir uma estruturacontendo um campo nome e um campoidade:typedef struct {
char nome[21];
int idade; } pessoa;
![Page 240: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/240.jpg)
240 Curso de Linguagem C
Exercício (parte 2)
n Vamos definir a função mais_velho querecebe 2 ponteiros do tipo pessoa eretorna um ponteiro para a pessoa maisvelha:pessoa *mais_velho(pessoa *p1, pessoa
*p2);{
if (p1 -> idade < p2 -> idade) return p2;else return p1;
}
![Page 241: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/241.jpg)
241 Curso de Linguagem C
Exercício (parte 3)
n Vamos definir a função mais_novo querecebe 2 ponteiros do tipo pessoa eretorna um ponteiro para a pessoa maisnova:pessoa *mais_novo(pessoa *p1, pessoa
*p2);{
if (p1 -> idade > p2 -> idade) return p2;else return p1;
}
![Page 242: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/242.jpg)
242 Curso de Linguagem C
Exercício (parte 4)
n Vamos definir a função le_pessoa querecebe um ponteiro do tipo pessoa e faza leitura do teclado:void le_pessoa(pessoa *p){
printf(“Nome: ”);gets(p -> nome);
printf(“Idade: ”);scanf(“%d”, p -> idade);
}
![Page 243: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/243.jpg)
243 Curso de Linguagem C
Exercício (parte 5)
n Vamos definir a função mostra_pessoaque recebe um ponteiro para umapessoa e mostra seus dados na tela.void mostra_pessoa(pessoa *p){
printf(“Nome: %s\nIdade: %d\n”, p->nome,p->idade);
}
![Page 244: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/244.jpg)
244 Curso de Linguagem C
Exercício (parte 6)
n Agora só falta declarar as variáveis edefinir o programa principal, que serácomposto por um loop de entrada, umloop de pesquisa e a apresentação dosresultados.
n Dividindo o código do programa, ficamais fácil resolver os problemas everificar os erros que possam ocorrer.
![Page 245: Curso de Linguagem C - Instituto de Computação€¦ · 8 Linguagem feita para Curso de Linguagem C programadores n Ao contrário do que possa parecer, nem todas as linguagens foram](https://reader035.vdocuments.com.br/reader035/viewer/2022070805/5f03b67e7e708231d40a6764/html5/thumbnails/245.jpg)
245 Curso de Linguagem C
Exercício (parte 7)
main(){ pessoa pessoas[5], *velho, *novo;
int i;for(i = 0; i < 5; i++) le_pessoa(&pessoas[i]);velho = novo = pessoas;for(i = 1; i < 5; i++) {
velho = mais_velho(velho, &pessoas[i]);novo = mais_novo(novo, &pessoas[i]);
}puts(“O mais novo é\n”); mostra_pessoa(novo);puts(“O mais velho é\n”); mostra_pessoa(velho);
}