SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
FATEC de Santo André
Tecnologia em Eletrônica Automotiva
Linguagem e Técnicas de Programação
Notas de Aula
P f R é iProf.: Rogério
Email: fatec.sa.informatica@gmail.com
Página da disciplina: http://sites.google.com/site/fatecprogramacao
1
Objetivo da disciplina
Fornecer noções básicas de lógica, algoritmos e técnicas de programação, utilizando a linguagem de
programação C.
Conteúdo ProgramáticoConteúdo Programático
1. Introdução à lógica de programação;
2. Algoritmos: pseudocódigo e fluxograma;
3 E t t d t l i l d l ã d ti ã3. Estruturas de controle sequencial, de seleção e de repetição;
4. Técnicas básicas de programação, conceitos e tipos de linguagens de programação.
5. Conceitos de programação estruturada, compilação e interpretação;
6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções;6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções;
7. Vetores e matrizes;
8. Strings;
9. Funções;
10 P t i10. Ponteiros;
11. Manipulação de arquivos;
12. Compilador e ambiente de desenvolvimento para a linguagem C.
Bibliografia utilizada na disciplina
- Linguagem C. Luis Damas; LTC Editora, 10a edição, 2007.
2
- C Completo e Total. Herbert Schildt. Makron Books, 3a edição, 1996.
- Primeiro Curso de Programação em C. Edson L. F. Senne; Visual Books. 2a edição, 2006.
Linguagem e Técnicas de Programação
Capítulo 1Capítulo 1
Algoritmo eAlgoritmo e
Comandos básicos de programaçãoComandos básicos de programaçãop g çp g ç
3
AlgoritmoAlgoritmo
• Algoritmo é a descrição de um padrão de comportamento, expresso pela
execução de instruções até que se alcance uma determinada condiçãoexecução de instruções, até que se alcance uma determinada condição.
• Um programa de computador é composto por um ou mais algoritmos.
• Exemplos de algoritmos:
a. Preparar um prato de comida;
b. Controle de injeção de combustível;j ç ;
c. Compra e venda automática de ações na bolsa de valores.
• Exercício:
- Criar um algoritmo para liberar o acesso a um site fornecendo login e senha
4
- Criar um algoritmo para liberar o acesso a um site, fornecendo login e senha.
VariVariááveisveis
• Variável: nome de um local de memória onde se pode colocar
á à áqualquer valor, do tipo básico associado à variável.
• Tipos básicos de variável:• Tipos básicos de variável:
– char: guarda um caractere.
– int: guarda um número inteiro.g
– float e double: guardam um número real.
• Exemplos:p
char primeiraLetra;
int anoFabricacao;
float velocidadeCarro;
double velocidadeLuz;
5
Comandos bComandos báásicossicos
2) Operadores lógicos:1) Atribuição: ) p g
e &&
ou ||
1) Atribuição:
quilometroRodado = 23458;
a = b;
não !temperaturaAlta = 23.56;
3) Operadores aritméticos:
mais +
4) Operadores relacionais:
é igual? ==mais +
menos -
vezes *
é igual? ==
é diferente? !=
é maior? >
dividir /
resto %
é menor? <
é maior ou igual? >=
é
6
decrementa --
incrementa ++
é menor ou igual? <=
Linguagem e Técnicas de Programação
C í l 2Capítulo 2
Lógica de ProgramaçãoLógica de Programaçãog g çg g ç
7
Lógica de programação:Lógica de programação:g p g çg p g ç
Bloco de comandosBloco de comandos –– execução sequencialexecução sequencial
Pseudocógido Fluxograma
8
Estrutura de decisãoEstrutura de decisãoEstrutura de decisãoEstrutura de decisão
Alternativa simples Alternativa composta
9
Estruturas de decisãoEstruturas de decisão aninhadasaninhadasEstruturas de decisãoEstruturas de decisão aninhadasaninhadas
S t t d d i ã tSe a estrutura de decisão tem apenas um
comando, o uso de chaves é dispensável; caso
contrário, o uso de chaves é obrigatório
se (a > b)
a = a + 5;
senão apenas um comando
{{
se (a > c)
{
b = b + 5;
a = a + 10;
} dois comandos
}
10
Estrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começo
11
Estrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no final
12
Estrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controle
13
Pseudocódigo / FluxogramaPseudocódigo / Fluxograma
Algoritmo que encontra o maior e o menor número digitado no
teclado. Quando é digitado o número 0, o processamento é
interrompido e é impresso na tela os números encontrados.
()encontraMaiorMenor()
{
int maior, menor, valor;
l l l d ()valor = leTeclado();
maior = valor;
menor = valor;
( l ! 0)enquanto (valor != 0)
{
se (valor > maior)
maior = valor;
ãsenão
{
se (valor < menor)
menor = valor;
}}
valor = leTeclado();
}
14
imprima(maior, menor);
}
ExercíciosExercícios
1) Descrever em pseudocódigo e em fluxograma um1) Descrever em pseudocódigo e em fluxograma, um
algoritmo que imprime na tela a tabuada de um número
digitado no teclado.
2) Descrever em pseudocódigo e em fluxograma um2) Descrever em pseudocódigo e em fluxograma, um
algoritmo que lê um número inteiro de um teclado, calcula
tó i d t d ú t 1 úa somatória de todos os números entre 1 e o número
digitado e escreve na tela o valor obtido.
15
Linguagem e Técnicas de Programação
Capítulo 3
Introdução à linguagem de programação CIntrodução à linguagem de programação CIntrodução à linguagem de programação CIntrodução à linguagem de programação C
16
Linguagens de programaçãoLinguagens de programaçãog g p g çg g p g ç
• Linguagem de programação: conjunto finito de símbolos com os
i d t dquais se escrevem programas de computador.
• Exemplos de linguagem de programação: C, C++, Java, Pascal,
C b l B i ASP A blCobol, Basic, ASP, Assembly.
• Dependendo da linguagem de programação, os programas podem
ser compilados, interpretados ou montados.
• Linguagens com compilação: C, C++, Pascal, Cobol etc.
• Linguagens com interpretação: Basic, ASP, Perl etc.
• Linguagens com compilação e interpretação: Java.
• Linguagem de montagem ou Assembly é uma notação legível por
humanos para o código de máquina.
17
Linguagem de programação com compilaçãoLinguagem de programação com compilaçãog g p g ç p çg g p g ç p ç
• Programa descrito em uma linguagem de programação:g g g p g ç
sequência de comandos compreendida por um ser humano.
• Programa descrito em código de máquina: sequência de 0s e 1sPrograma descrito em código de máquina: sequência de 0s e 1s
compreendida por uma CPU - Unidade Central de Processamento.
• Compilador: conversor de programas escritos em linguagem deCompilador: conversor de programas escritos em linguagem de
programação para códigos de máquina de uma CPU.
while(i < 10)
{
10011101
00110001{
printf("%d", i);
i++;
}
compilador
00110001
01100111
11110101
11110001
18
} 11110001
Comparação entre linguagens de programaçãoComparação entre linguagens de programaçãop ç g g p g çp ç g g p g ç
ódi í l t d tcódigo nível vantagens desvantagens
código de
bai o
acesso a
todos os dificuldade deg
máquina
baixo
recursos do
hardware
programação
erros de
C médio
acesso a
todos os
recursos do
h d
erros de
programação podem
comprometer o
funcionamento do
hardware
funcionamento do
hardware
J lt
facilidade de
baixo aceso aos
dJava alto
programação
recursos do
hardware
19
CódigoCódigo--fonte e códigofonte e código--executávelexecutávelgg gg
• Código-fonte: contém todos os comandos de um programa,g p g ,
expressos em uma linguagem de programação.
• Código-executável: comandos de um programa convertidos para oCódigo executável: comandos de um programa convertidos para o
código de máquina de uma CPU.
• O compilador gera o código-executável, caso não encontre erros noO compilador gera o código executável, caso não encontre erros no
código-fonte.
• No sistema operacional Windows arquivos com código-executávelNo sistema operacional Windows, arquivos com código executável
possuem geralmente (mas não necessariamente), as extensões .exe
e .dll.
• No sistema operacional Linux (ou Unix), arquivos com código-
executável possuem geralmente (mas não necessariamente), a
20
extensão .sh, entre outras.
Linguagem de programação CLinguagem de programação Cg g p g çg g p g ç
O C é uma linguagem de propósito geral pertencendo a uma• O C é uma linguagem de propósito geral, pertencendo a uma
família de linguagens cujas características são:
- acesso a recursos de baixo nível;
- geração de código eficiente;geração de código eficiente;
- confiabilidade;
simplicidade;- simplicidade;
- muito utilizada para microprocessadores.
- Ver também: ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/c.pdf
21
Regras geraisRegras gerais
• Os programas, em linguagem C, são compostos por uma ou maisp g , g g , p p
funções.
• As funções podem possuir argumentos e um tipo de retorno.As funções podem possuir argumentos e um tipo de retorno.
• Todo programa inicia-se com uma chamada à função main:
main()
{
comando1;co a do ;
• comando2;
• ...
}}
22
Regras geraisRegras gerais
• A linguagem C faz distinção entre maiúsculas e minúsculas. Exemplo: ag g ç p
variável nomealuno é diferente de nomeAluno.
• Os comandos devem ser finalizados por ponto-e-vírgula.
• O comando inicial das estruturas de decisão e de repetição não são
finalizados por ponto-e-vírgula.
Exemplos: Sem ponto-e-vírgula! Sem ponto-e-vírgula!
if (a > b && d < e) while( a > 0 )
{ {
printf(“mensagem 1”); a = a – 1;
printf(“mensagem 2”); printf(“%d”, a);
} }
Com ponto-e-vírgula! Com ponto-e-vírgula!
23
VariáveisVariáveis
• A linguagem C dispõe de quatro tipos básicos de dados. As declaraçõesg g p q p ç
de variáveis, portanto, podem usar os seguintes tipos:
ValorTamanho (bytes)Tipo
Um caractere (ou, reciprocamente, um inteiro de
-128 a 127)
1char
ValorTamanho (bytes)Tipo
Número inteiro (ANSI: de -32768 a 32767
(atualmente: de -2147483648 a 2147483647)
2 (padrão ANSI)
4 (atualmente)
int
)
Número real (ponto flutuante com precisão simples:
7 dígitos, limitados a: +/-3.4*10+/-38)
4float
(atualmente: de 2147483648 a 2147483647)4 (atualmente)
Número real (ponto flutuante com precisão dupla:
15 dígitos, limitados a: +/-1.7*10+/-308)
8double
24
Palavras reservadas da linguagem CPalavras reservadas da linguagem C
Palavras reservadas pelo padrão ANSI Algumas outras palavras reservadasPalavras reservadas pelo padrão ANSI Algumas outras palavras reservadas
asm
auto double int struct
asm
cdecl
interrupt
break else long switch
case enum register typedef
char extern return union near
far
huge
char extern return union
const float short unsigned
continue for signed void
d f lt t i f l tildefault goto sizeof volatile
do if static while
Observação importante: palavras reservadas não podem ser
usadas como nomes de variáveis
25
usadas como nomes de variáveis.
Bloco de comandosBloco de comandosBloco de comandosBloco de comandos
26
Estrutura de decisãoEstrutura de decisãoEstrutura de decisãoEstrutura de decisão
27
Estrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começo
28
Estrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no final
29
Estrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controle
30
Comando break (abandone)Comando break (abandone)Comando break (abandone)Comando break (abandone)
31
Comando continueComando continueComando continueComando continue
32
Linguagem e Técnicas de Programação
Capítulo 4Capítulo 4
Primeiros programasPrimeiros programas
em Linguagem Cem Linguagem C
33
Função printfFunção printf
Sintaxe: printf ( "expressão de controle", argumentos )
• A função printf permite escrever mensagens no dispositivo padrão deA função printf permite escrever mensagens no dispositivo padrão de
saída (tela).
• A expressão de controle contém caracteres que serão exibidos na tela ep q
pode conter códigos de formatação que indicam o formato em que os
argumentos devem ser impressos.
• Cada argumento deve ser separado por vírgula.
• Exemplos: Expressão de controle argumento
printf(“nnEste eh o numero dois: %d", 2);
printf("Aluno: %s t Nota: %f", "Pedro", 7.5);
Expressão de controle argumento
34
p (  , , );
Função printfFunção printf
- Caracteres de formatação:
%f número em ponto flutuante (float ou double)
%d número em formato decimal
%o número em formato octal
%x número em formato hexadecimal
%c caractere simples
%s cadeia de caracteres%s cadeia de caracteres
n nova linha (pula uma linha)
t tab (insere espaços de uma tabulação)t tab (insere espaços de uma tabulação)
" aspas (usado quando se quer imprimir aspas)
 b ( d d i i i b )
35
 barra (usado quando se quer imprimir uma barra)
Função scanfFunção scanf
Sintaxe: scanf("expressão de controle", argumentos)
• A função scanf permite ler dados formatados da entrada padrão (teclado)
e gravar no(s) endereço(s) de variável(eis)e gravar no(s) endereço(s) de variável(eis).
• A lista de argumentos contém o(s) endereço(s) de variável(eis).
• O operador de endereço em C é referenciado pelo símbolo &, que retorna
o endereço de uma variável ou dispositivo físico.
• Exemplo:
int num;
A variável num recebe o número digitado,
utilizando o operador &
printf("Digite um numero: ");
scanf("%d", &num);
printf(“Numero digitado: %d", num);
%d é substituído pelo valor da
variável num
36
printf( Numero digitado: %d , num);
Comentários no CódigoComentários no Código
• É sempre aconselhável inserir comentários no código para explicar o
funcionamento do programa tornando-o mais legívelfuncionamento do programa, tornando o mais legível.
• Na linguagem C, os comentários são colocados dentro dos marcadores
/* e */ em uma ou mais linhas./ e / em uma ou mais linhas.
• As últimas padronizações da linguagem C permitem também os
comentários de uma linha, utilizando o marcador // .,
Exemplos:
int a;
// Esta linha é um comentário e não tem influência no código// Esta linha é um comentário e não tem influência no código
a = 0;
/* Estas duas linhas também são comentários
37
/
e serão descartadas no momento da compilação */
Ambientes de desenvolvimento paraAmbientes de desenvolvimento para
programação em Linguagem Cprogramação em Linguagem C
Ɣ Ambiente de desenvolvimento ou IDE (Integrated Development
E i t)Environment):
- edição e depuração (debug) do código-fonte;ç p ç ( g) g ;
- compilador C - geração do arquivo-executável.
Ɣ Utilizado para desenvolvimento de programas C e C++;
Ɣ Nesta disciplina: Projetos C – Aplicações de Console.
38
Ambiente de desenvolvimento DevAmbiente de desenvolvimento Dev--C++C++
Procedimentos para criar um arquivo-executável:
1) Crie um projeto na aba Arquivo (Console Application – Projeto C);
2) Dê um nome ao projeto (que será o nome do arquivo-executável);
3) Salve o projeto em uma pasta específica;3) Salve o projeto em uma pasta específica;
4) Crie um arquivo com a extensão .c que contenha a função main;
5) Escreva o código da função main;
6) Compile o código-fonte;
7) Caso o compilador não encontre erros, será gerado o arquivo-
39
) p , g q
executável, com a extensão .exe.
ProgramaPrograma--exemploexemplo
- Primeiro programa: números na telap g
#include <stdio.h>
#include <stdlib h>#include <stdlib.h>
/* Primeiro programa de exemplo */
int main()
{
int i;int i;
for(i = 1; i < 10; i++)
{
printf (“Numero: %dt“, i);
printf (“elevado ao quadrado: %dn”, i*i);
}
return 0;
40
return 0;
}
ProgramaPrograma--exemploexemplo
- Segundo programa: cálculo de fatorialg p g
#include <stdio.h>
#include <stdlib.h>
int main()
{
int fat = 1;int fat 1;
int i, x;
printf("Entre com um numero:");
scanf("%d", &x);
for(i = x; i > 1; i--)
fat = fat * i;;
printf(“Fatorial de %d: %dnnn", x, fat);
t 0
41
return 0;
}
ProgramaPrograma--exemploexemplo
- Terceiro programa: conversão de anos em diasp g
// Programa-exemplo
#include <stdio.h>
#i l d tdlib h#include <stdlib.h>
int main()
{
/* declaracao das variaveis *// declaracao das variaveis /
int dias;
float anos;
printf ("Entre com o numero de dias: "); // imprime mensagem na tela
f ("%d" &di ) // t d d d dscanf ("%d", &dias); // entrada de dados
/* Conversao de dias em anos */
anos = dias/365.0;
/* imprime mensagem na tela */
printf ("nn%d dias equivalem a %f anos.n", dias, anos);
return 0;
}
42
}
ProgramaPrograma--exemploexemplo
#include <stdio.h>
- Quarto programa: valor médio de números digitados
#
#include <stdlib.h>
int main()
{{
int i;
float valor, media;
float soma = 0;;
for(i = 0; i < 10; i++)
{
f("%f" & l )scanf("%f", &valor);
soma = soma + valor;
}
printf(“Soma dos 10 valores lidos: %f", soma);
system(“pause”);
media = soma / 10;
i tf(“V l di d 10 l lid %f" di )
43
printf(“Valor medio dos 10 valores lidos: %f", media);
return 0;
}
Linguagem e Técnicas de Programação
Capítulo 5
VetoresVetoresVetoresVetores
44
VetoresVetores
Vetor é um conjunto de elementos consecutivos, todos do mesmo tipo, que
podem ser acessados individualmente a partir de um único nome.
Vetor unidimensional: tipo nome[tamanho].p [ ]
Vetor multidimensional: tipo nome[tamanho1][tamanho2].
char cidade[60];
int precoData[31][12];
float temperaturaPosicao[50][50][50];
Nos vetores acima cidade tem uma dimensão precoData tem duasNos vetores acima, cidade tem uma dimensão, precoData tem duas
dimensões e temperaturaPosicao tem três dimensões.
45
Vetores de duas dimensões são também conhecidos como matrizes.
Indexação de vetoresIndexação de vetoresIndexação de vetoresIndexação de vetores
O índice de um vetor começa sempre em 0 e termina em n-1, sendo n o
tamanho do vetor:
float notasAlunos[50];
notasAlunos[0] = 7.8;
notasAlunos[1] = 2.5;
notasAlunos[0] = 10.0;
...
notasAlunos[49] = 7.0;
46
Indexação de vetores multidimensionaisIndexação de vetores multidimensionais
Os índices das dimensões de um vetor começam sempre em 0 e terminam em
n-1, m-1 etc, sendo n, m etc o tamanho das dimensões:
int posicao[3][3];
posicao[0][0] = 1;
posicao[0][1] = 2;
1 2 3
4 5 6p
posicao[0][2] = 3;
posicao[1][0] = 4;
7 8 9
posicao[1][0] 4;
posicao[1][1] = 5;
posicao[1][2] = 6;posicao[1][2] = 6;
posicao[2][0] = 7;
posicao[2][1] 8
47
posicao[2][1] = 8;
posicao[2][2] = 9;
Verificação de limites de tamanhoVerificação de limites de tamanho
A linguagem C não faz verificação de limites de vetores: nada impede que seja
ultrapassado o fim de uma dimensão de um vetor. Porém, escrever em área deultrapassado o fim de uma dimensão de um vetor. Porém, escrever em área de
memória não reservada pode “travar” o computador.
Uma atribuição de valores além do limite de um vetor pode “sujar” uma área de
memória reservada para outro programa.
O programador deve sempre verificar se não está atribuindo valores para um
índice maior que o tamanho de uma dimensão do vetor.q
Ex.: o código abaixo será compilado, mas está ERRADO pois invade memória
ã d A i ã á i itid inão reservada. A posição máxima permitida seria precos[4].
float precos[5];
48
precos[8] = 15.50;
Escrever e ler valores em um vetorEscrever e ler valores em um vetor
#include <stdio.h>
int main()
{
float alunos[40][2]; // 40 alunos e 2 provas de cada aluno
int i, j;
float soma1 = 0, soma2 = 0;
// Zerar a matriz antes de utilizá-la
for(i = 0; i < 40; i++)
for(j = 0; j < 2; j++)
alunos[i][j] = 0;
alunos[5][0] = 2.2;
alunos[5][1] = 6.8;
alunos[12][0] = 7.9;
alunos[12][1] = 8.2;
for(i = 0; i < 2; i++)
soma1 = soma1 + alunos[5][i];
for(i = 0; i < 2; i++)
soma2 = soma2 + alunos[12][i];
printf("Media do aluno 5: %f n", soma1/2);
49
printf("Media do aluno 12: %f n", soma2/2);
return 0;
}
ProgramaPrograma--exemploexemplo
#include <stdio.h>
#include <stdlib.h>
/* Programa que declara um vetor com n=10 números e coloca
na i-ésima posição o resultado do fatorial de i
*/
const int n = 10;
int main()
{{
int v[n];
int i;
[0] 1v[0] = 1;
for(i = 1; i < n; i++)
{
v[i] = v[i-1] * i;
printf("Fatorial de %d: %dn", i, v[i]);
}
50
return 0;
}
ProgramaPrograma--exemploexemplo
#i l d < tdi h>#include <stdio.h>
#include <stdlib.h>
// Imprime o rendimento de uma aplicação mensal, com a taxa de juros digitada
i i ()int main()
{
int i;
float deposito[12]; // 12 meses
fl t j t t l 0float juros, total = 0;
printf("Digite a taxa de juros mensal: ");
scanf("%f", &juros);
for(i = 0; i < 12; i++)
{
printf("Digite o deposito %d: ", i+1);
f("%f" &d it [i]) // R b d it iscanf("%f", &deposito[i]); // Recebe os depositos mensais
}
// Calcula os rendimentos
f (i 0 i < 12 i++)for(i = 0; i < 12; i++)
{
printf("Deposito do mes %d: %.2f --- ", i+1, deposito[i]);
total = total + deposito[i] + (total * juros/100.0);
i tf("T t l l d % 2f " t t l)
51
printf("Total acumulado: %.2fn", total);
}
return 0;
}
ExercíciosExercícios
1) Faça um programa que calcula a média das notas de 10 alunos digitadas no
teclado, utilizando um vetor que armazena, em cada uma de suas posições, as
notas individuais.
2) Faça um programa que coloque números digitados no teclado em uma
matriz de 4 linhas e 4 colunas, e apresente a somatória dos valores
armazenados em cada linha e em cada coluna.
52
Linguagem e Técnicas de Programação
C í l 6Capítulo 6
StringsStringsgg
53
StringString –– vetor de caracteresvetor de caracteresgg
Strings são vetores constituídos por caracteres:
char nomeEscola[18];
strcpy(nomeEscola, “FATEC SANTO ANDRE”);strcpy(nomeEscola, FATEC SANTO ANDRE );
// A função strcpy que atribui um conteúdo a string
nomeEscola, que pode armazenar até 17 caracteres., q p
Strings são SEMPRE terminadas com o caracter nulo: 0 Portanto devem terStrings são SEMPRE terminadas com o caracter nulo: 0. Portanto, devem ter
uma posição a mais que a quantidade de caracteres armazenados:
54
Lendo uma string de um tecladoLendo uma string de um teclado
A maneira mais fácil de ler uma string de um teclado é com a função gets() da
biblioteca stdio.h. Outra maneira é com a função scanf:ç
#include <stdio.h>
#include <stdlib h>#include <stdlib.h>
int main()
{
char string1[80], string2[80];
printf("Informe duas strings:n");
gets( string1 );
scanf("%s", &string2);scanf( %s , &string2);
printf("nStrings digitadas: %s, %s", string1, string2);
return 0;
}
55
Funções de manipulação de stringsFunções de manipulação de strings
A linguagem C suporta um grande número de funções que manipulam strings.
A i ãAs mais comuns são:
gets(str): lê uma sequência de caracteres do teclado e grava na string str.
atoi(str): converte uma string em um número inteiro.
atof(str): converte uma string em um número realatof(str): converte uma string em um número real.
strcpy(strDest,strOrig): copia a string strOrig para a string strDest.
strcat(str1, str2): anexa a string str2 no final da string str1.
strlen(str): retorna o tamanho (núm. de caracteres) da string str.
strcmp(str1, str2): compara a string str1 com a string str2. Se forem iguais, retorna
0, se str1 for “posterior” que str2, retorna um número positivo;
56
, p q , p ;
caso contrário, retorna um número negativo.
Exemplos de manipulação de stringsExemplos de manipulação de strings
char teste1[100], teste2[40];
strcpy(teste1, "Informatica"); // copia/atribuicao de valor
strcpy(teste2, teste1); // copia/atribuicao de valor
// tamanho de string
printf(“Tamanho da string: %d”, strlen(teste1));
int numInteiro;
char numString[4] = “1580”;
numInteiro = atoi(numString); // conversao de string em inteiro
strcpy(senha1, "fatec");
strcpy(senha2, “etec”);
if( strcmp(senha1, senha2) == 0 ) // 2 strings iguais
printf(“Senha valida”);
57
ExercíciosExercícios
1) Faça um programa que lê do teclado duas strings, concatena essas strings e
informa o tamanho da string final.
2) F lê d t l d d t i t i2) Faça um programa que lê do teclado duas strings, compara essas strings e
informa qual a ordem alfabética entre elas.
3) Faça um programa que lê dez nomes digitados do teclado, ordena
alfabeticamente esses nomes e apresenta a lista de nomes ordenada.alfabeticamente esses nomes e apresenta a lista de nomes ordenada.
58
Linguagem e Técnicas de Programação
Capítulo 7Capítulo 7
Funções e Escopo de VariáveisFunções e Escopo de Variáveis
59
Funções na linguagem CFunções na linguagem C
• Um programa em C é composto por uma ou mais funções.
• A função main() é obrigatória em todos os programas.
• Funções são utilizadas por dois motivos principais:
reaproveitamento de código que pode ser utilizado em vários pontos doreaproveitamento de código, que pode ser utilizado em vários pontos do
programa;
divisão em blocos funcionais, facilitando seu entendimento.
Exemplo:
tipoRetorno nomeFunção (tipo arg1, tipo arg2,...,tipo argN)
{
comandos da função;
60
}
Funções na linguagem CFunções na linguagem C
Funções e variáveis só podem ser utilizadas em um programa em C depois
de serem declaradasde serem declaradas.
int potencia(int a, int b)t pote c a( t a, t b)
{
int i, ret = 1;
for(i = 0; i < b; i++)
ret = ret * a;
return ret;
}
int main()
{
int resultado;int resultado;
resultado = potencia(5, 6);
printf("5 elevado a 6 vale: %d", resultado);
61
return 0;
}
Protótipos de funçõesProtótipos de funções
Caso o código da função não esteja declarado no arquivo onde a função é
chamada, é preciso declarar seu protótipo. Exemplo:
float reajustaPreco(float taxa, float preco); // prototipo
//Esta função não retorna nunhum valor, por isso é declarada com void
void calcula()void calcula()
{
float novoPreco;
novoPreco = reajustaPreco(1.5, 200.0);
}
float reajustaPreco(float taxa, float preco) // codigo da funcao
{{
preco = preco * taxa;
return preco;
}
62
Arquivos de cabeçalhoArquivos de cabeçalho -- BibliotecasBibliotecas
Protótipos de funções, variáveis e constantes podem ser declarados em
arquivos de cabeçalho, com extensão .h.
Os arquivos de cabeçalho são declarados no início de um arquivo-fonte,
indicando para o linkeditor procurar, em algum arquivo-objeto, o código das
funções utilizadas.
Exemplo: o protótipo da função reajusta() está declarado no arquivo deExemplo: o protótipo da função reajusta() está declarado no arquivo de
cabeçalho economia.h e seu código está em algum outro arquivo-fonte, por
exemplo, no arquivo economia.c:p q
#include "economia.h"
id j t ()void reajusta()
{
float novoPreco;
novoPreco = reajustaPreco(1.5, 200.0);
63
j ( , )
...
}
Variáveis locais e globaisVariáveis locais e globais
• Variáveis locais: são definidas dentro de uma função, sendo válidas somente
dentro da função.
• Variáveis globais: definidas fora das funções, com validade para todas as
funções abaixo do local de definição dessa variável.
• O escopo de uma variável refere-se ao local onde esta variável é definida e
tem validade.
int a; // variável global
void funcaoExemplo(char c)
{
double b; // variável local
int a; // variável local
64}
Variáveis locais e globaisVariáveis locais e globais
• Alterações em variáveis locais não são visualizadas fora da função onde a
variável está declarada. Exemplo:
int a, b; // variáveis globais
void funcao1()
{
int a; // variável local
2a = 2;
b = 4;
}
i t i ()int main()
{
a = 3;
b = 3;
funcao1();
printf("a = %d e b = %d", a, b); // saída: a = 3 e b = 4
return 0;
65
}
ExercíciosExercícios
1) Faça um programa com várias funções, cada uma escrevendo uma palavra
de uma frase.
2) F l i l di it d i t d f di it d2) Faça um programa que leia valores digitados, interrompa quando for digitado
a letra F, e forneça a somatória dos números digitados. Utilize uma função para
a leitura do teclado e outra função para o cálculo da somatória.
66
Linguagem e Técnicas de Programação
C í l 8Capítulo 8
Manipulação de arquivosManipulação de arquivos
67
Manipulação de arquivosManipulação de arquivos
A manipulação de arquivos em C é feita a partir da declaração de um ponteiro
FILE que aponta para um arquivo Exemplo:FILE, que aponta para um arquivo. Exemplo:
FILE *arq;
arq = fopen("dados.txt", “w");q p ( , )
Caso o arquivo não esteja na mesma pasta que o programa executável, é
preciso informar a pasta que o contém:preciso informar a pasta que o contém:
arq = fopen("c:empresadados.txt", "r");
Se o arquivo não for encontrado, o ponteiro assume o valor NULL:
if( arq == NULL )
{
printf("Arquivo nao encontrado");
return 1;
68
return 1;
}
Modos de abertura de arquivosModos de abertura de arquivos
Arquivos podem ser abertos de vários modos, sendo os mais comuns:
"r" arquivo texto para leitura de dados;"r" – arquivo-texto para leitura de dados;
"w" – arquivo-texto para gravação de dados – se o arquivo já existir,
sobrescreve os dados existentes;sobrescreve os dados existentes;
"r+" ou “w+" – arquivo-texto para leitura e escrita de dados;
"a" – arquivo-texto para anexação de dados – se o arquivo já existir,
escreve após os dados existentes;
"rb" – arquivo-binário para leitura de dados;
"wb" – arquivo-binário para gravação de dados – se o arquivo já existir,
sobrescreve os dados existentes;
"ab" – arquivo-binário para anexação de dados – se o arquivo já existir,
69
q p ç q j
escreve após os dados existentes;
Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo
fopen - abre um arquivo
fclose - fecha um arquivofclose - fecha um arquivo
fgetc – lê um caractere de um arquivo
fputc escreve um caractere em um arquivofputc – escreve um caractere em um arquivo
fgets – lê uma linha de um arquivo
f t li h ifputs – escreve uma linha em um arquivo
fscanf – lê uma linha formatada de um arquivo
fprintf – escreve uma linha formatada em um arquivo
feof – retorna verdadeiro para fim de arquivo
fread – lê um bloco de dados de um arquivo
fwrite - escreve um bloco de dados em um arquivo
70
Exemplo de leitura em arquivoExemplo de leitura em arquivo
#include <stdio.h>
#include <stdlib.h>
int main()
{{
float valor, total = 0;
int cont = 0;
FILE *arq;
arq = fopen("precos.txt", "r");
if(arq == NULL)
{
printf(“Arquivo não encontradon");p ( q )
return 1;
}
while(!feof(arq)) // Le as linhas do arquivo até o finalq q
{
fscanf(arq, "%f", &valor);
total = total + valor;
cont++;
}
printf("O valor medio do produto e': %f n", total / cont);
fclose(arq);
71
q
return 0;
}
Exemplo de escrita em arquivoExemplo de escrita em arquivo
#include <stdio.h>
int main()int main()
{
FILE *arquivo;
arquivo = fopen("c:temparquivo txt" “w");arquivo = fopen("c:temparquivo.txt", “w");
if( arquivo == NULL )
{
printf("Nao foi possivel escrever no arquivo");
return 1;
}
fputs("Escrevendo em um arquivo!!!n", arquivo);
fprintf(arquivo, "%fn", 34.6);
printf("Verificar o arquivo c:temparquivo txt n");printf( Verificar o arquivo c:temparquivo.txt n );
fclose(arquivo);
return 0;
72
return 0;
}
#include <stdio.h>
int main()
{
ProgramaPrograma--exemploexemplo
{
float preco, total = 0;
int cont = 0;
FILE *arq = fopen("precos.txt", "r");
Cálculo de preço médio
if(arq == NULL)
{
printf(“Arquivo não encontradon");
O programa abre (fopen) o arquivo precos.txt para
l it (" ") Lê li h li h (f f) l dreturn 1;
}
fscanf(arq, "%f", &preco);
leitura ("r"). Lê linha a linha (fscanf), salvando o
valor de cada linha na variável preco. Quando o
último valor lido for igual ou menor que 0, a estrutura
fscanf(arq, %f , &preco);
while(preco > 0)
{
de repetição while é interrompida. A seguir, é
impresso na tela, pela função printf, o valor da
média de preços obtido (total/cont). A média só é
total = total + preco;
fscanf(arq, "%f", &preco);
cont++;
}
p ç ( / )
impressa na tela caso o arquivo tenha ao menos uma
linha (if(cont > 0)).
}
if(cont > 0)
printf("Media = %f", total/cont);
73
fclose(arq);
return 0;
}
éLinguagem e Técnicas de Programação
Capítulo 9p
Ponteiros na linguagem CPonteiros na linguagem CPonteiros na linguagem CPonteiros na linguagem C
74
PonteirosPonteiros
Um ponteiro é uma variável que guarda um endereço de um outro objeto, por
exemplo o endereço de uma variável ou de um dispositivo físico como umexemplo, o endereço de uma variável ou de um dispositivo físico, como um
display, teclado ou arquivo.
Ponteiro de variáveis: o tipo de um ponteiro deve ser igual ao tipo da variável
que ele armazena o endereço. Exemplos:
char *nome; // ponteiro para variavel do tipo char
int *temp; // ponteiro para variavel do tipo intint temp; // ponteiro para variavel do tipo int
float *ponteiroCalc; // ponteiro para variavel do tipo float
Para obter o endereço de uma variável é utilizado o operador &.
Para obter o valor armazenado em um endereço é utilizado o operador *.
75
PonteirosPonteiros
Exemplos:
int cont;
int val;
int *end1;
int *end2;
cont = 100;
end1 = &cont; // end1 guarda o endereço de contend1 = &cont; // end1 guarda o endereço de cont
val = *end1; // o valor da variável cont é indiretamente atribuído a val
end2 = end1; // end2 guarda o endereço de cont
76
Ponteiro como parâmetro de funçõesPonteiro como parâmetro de funções
Ponteiro de variável passado como argumento de função permite modificar o valor da variávelp g ç p
dentro da função:
#include <stdio.h>
void semPonteiros(int num)
{
num = num + 5;
}
void comPonteiros(int *num)
{
Saída do programa:
Valor original da variável a: 1
*num = *num + 5;
}
int main()
Valor de a após chamar a função semPonteiros: 1
Valor de a após chamar a função comPonteiros: 6
{
int a = 1;
printf("Valor original de a: %d n", a);
semPonteiros(a);
printf("Apos chamar a funcao semPonteiros: a = %d n", a);
comPonteiros(&a);
77
printf("Apos chamar a funcao comPonteiros: a = %d n", a);
return 0;
}
Pequeno programa com ponteirosPequeno programa com ponteiros
#include <stdio h>#include <stdio.h>
int main()
{
char letra = 'q';
int dia = 12;
float nota = 87.8;
char assunto[10] = "medicina";
char *pont1;char pont1;
int *pont2;
float *pont3;
double *pont4;
char *pont5[10];
printf("Valor da variavel letra: %c e seu endereco: %xn", letra, &letra);
printf("Valor da variavel dia: %d e seu endereco: %xn" dia &dia);printf( Valor da variavel dia: %d e seu endereco: %xn , dia ,&dia);
printf("Valor da variavel nota: %2.1f e seu endereco: %xn", nota, &nota);
printf("Valor da variavel assunto: %s e seu endereco: %xn", assunto, assunto);
printf("Endereco do ponteiro pont1: %xn", pont1);
printf("Endereco do ponteiro pont2: %xn", pont2);
printf("Endereco do ponteiro pont3: %xn", pont3);
printf("Endereco do ponteiro pont4: %xn", pont4);
printf("Endereco do ponteiro pont5: %xn" pont5);
78
printf( Endereco do ponteiro pont5: %xn , pont5);
return 0;
}
Saídas do programa anteriorSaídas do programa anterior
Ao ser executado o programa anterior deverá exibir algo parecido com:Ao ser executado, o programa anterior deverá exibir algo parecido com:
Valor da variavel letra: q e seu endereco: 22ff6fValor da variavel letra: q e seu endereco: 22ff6f
Valor da variavel dia: 12 e seu endereco: 22ff68
Valor da variavel nota: 87.8 e seu endereco: 22ff64Valor da variavel nota: 87.8 e seu endereco: 22ff64
Valor da variavel assunto: medicina e seu endereco: 22ff50
Endereco do ponteiro pont1: 77c0c2e3p p
Endereco do ponteiro pont2: ffffffff
Endereco do ponteiro pont3: 77bf2070
Endereco do ponteiro pont4: 77c15c94
Endereco do ponteiro pont5: 22ff10
79
Exibindo uma string utilizando ponteiroExibindo uma string utilizando ponteiro
#include <stdio.h>
int main()
{
char string[40] = "Exibindo uma string usando um ponteiro.";
char *ptr_str;
// Apontando para a string
ptr_str = string;
printf(“Inicio da string = %cnn", *ptr_str);
// Exibindo toda a string usando o ponteiro
while(*ptr_str)
{{
putchar(*ptr_str);
ptr_str++;
}
printf("n");
return 0;
80
return 0;
}
Fonte: http://br.geocities.com/sdiasneto/c_int/ponteiros.htm
éLinguagem e Técnicas de Programação
Capítulo 10p
Parâmetros da função mainParâmetros da função main
Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C
81
Parâmetros e retorno da função mainParâmetros e retorno da função main
Declaração da função main, de acordo com o padrão ANSI C:
int main(int argc, char *argv[])
int main(void)
Formas aceitáveis (diferentes do padrão ANSI C):
void main(int argc, char *argv[])
void main(void)( )
void main()
int main()
main()main()
Os parâmetros argc e argv dão ao programador acesso à linha de comando
82
p g g p g
com a qual o programa foi chamado.
Parâmetros da função mainParâmetros da função main
O argc (argument count) é um inteiro e possui o número de argumentos com
os quais a função main() foi chamada na linha de comando. Ele vale no mínimo
1, pois o nome do programa é contado como sendo o primeiro argumento.
O argv (argument values) é um ponteiro para uma matriz de strings. Cada
string desta matriz é um dos parâmetros da linha de comando O argv[0]string desta matriz é um dos parâmetros da linha de comando. O argv[0]
sempre aponta para o nome do programa (que, como já foi dito, é considerado
i i t )o primeiro argumento).
Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
83
Parâmetros da função mainParâmetros da função main
Exemplo 1: Recebe da linha de comando um conjunto de palavras e as imprime linha a linha.
#include <stdio.h>
#include <stdlib.h>
int main(int argc char *argv[])int main(int argc, char *argv[])
{
int i;
for(i = 0; i < argc; i++)
{
printf("%sn", argv[i]);
}
return 0;
}
84
Parâmetros da função mainParâmetros da função main
Exemplo 2: Recebe da linha de comando o dia, mês e ano, e imprimir a data em formato apropriado.
Chamada do programa (data.exe): data 19 04 08
O d á i i i 19 d b d 2008O programa deverá imprimir: 19 de abr de 2008
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[])
{
int mes;
char *nomemes[] = {“jan",“fev",“mar",“abr",“mai",“jun",“jul",“ago", “set",
“out",“nov",“dez"};
// Verifica o numero de parametros fornecidos: parametro 1: nome do programa,
// parametro2: dia, parametro 3: mes, parametro 4: dois ultimos digitos do ano
if(argc == 4)
{
mes = atoi(argv[2]); // argv contem strings de entrada
if (mes < 1 || mes > 12) // Testa se o mes e' valido
i tf(" ! d t di t 2 di it ")printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos");
else
printf("n%s de %s de 20%s", argv[1], nomemes[mes-1], argv[3]);
}
else
85
printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos");
}
Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C
A biblioteca padrão da linguagem C contém um conjunto de funções de uso comum,
como tratamento de entrada/saída operações matemáticas e manipulação de cadeiacomo tratamento de entrada/saída, operações matemáticas e manipulação de cadeia
de caracteres. O nome e as características de cada função estão em arquivos
“cabeçalho”. Já a implementação das funções encontra-se em arquivos pré-cabeçalho . Já a implementação das funções encontra se em arquivos pré
compilados, que são “linkados” pelo link-editor.
P i i i i d b lhPrincipais arquivos de cabeçalho:
• stdio.h – Manipulação de entrada/saída de dados (printf, scanf, fprintf etc).
• stdlib.h – Operações diversas (system, atof, atoi etc).
• string h – Tratamento de cadeia de caracteres (strcpy strlen strcmp etc)• string.h – Tratamento de cadeia de caracteres (strcpy, strlen, strcmp etc).
• math.h – Funções matemáticas comuns em computação (sqrt, cos, sin, log etc).
86
• time.h – Conversão de tipos de dado de data e horário (asctime, clock, localtime etc).
Linguagem e Técnicas de Programação
Capítulo 11
Estrutura em C: structEstrutura em C: struct
Comando de decião switchComando de decião switch--casecase
87
StructStruct –– agrupamento de variáveisagrupamento de variáveis
Uma struct é um agrupamento de variáveis relacionadas, formando um novo tipo de dado.
#include <stdio.h>
struct dadosEscola
{
int num;
char nom[20];[ ]
char rua[50];
char cid[80];
char uf[3];
};}
int main()
{
struct dadosEscola esc;
esc.num = 152;
strcpy(esc.nom, "Colegio Brasilia");
strcpy(esc.rua, "Rua Atibaia");py
strcpy(esc.cid, "Recife");
strcpy(esc.uf, "PE");
printf("%s: %s n. %d, %s - %s n", esc.nom, esc.rua, esc.num, esc.cid, esc.uf);
88
p
return 0;
}
Comando switchComando switch--casecase
O comando de decisão switch-case é utilizado quando há um grande número
de condições a serem testadas com respectivas decisões a serem tomadasde condições a serem testadas, com respectivas decisões a serem tomadas.
Exemplo:
i t diint dia;
printf("Digite o numero de um dia da semana");
scanf("%d", &dia);
switch(dia)
{
case 1:
printf("domingo");p g
break;
case 2:
printf("segunda");
break;
// outros cases
case 7:
printf("sabado");
89
printf( sabado );
break;
}
Linguagem e Técnicas de Programação
C ít l 12Capítulo 12
PréPré--processador e Macrosprocessador e Macros
90
PréPré--processador e Macrosprocessador e Macrospp
O pré-processador é uma aplicação executada antes de se executar op p p ç
compilador, para resolver as instuções e diretivas de pré-processamento que o
código-fonte possa ter.
Todas as instuções e diretivas de pré-processamento são precedidas do
caractere #.
Macros são porções de código que são substutuídas, pelo pré-processador,
antes do compilador converter o códigoantes do compilador converter o código.
Um exemplo de macro é a definição de uma constante numérica:
#define MAX 100
91
Macros de funçõesMacros de funçõesçç
É possível transformar funções simples em macros.p ç p
Quando se deseja que os parâmetros de uma função simples sejam genéricos
quanto ao tipo pode-se transformar a função em uma macroquanto ao tipo, pode-se transformar a função em uma macro.
Exemplo:
#include <stdio.h>
// A macro Mult pode receber parâmetros int, char, float ou double
// e devolve como resultado a multiplicação dos parâmetros
#define Mult(x,y) x*y
main()main()
{
printf("%d n", Mult(3,4));
printf("%f n", Mult(3.5,5.2));
92
}
Outras diretivas de préOutras diretivas de pré--processamentoprocessamentopp pp
A diretiva #include é utilizada para indicar ao pré-processador para substituir ap p p p
linha em que se encontra pelo conteúdo do arquivo que é colocado leogo após.
Exemplo:
#include <stdio.h> // subsitui esta linha pelo conteúdo do arquivo stdio.h
// b it i t li h l t úd d i t h// subsitui esta linha pelo conteúdo do arquivo motor.h
#include “c:userstrabalhomotor.h”
A diretiva #pragma indica ao compilador para tomar determinadas atitudes, de
acordo com o valor passado. Exemplo:
// indica que a compilação deve ser otimizada para o PIC16C54
#pragma device PIC16C54
93
Linguagem e Técnicas de Programação
C ít l 13Capítulo 13
Exercícios selecionadosExercícios selecionados
94
1) Um usuário digita um número no teclado Imprima a tabuada deste número1) Um usuário digita um número no teclado. Imprima a tabuada deste número.
2) Faça um programa que armazena números em uma matriz 2x2 ou 3x3 e mostra o
determinante da matriz armazenada.
3) Monte o fluxograma e crie um programa que aponta se uma pessoa é obrigada ou
não a votar ou se é o voto é opcional, de acordo com a sua idade, digitada no
teclado.
4) Um arquivo contém um número indeterminado de linhas, contendo um número em
cada linha. Crie um segundo arquivo no qual cada linha contém um númerocada linha. Crie um segundo arquivo no qual cada linha contém um número
corresponde a duas vezes o valor do número do primeiro arquivo, linha-a-linha.
5) C i fl ál l d í d d d5) Criar um fluxograma para o cálculo das raízes de uma equação de segundo grau,
dados os coeficientes a, b e c. A seguir, implemente o algoritmo em linguagem C.
95
6) Criar um fluxograma para dividir em 4 listas cidadãos brasileiros, ingleses,
japoneses e outros. Para cada cidadão, o programa pede a nacionalidade e o
nome. Ao final, imprima as quatro listas.
7) Faça um programa em linguagem C que receba, via teclado, as notas de três
provas de 40 alunos e, no final, exiba na tela a nota média de cada aluno.
Dica: utilize o seguinte vetor bidimensional: float notas[40][3].Dica: utilize o seguinte vetor bidimensional: float notas[40][3].
8) Faça um programa em linguagem C que lê duas palavras do teclado e, caso elas
sejam iguais, escreve na tela o número de caracteres dessas palavras; caso asj g , p ;
palavras sejam diferentes, escreve na tela a diferença entre os números de
caracteres das duas palavras.
9) Faça um programa que armazene um login e senha de acesso restrito. A seguir, o
programa deve permitir acesso apenas aos usuários que acertarem o login e
senhasenha.
10) Faça um programa que calcula qual o montante acumulado em um ano por uma
aplicação que rende 2% ao mês com depósitos mensais de R$ 1000 00
96
aplicação que rende 2% ao mês, com depósitos mensais de R$ 1000,00.
11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada.11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada.
#include <stdio.h>
main()
{
int a, b, c;
Sequência digitada Letra escrita na
tela
7 3 4
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
8 4 1
2 2 2
if((a == 7 || b != 2) && c < 4)
printf("X");
else
{{
if (a%b == 0)
printf("Y");
else
printf("Z");printf( Z );
}
}
97
12) O que será impresso na tela após a execução do programa abaixo:
#include <stdio.h>
int f1(int a, int b, int *c, int *d)
{
a = 15;
b = *c;
*c = *d;
return b + a;return b + a;
}
int main(void)
{
int var1 = 1;
int var2 = 2;
int var3 = 3;
int var4 = 4;
fl 5 6float var5, var6;
var4 = f1(var1, var2, &var3, &var4);
var5 = 2.5;
var6 = 5 7;var6 = 5.7;
printf("%d - %d - %d - %dn", var1, var2, var3, var4);
printf("%.1fn", var6 - var5);
puts("var4 – var2");
98
p
return 0;
}

Weitere ähnliche Inhalte

Was ist angesagt?

Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresAnderson Favaro
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem cJefferson Bessa
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+cThiago Freitas
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicaçõesnataferraz
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Robson Ferreira
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação cClausia Antoneli
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem CDaniel Barão
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoRobson Ferreira
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivosFlávio Freitas
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE Arthur Alvim
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPiMasters
 
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...Alex Camargo
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadoshenriqueprossi
 

Was ist angesagt? (20)

Apresentação Linguagem C
Apresentação Linguagem CApresentação Linguagem C
Apresentação Linguagem C
 
Gerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - CompiladoresGerador de Código-Objeto - Compiladores
Gerador de Código-Objeto - Compiladores
 
Geração de código linguagem c
Geração de código   linguagem cGeração de código   linguagem c
Geração de código linguagem c
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Linguagem C e Dev-C++ Algumas Explicações
Linguagem C e Dev-C++  Algumas ExplicaçõesLinguagem C e Dev-C++  Algumas Explicações
Linguagem C e Dev-C++ Algumas Explicações
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
 
A linguagem de programação c
A linguagem de programação cA linguagem de programação c
A linguagem de programação c
 
Apostila de Linguagem C
Apostila de Linguagem CApostila de Linguagem C
Apostila de Linguagem C
 
Ud2
Ud2Ud2
Ud2
 
Conceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentaçãoConceitos e técnicas de programação apresentação
Conceitos e técnicas de programação apresentação
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
Tutorial dev cpp   001 - criação, leitura e alteração de arquivosTutorial dev cpp   001 - criação, leitura e alteração de arquivos
Tutorial dev cpp 001 - criação, leitura e alteração de arquivos
 
Python Debugger - PUG-PE
Python Debugger - PUG-PE Python Debugger - PUG-PE
Python Debugger - PUG-PE
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHP
 
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...
Algoritmos e Programação: Apresentação da ferramenta de programação. Comandos...
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcados
 

Ähnlich wie Notas deaulas

Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxjudsonBg3
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptJadna Almeida
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoesYuri Passos
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CJoberthSilva
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02profwtelles
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação CSchoolByte
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03thomasdacosta
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvRCiro Matheus
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfAndreiaCristinaFlore
 

Ähnlich wie Notas deaulas (20)

Apostila chardwere
Apostila chardwereApostila chardwere
Apostila chardwere
 
C hardware
C hardwareC hardware
C hardware
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Aula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptxAula 02 - Introdução a ALGORITMOS.pptx
Aula 02 - Introdução a ALGORITMOS.pptx
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Apostila c
Apostila cApostila c
Apostila c
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.ppt
 
Aula01 introducao operacoes
Aula01   introducao operacoesAula01   introducao operacoes
Aula01 introducao operacoes
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
Linguagem c wellington telles - aula 02
Linguagem c   wellington telles - aula 02Linguagem c   wellington telles - aula 02
Linguagem c wellington telles - aula 02
 
Introdução a linguagem de programação C
Introdução a linguagem de programação CIntrodução a linguagem de programação C
Introdução a linguagem de programação C
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvR
 
Atpaula3 150906041855-lva1-app6892
Atpaula3 150906041855-lva1-app6892Atpaula3 150906041855-lva1-app6892
Atpaula3 150906041855-lva1-app6892
 
C sharp lesson1
C sharp lesson1C sharp lesson1
C sharp lesson1
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdfparadigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
paradigmasdlsksmmskskkekekekekedmmmdmdmmf.pdf
 

Kürzlich hochgeladen

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Notas deaulas

  • 1. FATEC de Santo André Tecnologia em Eletrônica Automotiva Linguagem e Técnicas de Programação Notas de Aula P f R é iProf.: Rogério Email: fatec.sa.informatica@gmail.com Página da disciplina: http://sites.google.com/site/fatecprogramacao 1 Objetivo da disciplina Fornecer noções básicas de lógica, algoritmos e técnicas de programação, utilizando a linguagem de programação C. Conteúdo ProgramáticoConteúdo Programático 1. Introdução à lógica de programação; 2. Algoritmos: pseudocódigo e fluxograma; 3 E t t d t l i l d l ã d ti ã3. Estruturas de controle sequencial, de seleção e de repetição; 4. Técnicas básicas de programação, conceitos e tipos de linguagens de programação. 5. Conceitos de programação estruturada, compilação e interpretação; 6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções;6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções; 7. Vetores e matrizes; 8. Strings; 9. Funções; 10 P t i10. Ponteiros; 11. Manipulação de arquivos; 12. Compilador e ambiente de desenvolvimento para a linguagem C. Bibliografia utilizada na disciplina - Linguagem C. Luis Damas; LTC Editora, 10a edição, 2007. 2 - C Completo e Total. Herbert Schildt. Makron Books, 3a edição, 1996. - Primeiro Curso de Programação em C. Edson L. F. Senne; Visual Books. 2a edição, 2006.
  • 2. Linguagem e Técnicas de Programação Capítulo 1Capítulo 1 Algoritmo eAlgoritmo e Comandos básicos de programaçãoComandos básicos de programaçãop g çp g ç 3 AlgoritmoAlgoritmo • Algoritmo é a descrição de um padrão de comportamento, expresso pela execução de instruções até que se alcance uma determinada condiçãoexecução de instruções, até que se alcance uma determinada condição. • Um programa de computador é composto por um ou mais algoritmos. • Exemplos de algoritmos: a. Preparar um prato de comida; b. Controle de injeção de combustível;j ç ; c. Compra e venda automática de ações na bolsa de valores. • Exercício: - Criar um algoritmo para liberar o acesso a um site fornecendo login e senha 4 - Criar um algoritmo para liberar o acesso a um site, fornecendo login e senha.
  • 3. VariVariááveisveis • Variável: nome de um local de memória onde se pode colocar á à áqualquer valor, do tipo básico associado à variável. • Tipos básicos de variável:• Tipos básicos de variável: – char: guarda um caractere. – int: guarda um número inteiro.g – float e double: guardam um número real. • Exemplos:p char primeiraLetra; int anoFabricacao; float velocidadeCarro; double velocidadeLuz; 5 Comandos bComandos báásicossicos 2) Operadores lógicos:1) Atribuição: ) p g e && ou || 1) Atribuição: quilometroRodado = 23458; a = b; não !temperaturaAlta = 23.56; 3) Operadores aritméticos: mais + 4) Operadores relacionais: é igual? ==mais + menos - vezes * é igual? == é diferente? != é maior? > dividir / resto % é menor? < é maior ou igual? >= é 6 decrementa -- incrementa ++ é menor ou igual? <=
  • 4. Linguagem e Técnicas de Programação C í l 2Capítulo 2 Lógica de ProgramaçãoLógica de Programaçãog g çg g ç 7 Lógica de programação:Lógica de programação:g p g çg p g ç Bloco de comandosBloco de comandos –– execução sequencialexecução sequencial Pseudocógido Fluxograma 8
  • 5. Estrutura de decisãoEstrutura de decisãoEstrutura de decisãoEstrutura de decisão Alternativa simples Alternativa composta 9 Estruturas de decisãoEstruturas de decisão aninhadasaninhadasEstruturas de decisãoEstruturas de decisão aninhadasaninhadas S t t d d i ã tSe a estrutura de decisão tem apenas um comando, o uso de chaves é dispensável; caso contrário, o uso de chaves é obrigatório se (a > b) a = a + 5; senão apenas um comando {{ se (a > c) { b = b + 5; a = a + 10; } dois comandos } 10
  • 6. Estrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começo 11 Estrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no final 12
  • 7. Estrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controle 13 Pseudocódigo / FluxogramaPseudocódigo / Fluxograma Algoritmo que encontra o maior e o menor número digitado no teclado. Quando é digitado o número 0, o processamento é interrompido e é impresso na tela os números encontrados. ()encontraMaiorMenor() { int maior, menor, valor; l l l d ()valor = leTeclado(); maior = valor; menor = valor; ( l ! 0)enquanto (valor != 0) { se (valor > maior) maior = valor; ãsenão { se (valor < menor) menor = valor; }} valor = leTeclado(); } 14 imprima(maior, menor); }
  • 8. ExercíciosExercícios 1) Descrever em pseudocódigo e em fluxograma um1) Descrever em pseudocódigo e em fluxograma, um algoritmo que imprime na tela a tabuada de um número digitado no teclado. 2) Descrever em pseudocódigo e em fluxograma um2) Descrever em pseudocódigo e em fluxograma, um algoritmo que lê um número inteiro de um teclado, calcula tó i d t d ú t 1 úa somatória de todos os números entre 1 e o número digitado e escreve na tela o valor obtido. 15 Linguagem e Técnicas de Programação Capítulo 3 Introdução à linguagem de programação CIntrodução à linguagem de programação CIntrodução à linguagem de programação CIntrodução à linguagem de programação C 16
  • 9. Linguagens de programaçãoLinguagens de programaçãog g p g çg g p g ç • Linguagem de programação: conjunto finito de símbolos com os i d t dquais se escrevem programas de computador. • Exemplos de linguagem de programação: C, C++, Java, Pascal, C b l B i ASP A blCobol, Basic, ASP, Assembly. • Dependendo da linguagem de programação, os programas podem ser compilados, interpretados ou montados. • Linguagens com compilação: C, C++, Pascal, Cobol etc. • Linguagens com interpretação: Basic, ASP, Perl etc. • Linguagens com compilação e interpretação: Java. • Linguagem de montagem ou Assembly é uma notação legível por humanos para o código de máquina. 17 Linguagem de programação com compilaçãoLinguagem de programação com compilaçãog g p g ç p çg g p g ç p ç • Programa descrito em uma linguagem de programação:g g g p g ç sequência de comandos compreendida por um ser humano. • Programa descrito em código de máquina: sequência de 0s e 1sPrograma descrito em código de máquina: sequência de 0s e 1s compreendida por uma CPU - Unidade Central de Processamento. • Compilador: conversor de programas escritos em linguagem deCompilador: conversor de programas escritos em linguagem de programação para códigos de máquina de uma CPU. while(i < 10) { 10011101 00110001{ printf("%d", i); i++; } compilador 00110001 01100111 11110101 11110001 18 } 11110001
  • 10. Comparação entre linguagens de programaçãoComparação entre linguagens de programaçãop ç g g p g çp ç g g p g ç ódi í l t d tcódigo nível vantagens desvantagens código de bai o acesso a todos os dificuldade deg máquina baixo recursos do hardware programação erros de C médio acesso a todos os recursos do h d erros de programação podem comprometer o funcionamento do hardware funcionamento do hardware J lt facilidade de baixo aceso aos dJava alto programação recursos do hardware 19 CódigoCódigo--fonte e códigofonte e código--executávelexecutávelgg gg • Código-fonte: contém todos os comandos de um programa,g p g , expressos em uma linguagem de programação. • Código-executável: comandos de um programa convertidos para oCódigo executável: comandos de um programa convertidos para o código de máquina de uma CPU. • O compilador gera o código-executável, caso não encontre erros noO compilador gera o código executável, caso não encontre erros no código-fonte. • No sistema operacional Windows arquivos com código-executávelNo sistema operacional Windows, arquivos com código executável possuem geralmente (mas não necessariamente), as extensões .exe e .dll. • No sistema operacional Linux (ou Unix), arquivos com código- executável possuem geralmente (mas não necessariamente), a 20 extensão .sh, entre outras.
  • 11. Linguagem de programação CLinguagem de programação Cg g p g çg g p g ç O C é uma linguagem de propósito geral pertencendo a uma• O C é uma linguagem de propósito geral, pertencendo a uma família de linguagens cujas características são: - acesso a recursos de baixo nível; - geração de código eficiente;geração de código eficiente; - confiabilidade; simplicidade;- simplicidade; - muito utilizada para microprocessadores. - Ver também: ftp://ftp.unicamp.br/pub/apoio/treinamentos/linguagens/c.pdf 21 Regras geraisRegras gerais • Os programas, em linguagem C, são compostos por uma ou maisp g , g g , p p funções. • As funções podem possuir argumentos e um tipo de retorno.As funções podem possuir argumentos e um tipo de retorno. • Todo programa inicia-se com uma chamada à função main: main() { comando1;co a do ; • comando2; • ... }} 22
  • 12. Regras geraisRegras gerais • A linguagem C faz distinção entre maiúsculas e minúsculas. Exemplo: ag g ç p variável nomealuno é diferente de nomeAluno. • Os comandos devem ser finalizados por ponto-e-vírgula. • O comando inicial das estruturas de decisão e de repetição não são finalizados por ponto-e-vírgula. Exemplos: Sem ponto-e-vírgula! Sem ponto-e-vírgula! if (a > b && d < e) while( a > 0 ) { { printf(“mensagem 1”); a = a – 1; printf(“mensagem 2”); printf(“%d”, a); } } Com ponto-e-vírgula! Com ponto-e-vírgula! 23 VariáveisVariáveis • A linguagem C dispõe de quatro tipos básicos de dados. As declaraçõesg g p q p ç de variáveis, portanto, podem usar os seguintes tipos: ValorTamanho (bytes)Tipo Um caractere (ou, reciprocamente, um inteiro de -128 a 127) 1char ValorTamanho (bytes)Tipo Número inteiro (ANSI: de -32768 a 32767 (atualmente: de -2147483648 a 2147483647) 2 (padrão ANSI) 4 (atualmente) int ) Número real (ponto flutuante com precisão simples: 7 dígitos, limitados a: +/-3.4*10+/-38) 4float (atualmente: de 2147483648 a 2147483647)4 (atualmente) Número real (ponto flutuante com precisão dupla: 15 dígitos, limitados a: +/-1.7*10+/-308) 8double 24
  • 13. Palavras reservadas da linguagem CPalavras reservadas da linguagem C Palavras reservadas pelo padrão ANSI Algumas outras palavras reservadasPalavras reservadas pelo padrão ANSI Algumas outras palavras reservadas asm auto double int struct asm cdecl interrupt break else long switch case enum register typedef char extern return union near far huge char extern return union const float short unsigned continue for signed void d f lt t i f l tildefault goto sizeof volatile do if static while Observação importante: palavras reservadas não podem ser usadas como nomes de variáveis 25 usadas como nomes de variáveis. Bloco de comandosBloco de comandosBloco de comandosBloco de comandos 26
  • 14. Estrutura de decisãoEstrutura de decisãoEstrutura de decisãoEstrutura de decisão 27 Estrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começoEstrutura de repetição com teste no começo 28
  • 15. Estrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no finalEstrutura de repetição com teste no final 29 Estrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controleEstrutura de repetição com variável de controle 30
  • 16. Comando break (abandone)Comando break (abandone)Comando break (abandone)Comando break (abandone) 31 Comando continueComando continueComando continueComando continue 32
  • 17. Linguagem e Técnicas de Programação Capítulo 4Capítulo 4 Primeiros programasPrimeiros programas em Linguagem Cem Linguagem C 33 Função printfFunção printf Sintaxe: printf ( "expressão de controle", argumentos ) • A função printf permite escrever mensagens no dispositivo padrão deA função printf permite escrever mensagens no dispositivo padrão de saída (tela). • A expressão de controle contém caracteres que serão exibidos na tela ep q pode conter códigos de formatação que indicam o formato em que os argumentos devem ser impressos. • Cada argumento deve ser separado por vírgula. • Exemplos: Expressão de controle argumento printf(“nnEste eh o numero dois: %d", 2); printf("Aluno: %s t Nota: %f", "Pedro", 7.5); Expressão de controle argumento 34 p ( , , );
  • 18. Função printfFunção printf - Caracteres de formatação: %f número em ponto flutuante (float ou double) %d número em formato decimal %o número em formato octal %x número em formato hexadecimal %c caractere simples %s cadeia de caracteres%s cadeia de caracteres n nova linha (pula uma linha) t tab (insere espaços de uma tabulação)t tab (insere espaços de uma tabulação) " aspas (usado quando se quer imprimir aspas) b ( d d i i i b ) 35 barra (usado quando se quer imprimir uma barra) Função scanfFunção scanf Sintaxe: scanf("expressão de controle", argumentos) • A função scanf permite ler dados formatados da entrada padrão (teclado) e gravar no(s) endereço(s) de variável(eis)e gravar no(s) endereço(s) de variável(eis). • A lista de argumentos contém o(s) endereço(s) de variável(eis). • O operador de endereço em C é referenciado pelo símbolo &, que retorna o endereço de uma variável ou dispositivo físico. • Exemplo: int num; A variável num recebe o número digitado, utilizando o operador & printf("Digite um numero: "); scanf("%d", &num); printf(“Numero digitado: %d", num); %d é substituído pelo valor da variável num 36 printf( Numero digitado: %d , num);
  • 19. Comentários no CódigoComentários no Código • É sempre aconselhável inserir comentários no código para explicar o funcionamento do programa tornando-o mais legívelfuncionamento do programa, tornando o mais legível. • Na linguagem C, os comentários são colocados dentro dos marcadores /* e */ em uma ou mais linhas./ e / em uma ou mais linhas. • As últimas padronizações da linguagem C permitem também os comentários de uma linha, utilizando o marcador // ., Exemplos: int a; // Esta linha é um comentário e não tem influência no código// Esta linha é um comentário e não tem influência no código a = 0; /* Estas duas linhas também são comentários 37 / e serão descartadas no momento da compilação */ Ambientes de desenvolvimento paraAmbientes de desenvolvimento para programação em Linguagem Cprogramação em Linguagem C Ɣ Ambiente de desenvolvimento ou IDE (Integrated Development E i t)Environment): - edição e depuração (debug) do código-fonte;ç p ç ( g) g ; - compilador C - geração do arquivo-executável. Ɣ Utilizado para desenvolvimento de programas C e C++; Ɣ Nesta disciplina: Projetos C – Aplicações de Console. 38
  • 20. Ambiente de desenvolvimento DevAmbiente de desenvolvimento Dev--C++C++ Procedimentos para criar um arquivo-executável: 1) Crie um projeto na aba Arquivo (Console Application – Projeto C); 2) Dê um nome ao projeto (que será o nome do arquivo-executável); 3) Salve o projeto em uma pasta específica;3) Salve o projeto em uma pasta específica; 4) Crie um arquivo com a extensão .c que contenha a função main; 5) Escreva o código da função main; 6) Compile o código-fonte; 7) Caso o compilador não encontre erros, será gerado o arquivo- 39 ) p , g q executável, com a extensão .exe. ProgramaPrograma--exemploexemplo - Primeiro programa: números na telap g #include <stdio.h> #include <stdlib h>#include <stdlib.h> /* Primeiro programa de exemplo */ int main() { int i;int i; for(i = 1; i < 10; i++) { printf (“Numero: %dt“, i); printf (“elevado ao quadrado: %dn”, i*i); } return 0; 40 return 0; }
  • 21. ProgramaPrograma--exemploexemplo - Segundo programa: cálculo de fatorialg p g #include <stdio.h> #include <stdlib.h> int main() { int fat = 1;int fat 1; int i, x; printf("Entre com um numero:"); scanf("%d", &x); for(i = x; i > 1; i--) fat = fat * i;; printf(“Fatorial de %d: %dnnn", x, fat); t 0 41 return 0; } ProgramaPrograma--exemploexemplo - Terceiro programa: conversão de anos em diasp g // Programa-exemplo #include <stdio.h> #i l d tdlib h#include <stdlib.h> int main() { /* declaracao das variaveis *// declaracao das variaveis / int dias; float anos; printf ("Entre com o numero de dias: "); // imprime mensagem na tela f ("%d" &di ) // t d d d dscanf ("%d", &dias); // entrada de dados /* Conversao de dias em anos */ anos = dias/365.0; /* imprime mensagem na tela */ printf ("nn%d dias equivalem a %f anos.n", dias, anos); return 0; } 42 }
  • 22. ProgramaPrograma--exemploexemplo #include <stdio.h> - Quarto programa: valor médio de números digitados # #include <stdlib.h> int main() {{ int i; float valor, media; float soma = 0;; for(i = 0; i < 10; i++) { f("%f" & l )scanf("%f", &valor); soma = soma + valor; } printf(“Soma dos 10 valores lidos: %f", soma); system(“pause”); media = soma / 10; i tf(“V l di d 10 l lid %f" di ) 43 printf(“Valor medio dos 10 valores lidos: %f", media); return 0; } Linguagem e Técnicas de Programação Capítulo 5 VetoresVetoresVetoresVetores 44
  • 23. VetoresVetores Vetor é um conjunto de elementos consecutivos, todos do mesmo tipo, que podem ser acessados individualmente a partir de um único nome. Vetor unidimensional: tipo nome[tamanho].p [ ] Vetor multidimensional: tipo nome[tamanho1][tamanho2]. char cidade[60]; int precoData[31][12]; float temperaturaPosicao[50][50][50]; Nos vetores acima cidade tem uma dimensão precoData tem duasNos vetores acima, cidade tem uma dimensão, precoData tem duas dimensões e temperaturaPosicao tem três dimensões. 45 Vetores de duas dimensões são também conhecidos como matrizes. Indexação de vetoresIndexação de vetoresIndexação de vetoresIndexação de vetores O índice de um vetor começa sempre em 0 e termina em n-1, sendo n o tamanho do vetor: float notasAlunos[50]; notasAlunos[0] = 7.8; notasAlunos[1] = 2.5; notasAlunos[0] = 10.0; ... notasAlunos[49] = 7.0; 46
  • 24. Indexação de vetores multidimensionaisIndexação de vetores multidimensionais Os índices das dimensões de um vetor começam sempre em 0 e terminam em n-1, m-1 etc, sendo n, m etc o tamanho das dimensões: int posicao[3][3]; posicao[0][0] = 1; posicao[0][1] = 2; 1 2 3 4 5 6p posicao[0][2] = 3; posicao[1][0] = 4; 7 8 9 posicao[1][0] 4; posicao[1][1] = 5; posicao[1][2] = 6;posicao[1][2] = 6; posicao[2][0] = 7; posicao[2][1] 8 47 posicao[2][1] = 8; posicao[2][2] = 9; Verificação de limites de tamanhoVerificação de limites de tamanho A linguagem C não faz verificação de limites de vetores: nada impede que seja ultrapassado o fim de uma dimensão de um vetor. Porém, escrever em área deultrapassado o fim de uma dimensão de um vetor. Porém, escrever em área de memória não reservada pode “travar” o computador. Uma atribuição de valores além do limite de um vetor pode “sujar” uma área de memória reservada para outro programa. O programador deve sempre verificar se não está atribuindo valores para um índice maior que o tamanho de uma dimensão do vetor.q Ex.: o código abaixo será compilado, mas está ERRADO pois invade memória ã d A i ã á i itid inão reservada. A posição máxima permitida seria precos[4]. float precos[5]; 48 precos[8] = 15.50;
  • 25. Escrever e ler valores em um vetorEscrever e ler valores em um vetor #include <stdio.h> int main() { float alunos[40][2]; // 40 alunos e 2 provas de cada aluno int i, j; float soma1 = 0, soma2 = 0; // Zerar a matriz antes de utilizá-la for(i = 0; i < 40; i++) for(j = 0; j < 2; j++) alunos[i][j] = 0; alunos[5][0] = 2.2; alunos[5][1] = 6.8; alunos[12][0] = 7.9; alunos[12][1] = 8.2; for(i = 0; i < 2; i++) soma1 = soma1 + alunos[5][i]; for(i = 0; i < 2; i++) soma2 = soma2 + alunos[12][i]; printf("Media do aluno 5: %f n", soma1/2); 49 printf("Media do aluno 12: %f n", soma2/2); return 0; } ProgramaPrograma--exemploexemplo #include <stdio.h> #include <stdlib.h> /* Programa que declara um vetor com n=10 números e coloca na i-ésima posição o resultado do fatorial de i */ const int n = 10; int main() {{ int v[n]; int i; [0] 1v[0] = 1; for(i = 1; i < n; i++) { v[i] = v[i-1] * i; printf("Fatorial de %d: %dn", i, v[i]); } 50 return 0; }
  • 26. ProgramaPrograma--exemploexemplo #i l d < tdi h>#include <stdio.h> #include <stdlib.h> // Imprime o rendimento de uma aplicação mensal, com a taxa de juros digitada i i ()int main() { int i; float deposito[12]; // 12 meses fl t j t t l 0float juros, total = 0; printf("Digite a taxa de juros mensal: "); scanf("%f", &juros); for(i = 0; i < 12; i++) { printf("Digite o deposito %d: ", i+1); f("%f" &d it [i]) // R b d it iscanf("%f", &deposito[i]); // Recebe os depositos mensais } // Calcula os rendimentos f (i 0 i < 12 i++)for(i = 0; i < 12; i++) { printf("Deposito do mes %d: %.2f --- ", i+1, deposito[i]); total = total + deposito[i] + (total * juros/100.0); i tf("T t l l d % 2f " t t l) 51 printf("Total acumulado: %.2fn", total); } return 0; } ExercíciosExercícios 1) Faça um programa que calcula a média das notas de 10 alunos digitadas no teclado, utilizando um vetor que armazena, em cada uma de suas posições, as notas individuais. 2) Faça um programa que coloque números digitados no teclado em uma matriz de 4 linhas e 4 colunas, e apresente a somatória dos valores armazenados em cada linha e em cada coluna. 52
  • 27. Linguagem e Técnicas de Programação C í l 6Capítulo 6 StringsStringsgg 53 StringString –– vetor de caracteresvetor de caracteresgg Strings são vetores constituídos por caracteres: char nomeEscola[18]; strcpy(nomeEscola, “FATEC SANTO ANDRE”);strcpy(nomeEscola, FATEC SANTO ANDRE ); // A função strcpy que atribui um conteúdo a string nomeEscola, que pode armazenar até 17 caracteres., q p Strings são SEMPRE terminadas com o caracter nulo: 0 Portanto devem terStrings são SEMPRE terminadas com o caracter nulo: 0. Portanto, devem ter uma posição a mais que a quantidade de caracteres armazenados: 54
  • 28. Lendo uma string de um tecladoLendo uma string de um teclado A maneira mais fácil de ler uma string de um teclado é com a função gets() da biblioteca stdio.h. Outra maneira é com a função scanf:ç #include <stdio.h> #include <stdlib h>#include <stdlib.h> int main() { char string1[80], string2[80]; printf("Informe duas strings:n"); gets( string1 ); scanf("%s", &string2);scanf( %s , &string2); printf("nStrings digitadas: %s, %s", string1, string2); return 0; } 55 Funções de manipulação de stringsFunções de manipulação de strings A linguagem C suporta um grande número de funções que manipulam strings. A i ãAs mais comuns são: gets(str): lê uma sequência de caracteres do teclado e grava na string str. atoi(str): converte uma string em um número inteiro. atof(str): converte uma string em um número realatof(str): converte uma string em um número real. strcpy(strDest,strOrig): copia a string strOrig para a string strDest. strcat(str1, str2): anexa a string str2 no final da string str1. strlen(str): retorna o tamanho (núm. de caracteres) da string str. strcmp(str1, str2): compara a string str1 com a string str2. Se forem iguais, retorna 0, se str1 for “posterior” que str2, retorna um número positivo; 56 , p q , p ; caso contrário, retorna um número negativo.
  • 29. Exemplos de manipulação de stringsExemplos de manipulação de strings char teste1[100], teste2[40]; strcpy(teste1, "Informatica"); // copia/atribuicao de valor strcpy(teste2, teste1); // copia/atribuicao de valor // tamanho de string printf(“Tamanho da string: %d”, strlen(teste1)); int numInteiro; char numString[4] = “1580”; numInteiro = atoi(numString); // conversao de string em inteiro strcpy(senha1, "fatec"); strcpy(senha2, “etec”); if( strcmp(senha1, senha2) == 0 ) // 2 strings iguais printf(“Senha valida”); 57 ExercíciosExercícios 1) Faça um programa que lê do teclado duas strings, concatena essas strings e informa o tamanho da string final. 2) F lê d t l d d t i t i2) Faça um programa que lê do teclado duas strings, compara essas strings e informa qual a ordem alfabética entre elas. 3) Faça um programa que lê dez nomes digitados do teclado, ordena alfabeticamente esses nomes e apresenta a lista de nomes ordenada.alfabeticamente esses nomes e apresenta a lista de nomes ordenada. 58
  • 30. Linguagem e Técnicas de Programação Capítulo 7Capítulo 7 Funções e Escopo de VariáveisFunções e Escopo de Variáveis 59 Funções na linguagem CFunções na linguagem C • Um programa em C é composto por uma ou mais funções. • A função main() é obrigatória em todos os programas. • Funções são utilizadas por dois motivos principais: reaproveitamento de código que pode ser utilizado em vários pontos doreaproveitamento de código, que pode ser utilizado em vários pontos do programa; divisão em blocos funcionais, facilitando seu entendimento. Exemplo: tipoRetorno nomeFunção (tipo arg1, tipo arg2,...,tipo argN) { comandos da função; 60 }
  • 31. Funções na linguagem CFunções na linguagem C Funções e variáveis só podem ser utilizadas em um programa em C depois de serem declaradasde serem declaradas. int potencia(int a, int b)t pote c a( t a, t b) { int i, ret = 1; for(i = 0; i < b; i++) ret = ret * a; return ret; } int main() { int resultado;int resultado; resultado = potencia(5, 6); printf("5 elevado a 6 vale: %d", resultado); 61 return 0; } Protótipos de funçõesProtótipos de funções Caso o código da função não esteja declarado no arquivo onde a função é chamada, é preciso declarar seu protótipo. Exemplo: float reajustaPreco(float taxa, float preco); // prototipo //Esta função não retorna nunhum valor, por isso é declarada com void void calcula()void calcula() { float novoPreco; novoPreco = reajustaPreco(1.5, 200.0); } float reajustaPreco(float taxa, float preco) // codigo da funcao {{ preco = preco * taxa; return preco; } 62
  • 32. Arquivos de cabeçalhoArquivos de cabeçalho -- BibliotecasBibliotecas Protótipos de funções, variáveis e constantes podem ser declarados em arquivos de cabeçalho, com extensão .h. Os arquivos de cabeçalho são declarados no início de um arquivo-fonte, indicando para o linkeditor procurar, em algum arquivo-objeto, o código das funções utilizadas. Exemplo: o protótipo da função reajusta() está declarado no arquivo deExemplo: o protótipo da função reajusta() está declarado no arquivo de cabeçalho economia.h e seu código está em algum outro arquivo-fonte, por exemplo, no arquivo economia.c:p q #include "economia.h" id j t ()void reajusta() { float novoPreco; novoPreco = reajustaPreco(1.5, 200.0); 63 j ( , ) ... } Variáveis locais e globaisVariáveis locais e globais • Variáveis locais: são definidas dentro de uma função, sendo válidas somente dentro da função. • Variáveis globais: definidas fora das funções, com validade para todas as funções abaixo do local de definição dessa variável. • O escopo de uma variável refere-se ao local onde esta variável é definida e tem validade. int a; // variável global void funcaoExemplo(char c) { double b; // variável local int a; // variável local 64}
  • 33. Variáveis locais e globaisVariáveis locais e globais • Alterações em variáveis locais não são visualizadas fora da função onde a variável está declarada. Exemplo: int a, b; // variáveis globais void funcao1() { int a; // variável local 2a = 2; b = 4; } i t i ()int main() { a = 3; b = 3; funcao1(); printf("a = %d e b = %d", a, b); // saída: a = 3 e b = 4 return 0; 65 } ExercíciosExercícios 1) Faça um programa com várias funções, cada uma escrevendo uma palavra de uma frase. 2) F l i l di it d i t d f di it d2) Faça um programa que leia valores digitados, interrompa quando for digitado a letra F, e forneça a somatória dos números digitados. Utilize uma função para a leitura do teclado e outra função para o cálculo da somatória. 66
  • 34. Linguagem e Técnicas de Programação C í l 8Capítulo 8 Manipulação de arquivosManipulação de arquivos 67 Manipulação de arquivosManipulação de arquivos A manipulação de arquivos em C é feita a partir da declaração de um ponteiro FILE que aponta para um arquivo Exemplo:FILE, que aponta para um arquivo. Exemplo: FILE *arq; arq = fopen("dados.txt", “w");q p ( , ) Caso o arquivo não esteja na mesma pasta que o programa executável, é preciso informar a pasta que o contém:preciso informar a pasta que o contém: arq = fopen("c:empresadados.txt", "r"); Se o arquivo não for encontrado, o ponteiro assume o valor NULL: if( arq == NULL ) { printf("Arquivo nao encontrado"); return 1; 68 return 1; }
  • 35. Modos de abertura de arquivosModos de abertura de arquivos Arquivos podem ser abertos de vários modos, sendo os mais comuns: "r" arquivo texto para leitura de dados;"r" – arquivo-texto para leitura de dados; "w" – arquivo-texto para gravação de dados – se o arquivo já existir, sobrescreve os dados existentes;sobrescreve os dados existentes; "r+" ou “w+" – arquivo-texto para leitura e escrita de dados; "a" – arquivo-texto para anexação de dados – se o arquivo já existir, escreve após os dados existentes; "rb" – arquivo-binário para leitura de dados; "wb" – arquivo-binário para gravação de dados – se o arquivo já existir, sobrescreve os dados existentes; "ab" – arquivo-binário para anexação de dados – se o arquivo já existir, 69 q p ç q j escreve após os dados existentes; Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo fopen - abre um arquivo fclose - fecha um arquivofclose - fecha um arquivo fgetc – lê um caractere de um arquivo fputc escreve um caractere em um arquivofputc – escreve um caractere em um arquivo fgets – lê uma linha de um arquivo f t li h ifputs – escreve uma linha em um arquivo fscanf – lê uma linha formatada de um arquivo fprintf – escreve uma linha formatada em um arquivo feof – retorna verdadeiro para fim de arquivo fread – lê um bloco de dados de um arquivo fwrite - escreve um bloco de dados em um arquivo 70
  • 36. Exemplo de leitura em arquivoExemplo de leitura em arquivo #include <stdio.h> #include <stdlib.h> int main() {{ float valor, total = 0; int cont = 0; FILE *arq; arq = fopen("precos.txt", "r"); if(arq == NULL) { printf(“Arquivo não encontradon");p ( q ) return 1; } while(!feof(arq)) // Le as linhas do arquivo até o finalq q { fscanf(arq, "%f", &valor); total = total + valor; cont++; } printf("O valor medio do produto e': %f n", total / cont); fclose(arq); 71 q return 0; } Exemplo de escrita em arquivoExemplo de escrita em arquivo #include <stdio.h> int main()int main() { FILE *arquivo; arquivo = fopen("c:temparquivo txt" “w");arquivo = fopen("c:temparquivo.txt", “w"); if( arquivo == NULL ) { printf("Nao foi possivel escrever no arquivo"); return 1; } fputs("Escrevendo em um arquivo!!!n", arquivo); fprintf(arquivo, "%fn", 34.6); printf("Verificar o arquivo c:temparquivo txt n");printf( Verificar o arquivo c:temparquivo.txt n ); fclose(arquivo); return 0; 72 return 0; }
  • 37. #include <stdio.h> int main() { ProgramaPrograma--exemploexemplo { float preco, total = 0; int cont = 0; FILE *arq = fopen("precos.txt", "r"); Cálculo de preço médio if(arq == NULL) { printf(“Arquivo não encontradon"); O programa abre (fopen) o arquivo precos.txt para l it (" ") Lê li h li h (f f) l dreturn 1; } fscanf(arq, "%f", &preco); leitura ("r"). Lê linha a linha (fscanf), salvando o valor de cada linha na variável preco. Quando o último valor lido for igual ou menor que 0, a estrutura fscanf(arq, %f , &preco); while(preco > 0) { de repetição while é interrompida. A seguir, é impresso na tela, pela função printf, o valor da média de preços obtido (total/cont). A média só é total = total + preco; fscanf(arq, "%f", &preco); cont++; } p ç ( / ) impressa na tela caso o arquivo tenha ao menos uma linha (if(cont > 0)). } if(cont > 0) printf("Media = %f", total/cont); 73 fclose(arq); return 0; } éLinguagem e Técnicas de Programação Capítulo 9p Ponteiros na linguagem CPonteiros na linguagem CPonteiros na linguagem CPonteiros na linguagem C 74
  • 38. PonteirosPonteiros Um ponteiro é uma variável que guarda um endereço de um outro objeto, por exemplo o endereço de uma variável ou de um dispositivo físico como umexemplo, o endereço de uma variável ou de um dispositivo físico, como um display, teclado ou arquivo. Ponteiro de variáveis: o tipo de um ponteiro deve ser igual ao tipo da variável que ele armazena o endereço. Exemplos: char *nome; // ponteiro para variavel do tipo char int *temp; // ponteiro para variavel do tipo intint temp; // ponteiro para variavel do tipo int float *ponteiroCalc; // ponteiro para variavel do tipo float Para obter o endereço de uma variável é utilizado o operador &. Para obter o valor armazenado em um endereço é utilizado o operador *. 75 PonteirosPonteiros Exemplos: int cont; int val; int *end1; int *end2; cont = 100; end1 = &cont; // end1 guarda o endereço de contend1 = &cont; // end1 guarda o endereço de cont val = *end1; // o valor da variável cont é indiretamente atribuído a val end2 = end1; // end2 guarda o endereço de cont 76
  • 39. Ponteiro como parâmetro de funçõesPonteiro como parâmetro de funções Ponteiro de variável passado como argumento de função permite modificar o valor da variávelp g ç p dentro da função: #include <stdio.h> void semPonteiros(int num) { num = num + 5; } void comPonteiros(int *num) { Saída do programa: Valor original da variável a: 1 *num = *num + 5; } int main() Valor de a após chamar a função semPonteiros: 1 Valor de a após chamar a função comPonteiros: 6 { int a = 1; printf("Valor original de a: %d n", a); semPonteiros(a); printf("Apos chamar a funcao semPonteiros: a = %d n", a); comPonteiros(&a); 77 printf("Apos chamar a funcao comPonteiros: a = %d n", a); return 0; } Pequeno programa com ponteirosPequeno programa com ponteiros #include <stdio h>#include <stdio.h> int main() { char letra = 'q'; int dia = 12; float nota = 87.8; char assunto[10] = "medicina"; char *pont1;char pont1; int *pont2; float *pont3; double *pont4; char *pont5[10]; printf("Valor da variavel letra: %c e seu endereco: %xn", letra, &letra); printf("Valor da variavel dia: %d e seu endereco: %xn" dia &dia);printf( Valor da variavel dia: %d e seu endereco: %xn , dia ,&dia); printf("Valor da variavel nota: %2.1f e seu endereco: %xn", nota, &nota); printf("Valor da variavel assunto: %s e seu endereco: %xn", assunto, assunto); printf("Endereco do ponteiro pont1: %xn", pont1); printf("Endereco do ponteiro pont2: %xn", pont2); printf("Endereco do ponteiro pont3: %xn", pont3); printf("Endereco do ponteiro pont4: %xn", pont4); printf("Endereco do ponteiro pont5: %xn" pont5); 78 printf( Endereco do ponteiro pont5: %xn , pont5); return 0; }
  • 40. Saídas do programa anteriorSaídas do programa anterior Ao ser executado o programa anterior deverá exibir algo parecido com:Ao ser executado, o programa anterior deverá exibir algo parecido com: Valor da variavel letra: q e seu endereco: 22ff6fValor da variavel letra: q e seu endereco: 22ff6f Valor da variavel dia: 12 e seu endereco: 22ff68 Valor da variavel nota: 87.8 e seu endereco: 22ff64Valor da variavel nota: 87.8 e seu endereco: 22ff64 Valor da variavel assunto: medicina e seu endereco: 22ff50 Endereco do ponteiro pont1: 77c0c2e3p p Endereco do ponteiro pont2: ffffffff Endereco do ponteiro pont3: 77bf2070 Endereco do ponteiro pont4: 77c15c94 Endereco do ponteiro pont5: 22ff10 79 Exibindo uma string utilizando ponteiroExibindo uma string utilizando ponteiro #include <stdio.h> int main() { char string[40] = "Exibindo uma string usando um ponteiro."; char *ptr_str; // Apontando para a string ptr_str = string; printf(“Inicio da string = %cnn", *ptr_str); // Exibindo toda a string usando o ponteiro while(*ptr_str) {{ putchar(*ptr_str); ptr_str++; } printf("n"); return 0; 80 return 0; } Fonte: http://br.geocities.com/sdiasneto/c_int/ponteiros.htm
  • 41. éLinguagem e Técnicas de Programação Capítulo 10p Parâmetros da função mainParâmetros da função main Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C 81 Parâmetros e retorno da função mainParâmetros e retorno da função main Declaração da função main, de acordo com o padrão ANSI C: int main(int argc, char *argv[]) int main(void) Formas aceitáveis (diferentes do padrão ANSI C): void main(int argc, char *argv[]) void main(void)( ) void main() int main() main()main() Os parâmetros argc e argv dão ao programador acesso à linha de comando 82 p g g p g com a qual o programa foi chamado.
  • 42. Parâmetros da função mainParâmetros da função main O argc (argument count) é um inteiro e possui o número de argumentos com os quais a função main() foi chamada na linha de comando. Ele vale no mínimo 1, pois o nome do programa é contado como sendo o primeiro argumento. O argv (argument values) é um ponteiro para uma matriz de strings. Cada string desta matriz é um dos parâmetros da linha de comando O argv[0]string desta matriz é um dos parâmetros da linha de comando. O argv[0] sempre aponta para o nome do programa (que, como já foi dito, é considerado i i t )o primeiro argumento). Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html 83 Parâmetros da função mainParâmetros da função main Exemplo 1: Recebe da linha de comando um conjunto de palavras e as imprime linha a linha. #include <stdio.h> #include <stdlib.h> int main(int argc char *argv[])int main(int argc, char *argv[]) { int i; for(i = 0; i < argc; i++) { printf("%sn", argv[i]); } return 0; } 84
  • 43. Parâmetros da função mainParâmetros da função main Exemplo 2: Recebe da linha de comando o dia, mês e ano, e imprimir a data em formato apropriado. Chamada do programa (data.exe): data 19 04 08 O d á i i i 19 d b d 2008O programa deverá imprimir: 19 de abr de 2008 #include <stdio.h> #include <stdlib.h> void main(int argc, char *argv[]) { int mes; char *nomemes[] = {“jan",“fev",“mar",“abr",“mai",“jun",“jul",“ago", “set", “out",“nov",“dez"}; // Verifica o numero de parametros fornecidos: parametro 1: nome do programa, // parametro2: dia, parametro 3: mes, parametro 4: dois ultimos digitos do ano if(argc == 4) { mes = atoi(argv[2]); // argv contem strings de entrada if (mes < 1 || mes > 12) // Testa se o mes e' valido i tf(" ! d t di t 2 di it ")printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos"); else printf("n%s de %s de 20%s", argv[1], nomemes[mes-1], argv[3]); } else 85 printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos"); } Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C A biblioteca padrão da linguagem C contém um conjunto de funções de uso comum, como tratamento de entrada/saída operações matemáticas e manipulação de cadeiacomo tratamento de entrada/saída, operações matemáticas e manipulação de cadeia de caracteres. O nome e as características de cada função estão em arquivos “cabeçalho”. Já a implementação das funções encontra-se em arquivos pré-cabeçalho . Já a implementação das funções encontra se em arquivos pré compilados, que são “linkados” pelo link-editor. P i i i i d b lhPrincipais arquivos de cabeçalho: • stdio.h – Manipulação de entrada/saída de dados (printf, scanf, fprintf etc). • stdlib.h – Operações diversas (system, atof, atoi etc). • string h – Tratamento de cadeia de caracteres (strcpy strlen strcmp etc)• string.h – Tratamento de cadeia de caracteres (strcpy, strlen, strcmp etc). • math.h – Funções matemáticas comuns em computação (sqrt, cos, sin, log etc). 86 • time.h – Conversão de tipos de dado de data e horário (asctime, clock, localtime etc).
  • 44. Linguagem e Técnicas de Programação Capítulo 11 Estrutura em C: structEstrutura em C: struct Comando de decião switchComando de decião switch--casecase 87 StructStruct –– agrupamento de variáveisagrupamento de variáveis Uma struct é um agrupamento de variáveis relacionadas, formando um novo tipo de dado. #include <stdio.h> struct dadosEscola { int num; char nom[20];[ ] char rua[50]; char cid[80]; char uf[3]; };} int main() { struct dadosEscola esc; esc.num = 152; strcpy(esc.nom, "Colegio Brasilia"); strcpy(esc.rua, "Rua Atibaia");py strcpy(esc.cid, "Recife"); strcpy(esc.uf, "PE"); printf("%s: %s n. %d, %s - %s n", esc.nom, esc.rua, esc.num, esc.cid, esc.uf); 88 p return 0; }
  • 45. Comando switchComando switch--casecase O comando de decisão switch-case é utilizado quando há um grande número de condições a serem testadas com respectivas decisões a serem tomadasde condições a serem testadas, com respectivas decisões a serem tomadas. Exemplo: i t diint dia; printf("Digite o numero de um dia da semana"); scanf("%d", &dia); switch(dia) { case 1: printf("domingo");p g break; case 2: printf("segunda"); break; // outros cases case 7: printf("sabado"); 89 printf( sabado ); break; } Linguagem e Técnicas de Programação C ít l 12Capítulo 12 PréPré--processador e Macrosprocessador e Macros 90
  • 46. PréPré--processador e Macrosprocessador e Macrospp O pré-processador é uma aplicação executada antes de se executar op p p ç compilador, para resolver as instuções e diretivas de pré-processamento que o código-fonte possa ter. Todas as instuções e diretivas de pré-processamento são precedidas do caractere #. Macros são porções de código que são substutuídas, pelo pré-processador, antes do compilador converter o códigoantes do compilador converter o código. Um exemplo de macro é a definição de uma constante numérica: #define MAX 100 91 Macros de funçõesMacros de funçõesçç É possível transformar funções simples em macros.p ç p Quando se deseja que os parâmetros de uma função simples sejam genéricos quanto ao tipo pode-se transformar a função em uma macroquanto ao tipo, pode-se transformar a função em uma macro. Exemplo: #include <stdio.h> // A macro Mult pode receber parâmetros int, char, float ou double // e devolve como resultado a multiplicação dos parâmetros #define Mult(x,y) x*y main()main() { printf("%d n", Mult(3,4)); printf("%f n", Mult(3.5,5.2)); 92 }
  • 47. Outras diretivas de préOutras diretivas de pré--processamentoprocessamentopp pp A diretiva #include é utilizada para indicar ao pré-processador para substituir ap p p p linha em que se encontra pelo conteúdo do arquivo que é colocado leogo após. Exemplo: #include <stdio.h> // subsitui esta linha pelo conteúdo do arquivo stdio.h // b it i t li h l t úd d i t h// subsitui esta linha pelo conteúdo do arquivo motor.h #include “c:userstrabalhomotor.h” A diretiva #pragma indica ao compilador para tomar determinadas atitudes, de acordo com o valor passado. Exemplo: // indica que a compilação deve ser otimizada para o PIC16C54 #pragma device PIC16C54 93 Linguagem e Técnicas de Programação C ít l 13Capítulo 13 Exercícios selecionadosExercícios selecionados 94
  • 48. 1) Um usuário digita um número no teclado Imprima a tabuada deste número1) Um usuário digita um número no teclado. Imprima a tabuada deste número. 2) Faça um programa que armazena números em uma matriz 2x2 ou 3x3 e mostra o determinante da matriz armazenada. 3) Monte o fluxograma e crie um programa que aponta se uma pessoa é obrigada ou não a votar ou se é o voto é opcional, de acordo com a sua idade, digitada no teclado. 4) Um arquivo contém um número indeterminado de linhas, contendo um número em cada linha. Crie um segundo arquivo no qual cada linha contém um númerocada linha. Crie um segundo arquivo no qual cada linha contém um número corresponde a duas vezes o valor do número do primeiro arquivo, linha-a-linha. 5) C i fl ál l d í d d d5) Criar um fluxograma para o cálculo das raízes de uma equação de segundo grau, dados os coeficientes a, b e c. A seguir, implemente o algoritmo em linguagem C. 95 6) Criar um fluxograma para dividir em 4 listas cidadãos brasileiros, ingleses, japoneses e outros. Para cada cidadão, o programa pede a nacionalidade e o nome. Ao final, imprima as quatro listas. 7) Faça um programa em linguagem C que receba, via teclado, as notas de três provas de 40 alunos e, no final, exiba na tela a nota média de cada aluno. Dica: utilize o seguinte vetor bidimensional: float notas[40][3].Dica: utilize o seguinte vetor bidimensional: float notas[40][3]. 8) Faça um programa em linguagem C que lê duas palavras do teclado e, caso elas sejam iguais, escreve na tela o número de caracteres dessas palavras; caso asj g , p ; palavras sejam diferentes, escreve na tela a diferença entre os números de caracteres das duas palavras. 9) Faça um programa que armazene um login e senha de acesso restrito. A seguir, o programa deve permitir acesso apenas aos usuários que acertarem o login e senhasenha. 10) Faça um programa que calcula qual o montante acumulado em um ano por uma aplicação que rende 2% ao mês com depósitos mensais de R$ 1000 00 96 aplicação que rende 2% ao mês, com depósitos mensais de R$ 1000,00.
  • 49. 11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada.11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada. #include <stdio.h> main() { int a, b, c; Sequência digitada Letra escrita na tela 7 3 4 scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); 8 4 1 2 2 2 if((a == 7 || b != 2) && c < 4) printf("X"); else {{ if (a%b == 0) printf("Y"); else printf("Z");printf( Z ); } } 97 12) O que será impresso na tela após a execução do programa abaixo: #include <stdio.h> int f1(int a, int b, int *c, int *d) { a = 15; b = *c; *c = *d; return b + a;return b + a; } int main(void) { int var1 = 1; int var2 = 2; int var3 = 3; int var4 = 4; fl 5 6float var5, var6; var4 = f1(var1, var2, &var3, &var4); var5 = 2.5; var6 = 5 7;var6 = 5.7; printf("%d - %d - %d - %dn", var1, var2, var3, var4); printf("%.1fn", var6 - var5); puts("var4 – var2"); 98 p return 0; }