SlideShare uma empresa Scribd logo
1 de 120
1
FATEC de Santo André
Tecnologia em Eletrônica Automotiva
Linguagens e Técnicas de Programação
Notas de Aula
Prof.: Rogério
Email: fatec.sa.informatica@gmail.com
Página da disciplina: http://sites.google.com/site/fatecprogramacao
2
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ático
1. Introdução à lógica de programação;
2. Algoritmos: pseudocódigo e fluxograma;
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 e compilação;
6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções;
7. Compilador e ambiente de desenvolvimento para a linguagem C;
8. Vetores;
9. Strings;
10. Funções;
11. Ponteiros;
12. Manipulação de arquivos.
Bibliografia utilizada na disciplina
- Linguagem C. Luis Damas; LTC Editora, 10a
edição, 2007.
- 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.
3
Linguagem e Técnicas de Programação
Capítulo 1
Noções básicas deNoções básicas de
algoritmos e programaçãoalgoritmos e programação
4
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çã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;
c. Compra e venda automática de ações na bolsa de valores.
• Exercício:
- Criar um algoritmo para cadastrar o login e a senha de acesso a um site. A
seguir, crie outro algoritmo que libera o acesso ao site, ao ser fornecido o login
e a senha corretos – o acesso é bloqueado após três tentativas com erro.
5
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:
– char: guarda um caractere.
– int: guarda um número inteiro.
– float e double: guardam um número real.
• Exemplos:
char primeiraLetra;
int anoFabricacao;
float velocidadeCarro;
double velocidadeLuz;
6
Comandos bComandos báásicossicos
3) Operadores aritméticos:
mais +
menos -
vezes *
dividir /
resto %
decrementa --
incrementa ++
opera e atribui += -= *= /=
2) Operadores lógicos:
e &&
ou ||
não !
4) Operadores relacionais:
é igual? ==
é diferente? !=
é maior? >
é menor? <
é maior ou igual? >=
é menor ou igual? <=
1) Atribuição:
quilometroRodado = 23458;
a = b;
temperaturaAlta = 23.56;
7
Linguagem e Técnicas de Programação
Capítulo 2
Lógica de ProgramaçãoLógica de Programação
8
Lógica de programação:Lógica de programação:
Bloco de comandos – execução sequencialBloco de comandos – execução sequencial
Pseudocógido Fluxograma
9
Estrutura de decisãoEstrutura de decisão
Alternativa simples Alternativa composta
10
Estruturas de decisãoEstruturas de decisão aninhadasaninhadas
Se a estrutura de decisão tem apenas um
comando, o uso de chaves é dispensável; para
dois ou mais comandos associados, 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
}
11
Estrutura de repetição com teste no começoEstrutura de repetição com teste no começo
12
Estrutura de repetição com teste no finalEstrutura de repetição com teste no final
13
Comando break (abandone)Comando break (abandone)
14
Comando continueComando continue
15
Estrutura de repetição com variável de controleEstrutura de repetição com variável de controle
16
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 são escritos na tela os números encontrados.
encontraMaiorMenor()
{
int maior, menor, valor;
valor = leTeclado();
maior = valor;
menor = valor;
enquanto (valor != 0)
{
se (valor > maior)
maior = valor;
senão
{
se (valor < menor)
menor = valor;
}
valor = leTeclado();
}
imprima(maior, menor);
}
17
ExercíciosExercícios
1) 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 um algoritmo
que imprime o fatorial de um número digitado no teclado.
3) Descrever em pseudocódigo e em fluxograma um algoritmo
que lê um número inteiro de um teclado, calcula a
somatória de todos os números entre 1 e o número digitado
e escreve na tela o valor obtido.
18
Linguagem e Técnicas de Programação
Capítulo 3
Introdução à LinguagemIntrodução à Linguagem
de Programação Cde Programação C
19
Linguagens de programaçãoLinguagens de programação
• Linguagem de programação: conjunto finito de símbolos com os
quais se escrevem programas de computador.
• Exemplos de linguagem de programação: C, C++, Java, Pascal,
Cobol, Basic, PHP, 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, PHP, Perl etc.
• Linguagens com compilação e interpretação: Java.
• Linguagem de montagem ou Assembly é uma notação razoavelmente
legível por humanos, correspondente ao código de máquina.
20
Linguagem de programação com compilaçãoLinguagem de programação com compilação
• Programa descrito em uma linguagem de programação:
sequência de comandos compreendida por um ser humano.
• Programa 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 de
programação para códigos de máquina de uma CPU.
while(i < 10)
{
printf("%d", i);
i++;
}
compilador
10011101
00110001
01100111
11110101
11110001
21
Comparação entre linguagens de programaçãoComparação entre linguagens de programação
código nível vantagens desvantagens
código de
máquina
baixo
acesso a
todos os
recursos do
hardware
dificuldade de
programação
C médio
acesso a
todos os
recursos do
hardware
erros de
programação podem
comprometer o
funcionamento do
hardware
Java alto
facilidade de
programação
baixo aceso aos
recursos do
hardware
22
Código-fonte e código-executávelCódigo-fonte e código-executável
• Código-fonte: contém todos os comandos de um programa,
expressos em uma linguagem de programação.
• Có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 no
código-fonte.
• No 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
extensão .sh, entre outras.
23
Linguagem de programação CLinguagem de programação C
• 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;
- confiabilidade;
- simplicidade;
- muito utilizada para microprocessadores.
24
Regras geraisRegras gerais
• Os programas, em linguagem C, são compostos por uma ou mais
funções.
• As funções podem possuir argumentos e um tipo de retorno.
• Todo programa inicia-se com uma chamada à função main:
main()
{
comando1;
• comando2;
• ...
}
25
Regras geraisRegras gerais
• A linguagem C faz distinção entre maiúsculas e minúsculas. Exemplo: a
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:
if (a > b && d < e) while( a > 0 )
{ {
printf(“mensagem 1”); a = a – 1;
printf(“mensagem 2”); printf(“%d”, a);
} }
Sem ponto-e-vírgula! Sem ponto-e-vírgula!
Com ponto-e-vírgula! Com ponto-e-vírgula!
26
Tipos de VariáveisTipos de Variáveis
• A linguagem C dispõe de quatro tipos básicos de dados. As declarações
de variáveis, portanto, podem usar os seguintes tipos:
Número real (ponto flutuante com precisão dupla:
15 dígitos, limitados a: +/-1.7*10+/-308
)
8double
Número real (ponto flutuante com precisão simples:
7 dígitos, limitados a: +/-3.4*10+/-38
)
4float
Número inteiro (ANSI: de -32768 a 32767
(atualmente: de -2147483648 a 2147483647)
2 (padrão ANSI)
4 (atualmente)
int
Um caractere (ou, reciprocamente, um inteiro de
-128 a 127)
1char
ValorTamanho (bytes)Tipo
27
Especificadores de VariáveisEspecificadores de Variáveis
• Além do tipo da variável, podem ser utilizados alguns “especificadores”:
- unsigned: permite apenas números positivos;
- long: amplia o tamanho de um tipo de variável;
- short: restringe o tamanho de um tipo de variável.
• Exemplos
- long int: variável int com 64 ou 32 bits, dependendo do compilador;
- short int: variável int com 16 ou 8 bits, dependendo do compilador;
- unsigned int: variável int com valores entre 0 e 4 bilhões.
28
Palavras reservadas da linguagem CPalavras reservadas da linguagem C
Palavras reservadas pelo padrão ANSI Algumas outras palavras reservadas
asm
cdecl
interrupt
near
far
huge
Observação importante: palavras reservadas não podem ser
usadas como nomes de variáveis.
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
29
Bloco de comandosBloco de comandos
30
Estrutura de decisãoEstrutura de decisão
31
Estrutura de repetição com teste no começoEstrutura de repetição com teste no começo
32
Estrutura de repetição com teste no finalEstrutura de repetição com teste no final
33
Estrutura de repetição com variável de controleEstrutura de repetição com variável de controle
34
Comando break (abandone)Comando break (abandone)
35
Comando continueComando continue
36
Linguagem e Técnicas de Programação
Capítulo 4
Primeiros programasPrimeiros programas
em Linguagem Cem Linguagem C
37
Função printfFunção printf
Sintaxe: printf ( "expressão de controle", argumentos )
• A 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 e
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:
printf(“nnEste eh o numero dois: %d", 2);
printf("Aluno: %s t Nota: %f", "Pedro", 7.5);
Expressão de controle argumento
38
Função printfFunção printf
- Formatadores:
%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
n nova linha (pula uma linha)
t tab (insere espaços de uma tabulação)
" aspas (usado quando se quer imprimir aspas)
 barra (usado quando se quer imprimir uma barra)
39
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).
• 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;
printf("Digite um numero: ");
scanf("%d", &num);
printf(“Numero digitado: %d", num);
%d é substituído pelo valor da
variável num
A variável num recebe o número digitado,
utilizando o operador &
40
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ível.
• Na linguagem C, os comentários são colocados dentro dos marcadores
/* 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
a = 0;
/* Estas duas linhas também são comentários
e serão descartadas no momento da compilação */
41
Ambientes de desenvolvimento paraAmbientes de desenvolvimento para
programação em Linguagem Cprogramação em Linguagem C
●
Ambiente de desenvolvimento ou IDE (Integrated Development
Environment):
- edição e depuração (debug) do código-fonte;
- compilador C - geração do arquivo-executável.
●
Utilizado para desenvolvimento de programas C e C++;
●
Nesta disciplina: Projetos C – Aplicações de Console.
●
Algumas IDEs para desenvolvimento de programas em C:
CodeBlocks, DevC++, Eclipse.
42
Ambiente de desenvolvimentoAmbiente de desenvolvimento
Procedimentos para criar um arquivo-executável:
1) Crie um projeto na aba File > New Project (Console Application – C);
2) Dê um nome ao projeto (que será o nome do arquivo-executável);
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-
executável, com a extensão .exe.
43
Programa-exemploPrograma-exemplo
- Primeiro programa: números na tela
#include <stdio.h>
#include <stdlib.h>
/* Primeiro programa de exemplo */
int main()
{
int i;
for(i = 1; i < 10; i++)
{
printf ("Numero: %dt", i);
printf ("elevado ao quadrado: %dn", i*i);
}
return 0;
}
44
Programa-exemploPrograma-exemplo
- Segundo programa: cálculo de fatorial
#include <stdio.h>
#include <stdlib.h>
int main()
{
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);
return 0;
}
45
Programa-exemploPrograma-exemplo
- Terceiro programa: conversão de anos em dias
// Programa-exemplo
#include <stdio.h>
#include <stdlib.h>
int main()
{
/* declaracao das variaveis */
int dias;
float anos;
printf ("Entre com o numero de dias: "); // imprime mensagem na tela
scanf ("%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;
}
46
#include <stdio.h>
#include <stdlib.h>
int main() {
int i, n;
float valor, media, soma = 0;
printf("Quantos numeros serao digitados?n");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
printf("Digite o %do. numeron", i);
scanf("%f", &valor);
soma = soma + valor;
}
printf("nSomatoria dos %d valores lidos: %fn", n, soma);
system("pause");
media = soma / n;
printf("nValor medio dos %d valores lidos: %fn", n, media);
return 0;
}
Somatória e média
47
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char finaliza = 'n';
float num;
while(finaliza != 's')
{
printf("Digite um numeron");
scanf("%f", &num);
printf("Raiz de %f = %.3fn", num, sqrt(num));
printf("nPara encerrar digite sn");
fflush(stdin); // Limpa buffer do teclado
finaliza = getchar(); // Obtém um caracter
}
printf("Fimn");
return 0;
}
Estrutura de repetição com finalização
48
ExercíciosExercícios
1) Crie um fluxograma e um programa em linguagem C, que pergunta ao
usuário qual a sua idade e indica de ele pode ou não votar, ou se seu voto é
opcional.
2) Crie um programa em linguagem C que, ao se digitar um dia de um ano
(entre 1 e 365), indica qual o dia e o mês correspondentes.
3) Pesquise sobre a Tabela ASCII e crie um programa que escreva na tela os
valores desta tabela.
49
Linguagem e Técnicas de Programação
Capítulo 5
VetoresVetores
50
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].
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 duas
dimensões e temperaturaPosicao tem três dimensões.
Vetores de duas dimensões são também conhecidos como matrizes.
51
Indexaçã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;
52
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;
posicao[0][2] = 3;
posicao[1][0] = 4;
posicao[1][1] = 5;
posicao[1][2] = 6;
posicao[2][0] = 7;
posicao[2][1] = 8;
posicao[2][2] = 9;
1 2 3
4 5 6
7 8 9
53
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 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. Deve-se verificar a atribuição de valores
para um índice maior que o tamanho de uma dimensão do vetor.
Um vetor pode ser inicializado na sua declaração:
int i[5] = {13, -2, 0, -34, 43};
Ex.: o código abaixo será compilado, mas está ERRADO pois invade memória
não reservada. A posição máxima permitida seria precos[4].
float precos[5];
precos[8] = 15.50;
54
Escrever e ler valores em um vetorEscrever e ler valores em um vetor
#include <stdio.h>
#include <stdlib.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);
printf("Media do aluno 12: %f n", soma2/2);
return 0;
}
55
Programa-exemploPrograma-exemplo
#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;
v[0] = 1;
for(i = 1; i < n; i++)
{
v[i] = v[i-1] * i;
printf("Fatorial de %d: %dn", i, v[i]);
}
return 0;
}
56
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
// Imprime o rendimento de uma aplicação mensal, com a taxa de juros digitada
int main()
{
int i;
float deposito[12]; // 12 meses
float 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);
scanf("%f", &deposito[i]); // Recebe os depositos mensais
}
// Calcula os rendimentos
for(i = 0; i < 12; i++)
{
printf("Deposito do mes %d: %.2fn", i+1, deposito[i]);
total = total + deposito[i] + (total * juros/100.0);
printf("Total acumulado: %.2fn", total);
}
return 0;
}
57
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
// Cálculo de determinante de matriz 2x2
int main()
{
int i, j;
float det;
float m[2][2];
printf("Digite os quatro elementos de uma matriz 2x2n");
for(i = 0; i < 2; i++)
{
for(j = 0; j < 2; j++)
{
printf("Digite um numeron");
scanf("%f", &m[i][j]);
}
}
det = m[0][0]*m[1][1] - m[0][1]*m[1][0];
printf("nDeterminante dessa matriz: %fn", det);
return 0;
}
58
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
int main() // Médias de provas de alunos
{
int i, j, alunos, provas;
float soma[40], notas[40][5];
printf("Qual a quantidade de alunos?n");
scanf("%d", &alunos);
printf("Qual a quantidade de provas?n");
scanf("%d", &provas);
for(i = 0; i < alunos; i++) {
soma[i] = 0;
for(j = 0; j < provas; j++) {
printf("Digite a nota da prova %d do aluno %dn", j+1, i+1);
scanf("%f", &notas[i][j]);
soma[i] += notas[i][j];
}
}
for(i = 0; i < alunos; i++)
printf("Media do aluno %d: %.1fn", i, soma[i] / provas);
return 0;
}
59
ExercíciosExercícios
1) Crie 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) Crie 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.
3) Crie um programa que calcule o determinante de uma matriz 3x3, cujos
elementos são inseridos via teclado.
60
Linguagem e Técnicas de Programação
Capítulo 6
StringsStrings
61
String – vetor de caracteresString – vetor de caracteres
Strings são vetores constituídos por caracteres:
char nomeEscola[18];
strcpy(nomeEscola, "FATEC SANTO ANDRE");
- A função strcpy atribui um conteúdo a string nomeEscola, que pode
armazenar até 17 caracteres.
- Strings são SEMPRE terminadas com o caracter nulo: 0. Portanto, devem ter
uma posição a mais que a quantidade de caracteres armazenados:
- Uma string pode ser inicializada em sua declaração:
char produto[15] = "Computador";
62
Funções de manipulação de stringsFunções de manipulação de strings
gets(str): lê uma sequência de caracteres do teclado e grava na string str.
puts(str): escreve na tela a sequência de caracteres armazenados em str.
scanf(“%s”, &str): lê uma sequência de caracteres do teclado e grava na string str.
printf(“%s”, str): escreve na tela a sequência de caracteres armazenados em str.
strcpy(strDest,strOrig): copia a string strOrig para a string strDest.
strcat(str1, str2): anexa a string str2 no final da string str1.
int atoi(str): converte uma string em um número inteiro.
float atof(str): converte uma string em um número real.
int strlen(str): retorna o tamanho (núm. de caracteres) da string str.
int 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;
caso contrário, retorna um número negativo.
63
Lendo uma string de um tecladoLendo uma string de um teclado
A melhor maneira de ler uma string de um teclado é com a função gets. Outra
maneira é com a função scanf, se não houver espaços em branco:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char s1[80], s2[80];
printf("Informe duas strings:n");
// Pode-se obter uma String com gets ou com scanf (sem utilizar &)
gets( s1 );
scanf("%s", s2);
printf("nStrings digitadas: %s, %sn", s1, s2);
printf("Quantidade de caracteres: %d, %dn", strlen(s1), strlen(s2));
return 0;
}
64
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");
65
Vetor de StringsVetor de Strings
- Vetores de strings são comuns em C. Eles são declarados e inicializados
como qualquer vetor bidimensional, mas a maneira de utilizá-los difere um
pouco. Por exemplo, o que faz a declaração abaixo?
char lista_nomes[10][40];
Este comando especifica um vetor chamado lista_nomes, que contém até 10
strings, com até 39 caracteres cada (descartando o 0 final). Para acessar uma
das strings deste vetor, especifique apenas o primeiro índice. Por exemplo,
para escrever na tela o quinto nome armazenado, utilize o seguinte comando:
printf (“%s”, lista_nomes[4]);
66
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() // Substitui espaços por mudança de linha
{
int pos = 0;
char caracter;
char texto[500];
puts("Digite um texto granden");
gets(texto);
do
{
caracter = texto[pos];
if (caracter == ' ')
texto[pos] = 'n';
pos++;
} while(caracter != '0');
puts(texto);
return 0;
}
67
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
Este programa inverte a ordem de todos os caracteres de um texto
*/
int main()
{
int i, tamanho;
char texto[500];
puts("Digite um texto granden");
gets(texto);
tamanho = strlen(texto);
for(i = tamanho - 1; i >= 0; i--)
putchar(texto[i]); // Escreve o caracter de índice i da string texto
return 0;
}
68
Programa-exemploPrograma-exemplo
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
Este programa inverte a ordem de todas as palavras de um texto
*/
int main()
{
int i, j, word = 0, pos = 0, ini = 0;
char caracter;
char texto[500];
char palavras[100][20];
puts("Digite um texto granden");
gets(texto);
// Continua na página seguinte
69
Programa-exemploPrograma-exemplo
// Continuação da página anterior
do
{
caracter = texto[pos];
if (caracter == ' ' || caracter == '0')
{
j = 0;
for(i = ini; i < pos; i++)
{
palavras[word][j] = texto[i];
j++;
}
palavras[word][j] = '0';
ini = pos + 1;
word++;
}
pos++;
} while(caracter != '0');
for(i = word - 1; i >= 0; i--)
printf("%s ", palavras[i]);
return 0;
}
70
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) 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ê três nomes digitados do teclado, ordena
alfabeticamente esses nomes e apresenta a lista de nomes ordenada.
4) Qual o valor da variável x abaixo?
strcpy(s1, “1000”); strcpy(s2, “99”); x = strcmp(s1, s2);
5) Implementar o algoritmo de cadastro/acesso a um site, descrito na página 4.
71
Linguagem e Técnicas de Programação
Capítulo 7
Estrutura em C: structEstrutura em C: struct
Conversão de variáveis: castConversão de variáveis: cast
Funções matemáticasFunções matemáticas
Comando de decião múltipla: switch-caseComando de decião múltipla: switch-case
72
Struct – agrupamento de variáveisStruct – agrupamento 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");
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);
return 0;
}
73
Conversão de variáveis: castConversão de variáveis: cast
A linguagem C permite converter um tipo de variável em outro (cast), utilizando
parênteses a frente da variável a ter seu valor convertido. Exemplo:
int main()
{
int a;
float b;
double c;
b = 25.76;
// Conversão de float para int
a = (int)b; // Neste cast, a variavel a recebe o valor 25
printf("a: %d, b: %f n", a, b);
a = 40;
// Conversão de int para double
c = (double)a; // Neste cast, a variavel c recebe o valor 40.000000
printf("a: %d, c: %f n", a, c);
return 0;
}
74
Conversão de variáveis com stringsConversão de variáveis com strings
Cabe observar que o cast não é possível com variáveis string. Neste caso, é
necessário utilizar as funções sprintf, atoi e atof. Exemplo:
int main()
{
int a;
float b;
char d[20] = "30.2";
// Conversão de string para float
b = atof(d); // Neste caso, a variavel b recebe o valor 30.200000
printf("b: %f, d: %s n", b, d);
a = 49;
// Conversão de int para string
sprintf(d, "%d.55", a); // Neste caso, d recebe o valor "49.55"
printf("a: %d, d: %s n", a, d);
return 0;
}
75
Funções matemáticasFunções matemáticas
A Linguagem C oferece várias funções matemáticas. Para utilizá-las, deve-se
declarar a biblioteca math.h.
- Exemplos de funções:
#include <math.h>
x = sin(y); // x recebe o seno de y
x = cos(y); // x recebe o cosseno de y
x = sqrt (y); // x recebe a raiz quadrada de y
w = pow(x, y); // w recebe x elevado a y
y = exp(x); // y recebe e elevado a x
y = log(x); // y recebe o logaritmo de x na base e. Não use com x negativo.
y = log10(x); // y recebe o logaritmo de x na base 10. Não use com x negativo.
76
Comando switch-caseComando switch-case
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 tomadas.
int dia;
printf("Digite o numero de um dia da semana");
scanf("%d", &dia);
switch(dia)
{
case 1:
printf("domingon");
break;
case 2:
printf("segundan");
break;
// outros cases
case 7:
printf("sabadon");
break;
default:
printf("dia invalidon");
}
77
Linguagem e Técnicas de Programação
Capítulo 8
Manipulação de arquivosManipulação de arquivos
78
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 *arq;
arq = fopen("dados.txt", "w");
Caso o arquivo não esteja na mesma pasta que o programa executável, é
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;
}
79
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;
"w" – arquivo-texto para gravação de dados – se o arquivo já existir,
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,
escreve após os dados existentes;
80
Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo
arq = fopen(“arquivo.txt”, “w”);
Abre um arquivo para leitura e/ou escrita, retornando um ponteiro para este
arquivo, ou NULL em caso de falha.
fclose(arq);
Fecha um arquivo, retornando 0 (sucesso) ou a constante EOF (erro).
x = fgetc(arq);
Lê um caractere de um arquivo, retornando-o.
c = fputc(‘A’, FILE *arq)
Escreve o caractere ‘A’ no arquivo apontado pelo ponteiro arq. Em caso de
sucesso, retorna o caracter; em caso de erro, retorna a constante EOF.
81
Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo
fgets(s, n, arq)
Lê uma linha, com até n-1 caracteres, de um arquivo, colocando-a em s. A
string lida também é retornada pela função.
fputs(s, arq)
Escreve a string s em uma linha de um arquivo. A função retorna um valor
não-negativo, em caso de sucesso, ou EOF, em caso de falha.
fscanf(arq, “%d”, &x)
Lê uma linha formatada de um arquivo.
fprintf(arq, “escreve %d”, x)
Escreve uma linha formatada em um arquivo.
82
Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo
x = feof(arq)
Retorna verdadeiro (1) quando a leitura de um arquivo chegou ao fim, ou
falso (0), quando ainda há linhas a serem lidas.
fread(ptr, size, n, arq)
Lê um conjunto de elementos de um arquivo, colocando-os em uma variável
apontada por ptr. Cada elemento deve possuir um número de bytes
indicados por size, sendo lidos n elementos do arquivo.
fwrite(ptr, size, n, arq)
Escreve um conjunto de elementos (apontados por ptr) em um arquivo. Cada
elemento deve possuir um número de bytes indicados por size, sendo
escritos n elementos no arquivo.
83
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");
return 1;
}
while(!feof(arq)) // Le as linhas do arquivo até o final
{
fscanf(arq, "%f", &valor);
total = total + valor;
cont++;
}
printf("O valor medio do produto e': %f n", total / cont);
fclose(arq);
return 0;
}
84
Exemplo de escrita em arquivoExemplo de escrita em arquivo
#include <stdio.h>
int main()
{
FILE *arquivo;
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");
fclose(arquivo);
return 0;
}
85
#include <stdio.h>
int main()
{
float nota, total = 0;
int cont = 0;
FILE *arq = fopen("notas.txt", "r");
if(arq == NULL) {
printf("Arquivo não encontradon");
return 1;
}
fscanf(arq, "%f", &nota);
while(nota > 0) {
total = total + nota;
fscanf(arq, "%f", &nota);
cont++;
}
if(cont > 0)
printf("Media = %.1f", total/cont);
fclose(arq);
return 0;
}
Programa-exemploPrograma-exemplo
Cálculo de média de notas
O programa abre (fopen) o arquivo notas.txt para
leitura ("r"). Lê linha a linha (fscanf), salvando o
valor de cada linha na variável nota. Quando o
último valor lido for igual ou menor que 0, a
estrutura de repetição while é interrompida. A
seguir, é impresso na tela, pela função printf, o
valor da média das notas (total/cont). A média
só é impressa na tela caso o arquivo tenha ao
menos uma linha.
86
Linguagem e Técnicas de Programação
Capítulo 9
Funções e Escopo de VariáveisFunções e Escopo de Variáveis
87
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 do
programa;
➢
divisão em blocos funcionais, facilitando seu entendimento.
Exemplo:
tipoRetorno nomeFunção (tipo arg1, tipo arg2,...,tipo argN)
{
comandos da função;
}
88
Funções e variáveis só podem ser utilizadas em um programa em C depois de
serem declaradas
void atraso()
{
int i, j;
for(i = 0; i < 10000; i++)
for(j = 0; j < 10000; j++);
}
int potencia(int a, int b)
{
int i, ret = 1;
for(i = 0; i < b; i++)
ret = ret * a;
return ret;
}
int main()
{
int resultado, x, y;
resultado = potencia(5, 6);
printf("5 elevado a 6 vale: %dn", resultado);
atraso();
printf("Digite dois numerosn");
scanf("%d", &x);
scanf("%d", &y);
printf("%d elevado a %d vale: %dn", x, y, potencia(x, y));
atraso();
printf("%d elevado a %d vale: %dn", y, x, potencia(y, x));
89
Protótipos de funçõesProtótipos de funções
O código da função deve ser declarado no arquivo onde a função é utilizada,
e posicionada acima do trecho de código que faz referência à função, ou
então, é 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()
{
float novoPreco;
novoPreco = reajustaPreco(1.5, 200.0);
}
float reajustaPreco(float taxa, float preco) // codigo da funcao
{
preco = preco * taxa;
return preco;
}
90
Arquivos de cabeçalho - BibliotecasArquivos de cabeçalho - Bibliotecas
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 de
cabeçalho economia.h e seu código está em algum outro arquivo-fonte, por
exemplo, no arquivo economia.c:
#include "economia.h"
void reajusta()
{
float novoPreco;
novoPreco = reajustaPreco(1.5, 200.0);
...
}
91
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
}
92
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
a = 2;
b = 4;
}
int main()
{
a = 3;
b = 3;
funcao1();
printf("a = %d e b = %d", a, b); // saída: a = 3 e b = 4
return 0;
}
93
ExercíciosExercícios
1) Faça um programa com várias funções, cada uma escrevendo uma palavra da
seguinte frase:
“Fatec Santo André – Eletrônica Automotiva”
1) 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.
2) Crie uma função que calcule o volume de um paralelepípedo, de acordo com suas
dimensões, conforme utilização na função main:
void main()
{
doble valor;
valor = volume(4.567, 3.5645, 5.666);
printf(“Volume: %fn”, valor);
}
94
Linguagem e Técnicas de Programação
Capítulo 10
Ponteiros na linguagem CPonteiros na linguagem C
95
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 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 int
float *ponteiroCalc; // ponteiro para variavel do tipo
float
FILE * arq // ponteiro para um arquivo
Para obter o endereço de uma variável é utilizado o operador &.
96
Exemplos de utilização de ponteirosExemplos de utilização de ponteiros
int cont;
int val;
int *end1;
int *end2;
// atribui o valor 100 à variável
cont
cont = 100;
// end1 guarda o endereço de
cont
end1 = &cont;
// o valor da variável cont é
indiretamente atribuído a val
val = *end1;
// end2 guarda o endereço de
100
100
0A00
0A00
cont
val
end1
end2
endereços memória variáveis
0A00
0A04
0A08
0A0C
97
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ável
dentro da função:
#include <stdio.h>
void semPonteiros(int num)
{
num = num + 5;
}
void comPonteiros(int *num)
{
*num = *num + 5;
}
int main()
{
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);
printf("Apos chamar a funcao comPonteiros: a = %d n", a);
return 0;
}
Saída do programa:
Valor original da variável a: 1
Valor de a após chamar a função semPonteiros: 1
Valor de a após chamar a função comPonteiros: 6
98
Ponteiro como parâmetro de funçõesPonteiro como parâmetro de funções
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void raizes(int a1, float *r1, int a2, float *r2)
{
*r1 = sqrt(a1);
*r2 = sqrt(a2);
}
int main()
{
float v1, v2;
int b1, b2;
printf("Digite dois numeros inteirosn");
scanf("%d", &b1);
scanf("%d", &b2);
raizes(b1, &v1, b2, &v2);
printf("Raiz quadrada de: %d = %fn", b1, v1);
printf("Raiz quadrada de: %d = %fn", b2, v2);
return 0;
}
99
// Programa-exemplo com ponteiros
#include <stdio.h>
#include <stdlib.h>
int main()
{
char letra = 'q';
int dia = 12;
int *end;
float nota = 87.8;
end = &dia;
char assunto[10] = "medicina";
char *pont1;
int *pont2;
double *pont3;
char *pont4[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 nota: %2.1f e seu endereco: %xn", nota, &nota);
printf("Valor apontado por end: %d e o endereco que ele contem: %xn", *end,
end);
printf("Valor da variavel assunto: %s e seu endereco: %xn", assunto, assunto);
printf("Endereco que o ponteiro pont1 contém: %xn", pont1);
printf("Endereco que o ponteiro pont2 contém: %xn", pont2);
printf("Endereco que o ponteiro pont3 contém: %xn", pont3);
printf("Endereco que o ponteiro pont4 contém: %xn", pont4);
return 0;
100
Exibindo uma string utilizando ponteiroExibindo uma string utilizando ponteiro
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char texto[40] = "Exibindo uma string usando um ponteiro.";
char *ptr_str;
ptr_str = texto; // Apontando para o inicio da string
printf("Inicio da string = %cnn", *ptr_str);
// Exibindo toda a string usando o ponteiro
while(*ptr_str != '0')
{
putchar(*ptr_str);
usleep(100000);
ptr_str++;
}
printf("n");
return 0;
}
101
ExercíciosExercícios
1) Faça programa com uma função que recebe 2 números e devolve a soma, multiplicação,
divisão e subtração desses números, e retorna o valor de um número elevado pelo outro.
2) a) Sendo p um ponteiro, explique a diferença entre:
p++; (*p)++; *(p++);
b) O que quer dizer *(p+10) ?
c) Qual o valor de y no final do programa abaixo? A seguir, escreva um /* comentário */
em cada comando de atribuição explicando o que ele faz e o valor da variável à esquerda do
'=' após sua execução.
int main()
{
int y, *p, x;
y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
x--;
(*p) += x;
printf ("y = %dn", y);
return(0);
}
(fonte: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c620.html)
102
Linguagem e Técnicas de Programação
Capítulo 11
Parâmetros da função mainParâmetros da função main
Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C
103
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()
Os parâmetros argc e argv dão ao programador acesso à linha de comando
com a qual o programa foi chamado.
104
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]
sempre aponta para o nome do programa (que, como já foi dito, é considerado
o primeiro argumento).
Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
105
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 i;
for(i = 0; i < argc; i++)
{
printf("%sn", argv[i]);
}
return 0;
}
Exercício: Faça um programa de uma calculadora de quatro operações que, passando argumentos na linha de
comando, executa a operação indicada. Exemplo: calcular soma 15 43
ou
calcular divisao 113 29
106
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 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
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
printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos");
}
Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
107
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 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é-compilados, que são “linkados”
pelo link-editor.
Principais 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).
• math.h – Funções matemáticas comuns em computação (sqrt, cos, sin, log etc).
• time.h – Conversão de tipos de dado de data e horário (asctime, clock, localtime etc).
108
Linguagem e Técnicas de Programação
Capítulo 12
Pré-processador e MacrosPré-processador e Macros
Operadores bináriosOperadores binários
Programação para MicrocontroladoresProgramação para Microcontroladores
109
Pré-processador e MacrosPré-processador e Macros
O pré-processador é uma aplicação executada antes de se executar o
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ódigo.
Um exemplo de macro é a definição de uma constante numérica:
#define MAX 100
110
Macros de funçõesMacros de funções
É possível transformar funções simples em macros.
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 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()
{
printf("%d n", Mult(3,4));
printf("%f n", Mult(3.5,5.2));
}
111
Outras diretivas de pré-processamentoOutras diretivas de pré-processamento
A diretiva #include é utilizada para indicar ao pré-processador para substituir a
linha em que se encontra pelo conteúdo do arquivo que é colocado logo após.
Exemplo:
#include <stdio.h> // inclui o conteúdo da biblioteca-padrão
stdio
#include “c:userstrabalhomotor.h” // inclui o conteúdo da biblioteca motor
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
Para o compilador CCS C o pragma é opcional:
#device pic16c54
112
Operadores BináriosOperadores Binários
A linguagem C, considerada de baixo nível, permite a manipulação de bits,
utilizando operadores binários, conforme mostrado abaixo:
Operador Descrição
& AND
| OR
^ XOR (OR exclusivo)
<< Deslocamento para esquerda
>> Deslocamento para direita
Os operadores binários não devem ser confundidos com os operadores lógicos
(&& || !). Os operadores binários operam bit a bit, sendo muito utilizados em
circuitos com microcontroladores.
113
Tipos de Variáveis - MicrocontroladoresTipos de Variáveis - Microcontroladores
• Os compiladores de linguagem para microcontroladores apresentam,
geralmente, tamanhos menores para os tipos de variáveis. O exemplo
abaixo refere-se a compiladores voltados a microcontroladores PIC:
114
Exemplos com Operadores BináriosExemplos com Operadores Binários
unsigned char c;
c = 7; // codigo binario 0000 0111
c = c<<1; // codigo binario 0000 1110 = 14
c = c<<2; // codigo binario 0011 1000 = 56
c = c<<3; // codigo binario 1100 0000 = 192
c = c>>1; // codigo binario 0110 0000 = 96
// 12 equivale a 00001100 e 6 equivale a 00000110
c = 12 & 6; // c passa a valer 4 (00000100)
c = 12 | 6; // c passa a valer 14 (000001110)
c = 12 ^ 6; // c passa a valer 10 (000001010)
115
Exemplo de programa para microcontroladorExemplo de programa para microcontrolador
As definições de PIN_B0 e PIN_B1 estão no arquivo 16c71.h. A função toupper,
que transforma letras em maiúsculas, está definida em ctype.h. O uso de #fuses
indica “high speed oscillator” e “no watch dog timer”. As funções printf e putc são
referenciadas utilizando o #use rs232, que indica parâmetros de comunicação
para o microcontrolador.
#include <16c71.h>
#include <ctype.h>
#fuses hs,nowdt
#use rs232(baud=9600,xmit=PIN_B0,rcv=PIN_B1)
#define TRUE 1
main()
{
printf(“Enter characters:”);
while(TRUE)
putc(toupper(getc()));
}
116
Linguagem e Técnicas de Programação
Capítulo 13
Exercícios selecionadosExercícios selecionados
117
1) 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úmero
corresponde a duas vezes o valor do número do primeiro arquivo, linha-a-linha.
5) 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.
118
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].
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 as
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. Passados
como argumentos do programa. A seguir, o programa deve permitir acesso apenas
aos usuários que acertarem o login e senha.
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.
119
11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada.
#include <stdio.h>
main()
{
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if((a == 7 || b != 2) && c < 4)
printf("X");
else
{
if (a%b == 0)
printf("Y");
else
printf("Z");
}
}
Sequência digitada Letra escrita na
tela
7 3 4
8 4 1
2 2 2
120
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;
}
int main(void)
{
int var1 = 1;
int var2 = 2;
int var3 = 3;
int var4 = 4;
float var5, var6;
var4 = f1(var1, var2, &var3, &var4);
var5 = 2.5;
var6 = 5.7;
printf("%d - %d - %d - %dn", var1, var2, var3, var4);
printf("%.1fn", var6 - var5);
puts("var4 – var2");
return 0;
}

Mais conteúdo relacionado

Mais procurados

curso de computador bom e completo
curso de computador bom e completocurso de computador bom e completo
curso de computador bom e completomurilosoldier
 
Arquitetura de-computadores
Arquitetura de-computadoresArquitetura de-computadores
Arquitetura de-computadoresPimentel
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introduçãoCleber Ramos
 
CapíTulo 1 IntroduçãO à InformáTica
CapíTulo 1   IntroduçãO à InformáTicaCapíTulo 1   IntroduçãO à InformáTica
CapíTulo 1 IntroduçãO à InformáTicaguest501765
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
Logica programacao python-slides
Logica programacao python-slidesLogica programacao python-slides
Logica programacao python-slidesronaldo ramos
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Pacc UAB
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhães
 
Curso Inteligência Artificial - Parte 1 -
Curso Inteligência Artificial - Parte 1 -Curso Inteligência Artificial - Parte 1 -
Curso Inteligência Artificial - Parte 1 -ronaldo ramos
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresGilvan Latreille
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmiadiogoa21
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Pepe Rocker
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Introdução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresIntrodução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresWellington Oliveira
 

Mais procurados (20)

curso de computador bom e completo
curso de computador bom e completocurso de computador bom e completo
curso de computador bom e completo
 
Arquitetura de-computadores
Arquitetura de-computadoresArquitetura de-computadores
Arquitetura de-computadores
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 
CapíTulo 1 IntroduçãO à InformáTica
CapíTulo 1   IntroduçãO à InformáTicaCapíTulo 1   IntroduçãO à InformáTica
CapíTulo 1 IntroduçãO à InformáTica
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Logica programacao python-slides
Logica programacao python-slidesLogica programacao python-slides
Logica programacao python-slides
 
Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1Aula 2 - Introdução à programação de computadores - parte1
Aula 2 - Introdução à programação de computadores - parte1
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Curso Inteligência Artificial - Parte 1 -
Curso Inteligência Artificial - Parte 1 -Curso Inteligência Artificial - Parte 1 -
Curso Inteligência Artificial - Parte 1 -
 
Aula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de ComputadoresAula Introdução a Arquitetura e Organização de Computadores
Aula Introdução a Arquitetura e Organização de Computadores
 
mod1-algoritmia
mod1-algoritmiamod1-algoritmia
mod1-algoritmia
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - Apresentação
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Introdução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de ComputadoresIntrodução - Arquitetura e Organização de Computadores
Introdução - Arquitetura e Organização de Computadores
 

Destaque

Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhanyKaren Costa
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
1008 ProgramaçãO C Completo
1008 ProgramaçãO C Completo1008 ProgramaçãO C Completo
1008 ProgramaçãO C CompletoFxx
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UMLinfo_cimol
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.comRaul Batalha
 
Condicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioCondicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioMarcus Vinicius
 
Programar pic em c motor passo
Programar pic em c motor passoProgramar pic em c motor passo
Programar pic em c motor passoMario Angelo
 
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...Eduardo de Lucena Falcão
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizesArmando Daniel
 
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...AgroTalento
 

Destaque (20)

Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
1008 ProgramaçãO C Completo
1008 ProgramaçãO C Completo1008 ProgramaçãO C Completo
1008 ProgramaçãO C Completo
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.comIntrodução a estrutura de dados   josé lucas rangel - raulzinho.cb@hotmail.com
Introdução a estrutura de dados josé lucas rangel - raulzinho.cb@hotmail.com
 
C completo-total
C completo-totalC completo-total
C completo-total
 
Condicional 02 Pascal Exercicio
Condicional 02 Pascal ExercicioCondicional 02 Pascal Exercicio
Condicional 02 Pascal Exercicio
 
Programar pic em c motor passo
Programar pic em c motor passoProgramar pic em c motor passo
Programar pic em c motor passo
 
C++ lab -4
C++ lab -4C++ lab -4
C++ lab -4
 
Autron
AutronAutron
Autron
 
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
II EPI - Estudo e Avaliação do Problema de Otimização da Multiplicação de Cad...
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
 
Programação aula002
Programação aula002Programação aula002
Programação aula002
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Sugestões de 71 jogos
Sugestões de 71 jogosSugestões de 71 jogos
Sugestões de 71 jogos
 
POO Plano de Curso
POO Plano de CursoPOO Plano de Curso
POO Plano de Curso
 
Autron 2012
Autron 2012Autron 2012
Autron 2012
 
Memoria Virtual
Memoria VirtualMemoria Virtual
Memoria Virtual
 
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...
[Palestra] André Souza: Desafios da terminação a pasto - Produtividade x Qual...
 

Semelhante a Curso de Linguagem C

Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+cThiago Freitas
 
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
 
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
 
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
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosRafael Martins
 
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
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptJadna Almeida
 
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
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem cvingue
 

Semelhante a Curso de Linguagem C (20)

Notas deaulas
Notas deaulasNotas deaulas
Notas deaulas
 
Introdução+à+linguagem+c
Introdução+à+linguagem+cIntrodução+à+linguagem+c
Introdução+à+linguagem+c
 
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
 
Ud2
Ud2Ud2
Ud2
 
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 C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
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...
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
 
Infos algoritmo
Infos algoritmoInfos algoritmo
Infos algoritmo
 
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
 
Aula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.pptAula 2 - Introducao e Algoritmos.ppt
Aula 2 - Introducao e Algoritmos.ppt
 
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
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Linguagem_C.pdf
Linguagem_C.pdfLinguagem_C.pdf
Linguagem_C.pdf
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 
Apostila linguagem c
Apostila linguagem cApostila linguagem c
Apostila linguagem c
 

Mais de Rogerio R. Lima Cisi

Mais de Rogerio R. Lima Cisi (8)

O que é o espiritismo
O que é o espiritismoO que é o espiritismo
O que é o espiritismo
 
Campo de Energia Humana
Campo de Energia HumanaCampo de Energia Humana
Campo de Energia Humana
 
Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita Sexualidade sob a ótica espírita
Sexualidade sob a ótica espírita
 
Meu Reino ainda não é deste mundo
Meu Reino ainda não é deste mundoMeu Reino ainda não é deste mundo
Meu Reino ainda não é deste mundo
 
Espiritismo e Ciência
Espiritismo e CiênciaEspiritismo e Ciência
Espiritismo e Ciência
 
Parábola da Festa de Núpcias
Parábola da Festa de NúpciasParábola da Festa de Núpcias
Parábola da Festa de Núpcias
 
Espiritismo: uma proposta educacional
Espiritismo: uma proposta educacionalEspiritismo: uma proposta educacional
Espiritismo: uma proposta educacional
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 

Último

Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila RibeiroMarcele Ravasio
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxLaurindo6
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxssuserf54fa01
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxBeatrizLittig1
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfManuais Formação
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptxLinoReisLino
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...licinioBorges
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxLuizHenriquedeAlmeid6
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 

Último (20)

Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA  - Autora Djamila RibeiroLivro O QUE É LUGAR DE FALA  - Autora Djamila Ribeiro
Livro O QUE É LUGAR DE FALA - Autora Djamila Ribeiro
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptxAULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
AULA SOBRE AMERICA LATINA E ANGLO SAXONICA.pptx
 
Slide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptxSlide língua portuguesa português 8 ano.pptx
Slide língua portuguesa português 8 ano.pptx
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Mapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docxMapa mental - Classificação dos seres vivos .docx
Mapa mental - Classificação dos seres vivos .docx
 
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdfCD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
CD_B3_C_ Criar e editar conteúdos digitais em diferentes formatos_índice.pdf
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx[Bloco 7] Recomposição das Aprendizagens.pptx
[Bloco 7] Recomposição das Aprendizagens.pptx
 
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
11oC_-_Mural_de_Portugues_4m35.pptxTrabalho do Ensino Profissional turma do 1...
 
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptxSlides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
Slides Lição 04, Central Gospel, O Tribunal De Cristo, 1Tr24.pptx
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 

Curso de Linguagem C

  • 1. 1 FATEC de Santo André Tecnologia em Eletrônica Automotiva Linguagens e Técnicas de Programação Notas de Aula Prof.: Rogério Email: fatec.sa.informatica@gmail.com Página da disciplina: http://sites.google.com/site/fatecprogramacao
  • 2. 2 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ático 1. Introdução à lógica de programação; 2. Algoritmos: pseudocódigo e fluxograma; 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 e compilação; 6. Visão geral da linguagem C: variáveis, operadores, expressões e principais funções; 7. Compilador e ambiente de desenvolvimento para a linguagem C; 8. Vetores; 9. Strings; 10. Funções; 11. Ponteiros; 12. Manipulação de arquivos. Bibliografia utilizada na disciplina - Linguagem C. Luis Damas; LTC Editora, 10a edição, 2007. - 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.
  • 3. 3 Linguagem e Técnicas de Programação Capítulo 1 Noções básicas deNoções básicas de algoritmos e programaçãoalgoritmos e programação
  • 4. 4 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çã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; c. Compra e venda automática de ações na bolsa de valores. • Exercício: - Criar um algoritmo para cadastrar o login e a senha de acesso a um site. A seguir, crie outro algoritmo que libera o acesso ao site, ao ser fornecido o login e a senha corretos – o acesso é bloqueado após três tentativas com erro.
  • 5. 5 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: – char: guarda um caractere. – int: guarda um número inteiro. – float e double: guardam um número real. • Exemplos: char primeiraLetra; int anoFabricacao; float velocidadeCarro; double velocidadeLuz;
  • 6. 6 Comandos bComandos báásicossicos 3) Operadores aritméticos: mais + menos - vezes * dividir / resto % decrementa -- incrementa ++ opera e atribui += -= *= /= 2) Operadores lógicos: e && ou || não ! 4) Operadores relacionais: é igual? == é diferente? != é maior? > é menor? < é maior ou igual? >= é menor ou igual? <= 1) Atribuição: quilometroRodado = 23458; a = b; temperaturaAlta = 23.56;
  • 7. 7 Linguagem e Técnicas de Programação Capítulo 2 Lógica de ProgramaçãoLógica de Programação
  • 8. 8 Lógica de programação:Lógica de programação: Bloco de comandos – execução sequencialBloco de comandos – execução sequencial Pseudocógido Fluxograma
  • 9. 9 Estrutura de decisãoEstrutura de decisão Alternativa simples Alternativa composta
  • 10. 10 Estruturas de decisãoEstruturas de decisão aninhadasaninhadas Se a estrutura de decisão tem apenas um comando, o uso de chaves é dispensável; para dois ou mais comandos associados, 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 }
  • 11. 11 Estrutura de repetição com teste no começoEstrutura de repetição com teste no começo
  • 12. 12 Estrutura de repetição com teste no finalEstrutura de repetição com teste no final
  • 15. 15 Estrutura de repetição com variável de controleEstrutura de repetição com variável de controle
  • 16. 16 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 são escritos na tela os números encontrados. encontraMaiorMenor() { int maior, menor, valor; valor = leTeclado(); maior = valor; menor = valor; enquanto (valor != 0) { se (valor > maior) maior = valor; senão { se (valor < menor) menor = valor; } valor = leTeclado(); } imprima(maior, menor); }
  • 17. 17 ExercíciosExercícios 1) 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 um algoritmo que imprime o fatorial de um número digitado no teclado. 3) Descrever em pseudocódigo e em fluxograma um algoritmo que lê um número inteiro de um teclado, calcula a somatória de todos os números entre 1 e o número digitado e escreve na tela o valor obtido.
  • 18. 18 Linguagem e Técnicas de Programação Capítulo 3 Introdução à LinguagemIntrodução à Linguagem de Programação Cde Programação C
  • 19. 19 Linguagens de programaçãoLinguagens de programação • Linguagem de programação: conjunto finito de símbolos com os quais se escrevem programas de computador. • Exemplos de linguagem de programação: C, C++, Java, Pascal, Cobol, Basic, PHP, 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, PHP, Perl etc. • Linguagens com compilação e interpretação: Java. • Linguagem de montagem ou Assembly é uma notação razoavelmente legível por humanos, correspondente ao código de máquina.
  • 20. 20 Linguagem de programação com compilaçãoLinguagem de programação com compilação • Programa descrito em uma linguagem de programação: sequência de comandos compreendida por um ser humano. • Programa 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 de programação para códigos de máquina de uma CPU. while(i < 10) { printf("%d", i); i++; } compilador 10011101 00110001 01100111 11110101 11110001
  • 21. 21 Comparação entre linguagens de programaçãoComparação entre linguagens de programação código nível vantagens desvantagens código de máquina baixo acesso a todos os recursos do hardware dificuldade de programação C médio acesso a todos os recursos do hardware erros de programação podem comprometer o funcionamento do hardware Java alto facilidade de programação baixo aceso aos recursos do hardware
  • 22. 22 Código-fonte e código-executávelCódigo-fonte e código-executável • Código-fonte: contém todos os comandos de um programa, expressos em uma linguagem de programação. • Có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 no código-fonte. • No 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 extensão .sh, entre outras.
  • 23. 23 Linguagem de programação CLinguagem de programação C • 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; - confiabilidade; - simplicidade; - muito utilizada para microprocessadores.
  • 24. 24 Regras geraisRegras gerais • Os programas, em linguagem C, são compostos por uma ou mais funções. • As funções podem possuir argumentos e um tipo de retorno. • Todo programa inicia-se com uma chamada à função main: main() { comando1; • comando2; • ... }
  • 25. 25 Regras geraisRegras gerais • A linguagem C faz distinção entre maiúsculas e minúsculas. Exemplo: a 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: if (a > b && d < e) while( a > 0 ) { { printf(“mensagem 1”); a = a – 1; printf(“mensagem 2”); printf(“%d”, a); } } Sem ponto-e-vírgula! Sem ponto-e-vírgula! Com ponto-e-vírgula! Com ponto-e-vírgula!
  • 26. 26 Tipos de VariáveisTipos de Variáveis • A linguagem C dispõe de quatro tipos básicos de dados. As declarações de variáveis, portanto, podem usar os seguintes tipos: Número real (ponto flutuante com precisão dupla: 15 dígitos, limitados a: +/-1.7*10+/-308 ) 8double Número real (ponto flutuante com precisão simples: 7 dígitos, limitados a: +/-3.4*10+/-38 ) 4float Número inteiro (ANSI: de -32768 a 32767 (atualmente: de -2147483648 a 2147483647) 2 (padrão ANSI) 4 (atualmente) int Um caractere (ou, reciprocamente, um inteiro de -128 a 127) 1char ValorTamanho (bytes)Tipo
  • 27. 27 Especificadores de VariáveisEspecificadores de Variáveis • Além do tipo da variável, podem ser utilizados alguns “especificadores”: - unsigned: permite apenas números positivos; - long: amplia o tamanho de um tipo de variável; - short: restringe o tamanho de um tipo de variável. • Exemplos - long int: variável int com 64 ou 32 bits, dependendo do compilador; - short int: variável int com 16 ou 8 bits, dependendo do compilador; - unsigned int: variável int com valores entre 0 e 4 bilhões.
  • 28. 28 Palavras reservadas da linguagem CPalavras reservadas da linguagem C Palavras reservadas pelo padrão ANSI Algumas outras palavras reservadas asm cdecl interrupt near far huge Observação importante: palavras reservadas não podem ser usadas como nomes de variáveis. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
  • 31. 31 Estrutura de repetição com teste no começoEstrutura de repetição com teste no começo
  • 32. 32 Estrutura de repetição com teste no finalEstrutura de repetição com teste no final
  • 33. 33 Estrutura de repetição com variável de controleEstrutura de repetição com variável de controle
  • 36. 36 Linguagem e Técnicas de Programação Capítulo 4 Primeiros programasPrimeiros programas em Linguagem Cem Linguagem C
  • 37. 37 Função printfFunção printf Sintaxe: printf ( "expressão de controle", argumentos ) • A 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 e 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: printf(“nnEste eh o numero dois: %d", 2); printf("Aluno: %s t Nota: %f", "Pedro", 7.5); Expressão de controle argumento
  • 38. 38 Função printfFunção printf - Formatadores: %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 n nova linha (pula uma linha) t tab (insere espaços de uma tabulação) " aspas (usado quando se quer imprimir aspas) barra (usado quando se quer imprimir uma barra)
  • 39. 39 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). • 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; printf("Digite um numero: "); scanf("%d", &num); printf(“Numero digitado: %d", num); %d é substituído pelo valor da variável num A variável num recebe o número digitado, utilizando o operador &
  • 40. 40 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ível. • Na linguagem C, os comentários são colocados dentro dos marcadores /* 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 a = 0; /* Estas duas linhas também são comentários e serão descartadas no momento da compilação */
  • 41. 41 Ambientes de desenvolvimento paraAmbientes de desenvolvimento para programação em Linguagem Cprogramação em Linguagem C ● Ambiente de desenvolvimento ou IDE (Integrated Development Environment): - edição e depuração (debug) do código-fonte; - compilador C - geração do arquivo-executável. ● Utilizado para desenvolvimento de programas C e C++; ● Nesta disciplina: Projetos C – Aplicações de Console. ● Algumas IDEs para desenvolvimento de programas em C: CodeBlocks, DevC++, Eclipse.
  • 42. 42 Ambiente de desenvolvimentoAmbiente de desenvolvimento Procedimentos para criar um arquivo-executável: 1) Crie um projeto na aba File > New Project (Console Application – C); 2) Dê um nome ao projeto (que será o nome do arquivo-executável); 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- executável, com a extensão .exe.
  • 43. 43 Programa-exemploPrograma-exemplo - Primeiro programa: números na tela #include <stdio.h> #include <stdlib.h> /* Primeiro programa de exemplo */ int main() { int i; for(i = 1; i < 10; i++) { printf ("Numero: %dt", i); printf ("elevado ao quadrado: %dn", i*i); } return 0; }
  • 44. 44 Programa-exemploPrograma-exemplo - Segundo programa: cálculo de fatorial #include <stdio.h> #include <stdlib.h> int main() { 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); return 0; }
  • 45. 45 Programa-exemploPrograma-exemplo - Terceiro programa: conversão de anos em dias // Programa-exemplo #include <stdio.h> #include <stdlib.h> int main() { /* declaracao das variaveis */ int dias; float anos; printf ("Entre com o numero de dias: "); // imprime mensagem na tela scanf ("%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; }
  • 46. 46 #include <stdio.h> #include <stdlib.h> int main() { int i, n; float valor, media, soma = 0; printf("Quantos numeros serao digitados?n"); scanf("%d", &n); for(i = 1; i <= n; i++) { printf("Digite o %do. numeron", i); scanf("%f", &valor); soma = soma + valor; } printf("nSomatoria dos %d valores lidos: %fn", n, soma); system("pause"); media = soma / n; printf("nValor medio dos %d valores lidos: %fn", n, media); return 0; } Somatória e média
  • 47. 47 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { char finaliza = 'n'; float num; while(finaliza != 's') { printf("Digite um numeron"); scanf("%f", &num); printf("Raiz de %f = %.3fn", num, sqrt(num)); printf("nPara encerrar digite sn"); fflush(stdin); // Limpa buffer do teclado finaliza = getchar(); // Obtém um caracter } printf("Fimn"); return 0; } Estrutura de repetição com finalização
  • 48. 48 ExercíciosExercícios 1) Crie um fluxograma e um programa em linguagem C, que pergunta ao usuário qual a sua idade e indica de ele pode ou não votar, ou se seu voto é opcional. 2) Crie um programa em linguagem C que, ao se digitar um dia de um ano (entre 1 e 365), indica qual o dia e o mês correspondentes. 3) Pesquise sobre a Tabela ASCII e crie um programa que escreva na tela os valores desta tabela.
  • 49. 49 Linguagem e Técnicas de Programação Capítulo 5 VetoresVetores
  • 50. 50 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]. 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 duas dimensões e temperaturaPosicao tem três dimensões. Vetores de duas dimensões são também conhecidos como matrizes.
  • 51. 51 Indexaçã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;
  • 52. 52 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; posicao[0][2] = 3; posicao[1][0] = 4; posicao[1][1] = 5; posicao[1][2] = 6; posicao[2][0] = 7; posicao[2][1] = 8; posicao[2][2] = 9; 1 2 3 4 5 6 7 8 9
  • 53. 53 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 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. Deve-se verificar a atribuição de valores para um índice maior que o tamanho de uma dimensão do vetor. Um vetor pode ser inicializado na sua declaração: int i[5] = {13, -2, 0, -34, 43}; Ex.: o código abaixo será compilado, mas está ERRADO pois invade memória não reservada. A posição máxima permitida seria precos[4]. float precos[5]; precos[8] = 15.50;
  • 54. 54 Escrever e ler valores em um vetorEscrever e ler valores em um vetor #include <stdio.h> #include <stdlib.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); printf("Media do aluno 12: %f n", soma2/2); return 0; }
  • 55. 55 Programa-exemploPrograma-exemplo #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; v[0] = 1; for(i = 1; i < n; i++) { v[i] = v[i-1] * i; printf("Fatorial de %d: %dn", i, v[i]); } return 0; }
  • 56. 56 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> // Imprime o rendimento de uma aplicação mensal, com a taxa de juros digitada int main() { int i; float deposito[12]; // 12 meses float 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); scanf("%f", &deposito[i]); // Recebe os depositos mensais } // Calcula os rendimentos for(i = 0; i < 12; i++) { printf("Deposito do mes %d: %.2fn", i+1, deposito[i]); total = total + deposito[i] + (total * juros/100.0); printf("Total acumulado: %.2fn", total); } return 0; }
  • 57. 57 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> // Cálculo de determinante de matriz 2x2 int main() { int i, j; float det; float m[2][2]; printf("Digite os quatro elementos de uma matriz 2x2n"); for(i = 0; i < 2; i++) { for(j = 0; j < 2; j++) { printf("Digite um numeron"); scanf("%f", &m[i][j]); } } det = m[0][0]*m[1][1] - m[0][1]*m[1][0]; printf("nDeterminante dessa matriz: %fn", det); return 0; }
  • 58. 58 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> int main() // Médias de provas de alunos { int i, j, alunos, provas; float soma[40], notas[40][5]; printf("Qual a quantidade de alunos?n"); scanf("%d", &alunos); printf("Qual a quantidade de provas?n"); scanf("%d", &provas); for(i = 0; i < alunos; i++) { soma[i] = 0; for(j = 0; j < provas; j++) { printf("Digite a nota da prova %d do aluno %dn", j+1, i+1); scanf("%f", &notas[i][j]); soma[i] += notas[i][j]; } } for(i = 0; i < alunos; i++) printf("Media do aluno %d: %.1fn", i, soma[i] / provas); return 0; }
  • 59. 59 ExercíciosExercícios 1) Crie 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) Crie 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. 3) Crie um programa que calcule o determinante de uma matriz 3x3, cujos elementos são inseridos via teclado.
  • 60. 60 Linguagem e Técnicas de Programação Capítulo 6 StringsStrings
  • 61. 61 String – vetor de caracteresString – vetor de caracteres Strings são vetores constituídos por caracteres: char nomeEscola[18]; strcpy(nomeEscola, "FATEC SANTO ANDRE"); - A função strcpy atribui um conteúdo a string nomeEscola, que pode armazenar até 17 caracteres. - Strings são SEMPRE terminadas com o caracter nulo: 0. Portanto, devem ter uma posição a mais que a quantidade de caracteres armazenados: - Uma string pode ser inicializada em sua declaração: char produto[15] = "Computador";
  • 62. 62 Funções de manipulação de stringsFunções de manipulação de strings gets(str): lê uma sequência de caracteres do teclado e grava na string str. puts(str): escreve na tela a sequência de caracteres armazenados em str. scanf(“%s”, &str): lê uma sequência de caracteres do teclado e grava na string str. printf(“%s”, str): escreve na tela a sequência de caracteres armazenados em str. strcpy(strDest,strOrig): copia a string strOrig para a string strDest. strcat(str1, str2): anexa a string str2 no final da string str1. int atoi(str): converte uma string em um número inteiro. float atof(str): converte uma string em um número real. int strlen(str): retorna o tamanho (núm. de caracteres) da string str. int 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; caso contrário, retorna um número negativo.
  • 63. 63 Lendo uma string de um tecladoLendo uma string de um teclado A melhor maneira de ler uma string de um teclado é com a função gets. Outra maneira é com a função scanf, se não houver espaços em branco: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s1[80], s2[80]; printf("Informe duas strings:n"); // Pode-se obter uma String com gets ou com scanf (sem utilizar &) gets( s1 ); scanf("%s", s2); printf("nStrings digitadas: %s, %sn", s1, s2); printf("Quantidade de caracteres: %d, %dn", strlen(s1), strlen(s2)); return 0; }
  • 64. 64 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");
  • 65. 65 Vetor de StringsVetor de Strings - Vetores de strings são comuns em C. Eles são declarados e inicializados como qualquer vetor bidimensional, mas a maneira de utilizá-los difere um pouco. Por exemplo, o que faz a declaração abaixo? char lista_nomes[10][40]; Este comando especifica um vetor chamado lista_nomes, que contém até 10 strings, com até 39 caracteres cada (descartando o 0 final). Para acessar uma das strings deste vetor, especifique apenas o primeiro índice. Por exemplo, para escrever na tela o quinto nome armazenado, utilize o seguinte comando: printf (“%s”, lista_nomes[4]);
  • 66. 66 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> #include <string.h> int main() // Substitui espaços por mudança de linha { int pos = 0; char caracter; char texto[500]; puts("Digite um texto granden"); gets(texto); do { caracter = texto[pos]; if (caracter == ' ') texto[pos] = 'n'; pos++; } while(caracter != '0'); puts(texto); return 0; }
  • 67. 67 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> #include <string.h> /* Este programa inverte a ordem de todos os caracteres de um texto */ int main() { int i, tamanho; char texto[500]; puts("Digite um texto granden"); gets(texto); tamanho = strlen(texto); for(i = tamanho - 1; i >= 0; i--) putchar(texto[i]); // Escreve o caracter de índice i da string texto return 0; }
  • 68. 68 Programa-exemploPrograma-exemplo #include <stdio.h> #include <stdlib.h> #include <string.h> /* Este programa inverte a ordem de todas as palavras de um texto */ int main() { int i, j, word = 0, pos = 0, ini = 0; char caracter; char texto[500]; char palavras[100][20]; puts("Digite um texto granden"); gets(texto); // Continua na página seguinte
  • 69. 69 Programa-exemploPrograma-exemplo // Continuação da página anterior do { caracter = texto[pos]; if (caracter == ' ' || caracter == '0') { j = 0; for(i = ini; i < pos; i++) { palavras[word][j] = texto[i]; j++; } palavras[word][j] = '0'; ini = pos + 1; word++; } pos++; } while(caracter != '0'); for(i = word - 1; i >= 0; i--) printf("%s ", palavras[i]); return 0; }
  • 70. 70 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) 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ê três nomes digitados do teclado, ordena alfabeticamente esses nomes e apresenta a lista de nomes ordenada. 4) Qual o valor da variável x abaixo? strcpy(s1, “1000”); strcpy(s2, “99”); x = strcmp(s1, s2); 5) Implementar o algoritmo de cadastro/acesso a um site, descrito na página 4.
  • 71. 71 Linguagem e Técnicas de Programação Capítulo 7 Estrutura em C: structEstrutura em C: struct Conversão de variáveis: castConversão de variáveis: cast Funções matemáticasFunções matemáticas Comando de decião múltipla: switch-caseComando de decião múltipla: switch-case
  • 72. 72 Struct – agrupamento de variáveisStruct – agrupamento 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"); 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); return 0; }
  • 73. 73 Conversão de variáveis: castConversão de variáveis: cast A linguagem C permite converter um tipo de variável em outro (cast), utilizando parênteses a frente da variável a ter seu valor convertido. Exemplo: int main() { int a; float b; double c; b = 25.76; // Conversão de float para int a = (int)b; // Neste cast, a variavel a recebe o valor 25 printf("a: %d, b: %f n", a, b); a = 40; // Conversão de int para double c = (double)a; // Neste cast, a variavel c recebe o valor 40.000000 printf("a: %d, c: %f n", a, c); return 0; }
  • 74. 74 Conversão de variáveis com stringsConversão de variáveis com strings Cabe observar que o cast não é possível com variáveis string. Neste caso, é necessário utilizar as funções sprintf, atoi e atof. Exemplo: int main() { int a; float b; char d[20] = "30.2"; // Conversão de string para float b = atof(d); // Neste caso, a variavel b recebe o valor 30.200000 printf("b: %f, d: %s n", b, d); a = 49; // Conversão de int para string sprintf(d, "%d.55", a); // Neste caso, d recebe o valor "49.55" printf("a: %d, d: %s n", a, d); return 0; }
  • 75. 75 Funções matemáticasFunções matemáticas A Linguagem C oferece várias funções matemáticas. Para utilizá-las, deve-se declarar a biblioteca math.h. - Exemplos de funções: #include <math.h> x = sin(y); // x recebe o seno de y x = cos(y); // x recebe o cosseno de y x = sqrt (y); // x recebe a raiz quadrada de y w = pow(x, y); // w recebe x elevado a y y = exp(x); // y recebe e elevado a x y = log(x); // y recebe o logaritmo de x na base e. Não use com x negativo. y = log10(x); // y recebe o logaritmo de x na base 10. Não use com x negativo.
  • 76. 76 Comando switch-caseComando switch-case 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 tomadas. int dia; printf("Digite o numero de um dia da semana"); scanf("%d", &dia); switch(dia) { case 1: printf("domingon"); break; case 2: printf("segundan"); break; // outros cases case 7: printf("sabadon"); break; default: printf("dia invalidon"); }
  • 77. 77 Linguagem e Técnicas de Programação Capítulo 8 Manipulação de arquivosManipulação de arquivos
  • 78. 78 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 *arq; arq = fopen("dados.txt", "w"); Caso o arquivo não esteja na mesma pasta que o programa executável, é 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; }
  • 79. 79 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; "w" – arquivo-texto para gravação de dados – se o arquivo já existir, 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, escreve após os dados existentes;
  • 80. 80 Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo arq = fopen(“arquivo.txt”, “w”); Abre um arquivo para leitura e/ou escrita, retornando um ponteiro para este arquivo, ou NULL em caso de falha. fclose(arq); Fecha um arquivo, retornando 0 (sucesso) ou a constante EOF (erro). x = fgetc(arq); Lê um caractere de um arquivo, retornando-o. c = fputc(‘A’, FILE *arq) Escreve o caractere ‘A’ no arquivo apontado pelo ponteiro arq. Em caso de sucesso, retorna o caracter; em caso de erro, retorna a constante EOF.
  • 81. 81 Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo fgets(s, n, arq) Lê uma linha, com até n-1 caracteres, de um arquivo, colocando-a em s. A string lida também é retornada pela função. fputs(s, arq) Escreve a string s em uma linha de um arquivo. A função retorna um valor não-negativo, em caso de sucesso, ou EOF, em caso de falha. fscanf(arq, “%d”, &x) Lê uma linha formatada de um arquivo. fprintf(arq, “escreve %d”, x) Escreve uma linha formatada em um arquivo.
  • 82. 82 Funções utilizadas para manipulação de arquivoFunções utilizadas para manipulação de arquivo x = feof(arq) Retorna verdadeiro (1) quando a leitura de um arquivo chegou ao fim, ou falso (0), quando ainda há linhas a serem lidas. fread(ptr, size, n, arq) Lê um conjunto de elementos de um arquivo, colocando-os em uma variável apontada por ptr. Cada elemento deve possuir um número de bytes indicados por size, sendo lidos n elementos do arquivo. fwrite(ptr, size, n, arq) Escreve um conjunto de elementos (apontados por ptr) em um arquivo. Cada elemento deve possuir um número de bytes indicados por size, sendo escritos n elementos no arquivo.
  • 83. 83 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"); return 1; } while(!feof(arq)) // Le as linhas do arquivo até o final { fscanf(arq, "%f", &valor); total = total + valor; cont++; } printf("O valor medio do produto e': %f n", total / cont); fclose(arq); return 0; }
  • 84. 84 Exemplo de escrita em arquivoExemplo de escrita em arquivo #include <stdio.h> int main() { FILE *arquivo; 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"); fclose(arquivo); return 0; }
  • 85. 85 #include <stdio.h> int main() { float nota, total = 0; int cont = 0; FILE *arq = fopen("notas.txt", "r"); if(arq == NULL) { printf("Arquivo não encontradon"); return 1; } fscanf(arq, "%f", &nota); while(nota > 0) { total = total + nota; fscanf(arq, "%f", &nota); cont++; } if(cont > 0) printf("Media = %.1f", total/cont); fclose(arq); return 0; } Programa-exemploPrograma-exemplo Cálculo de média de notas O programa abre (fopen) o arquivo notas.txt para leitura ("r"). Lê linha a linha (fscanf), salvando o valor de cada linha na variável nota. Quando o último valor lido for igual ou menor que 0, a estrutura de repetição while é interrompida. A seguir, é impresso na tela, pela função printf, o valor da média das notas (total/cont). A média só é impressa na tela caso o arquivo tenha ao menos uma linha.
  • 86. 86 Linguagem e Técnicas de Programação Capítulo 9 Funções e Escopo de VariáveisFunções e Escopo de Variáveis
  • 87. 87 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 do programa; ➢ divisão em blocos funcionais, facilitando seu entendimento. Exemplo: tipoRetorno nomeFunção (tipo arg1, tipo arg2,...,tipo argN) { comandos da função; }
  • 88. 88 Funções e variáveis só podem ser utilizadas em um programa em C depois de serem declaradas void atraso() { int i, j; for(i = 0; i < 10000; i++) for(j = 0; j < 10000; j++); } int potencia(int a, int b) { int i, ret = 1; for(i = 0; i < b; i++) ret = ret * a; return ret; } int main() { int resultado, x, y; resultado = potencia(5, 6); printf("5 elevado a 6 vale: %dn", resultado); atraso(); printf("Digite dois numerosn"); scanf("%d", &x); scanf("%d", &y); printf("%d elevado a %d vale: %dn", x, y, potencia(x, y)); atraso(); printf("%d elevado a %d vale: %dn", y, x, potencia(y, x));
  • 89. 89 Protótipos de funçõesProtótipos de funções O código da função deve ser declarado no arquivo onde a função é utilizada, e posicionada acima do trecho de código que faz referência à função, ou então, é 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() { float novoPreco; novoPreco = reajustaPreco(1.5, 200.0); } float reajustaPreco(float taxa, float preco) // codigo da funcao { preco = preco * taxa; return preco; }
  • 90. 90 Arquivos de cabeçalho - BibliotecasArquivos de cabeçalho - Bibliotecas 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 de cabeçalho economia.h e seu código está em algum outro arquivo-fonte, por exemplo, no arquivo economia.c: #include "economia.h" void reajusta() { float novoPreco; novoPreco = reajustaPreco(1.5, 200.0); ... }
  • 91. 91 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 }
  • 92. 92 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 a = 2; b = 4; } int main() { a = 3; b = 3; funcao1(); printf("a = %d e b = %d", a, b); // saída: a = 3 e b = 4 return 0; }
  • 93. 93 ExercíciosExercícios 1) Faça um programa com várias funções, cada uma escrevendo uma palavra da seguinte frase: “Fatec Santo André – Eletrônica Automotiva” 1) 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. 2) Crie uma função que calcule o volume de um paralelepípedo, de acordo com suas dimensões, conforme utilização na função main: void main() { doble valor; valor = volume(4.567, 3.5645, 5.666); printf(“Volume: %fn”, valor); }
  • 94. 94 Linguagem e Técnicas de Programação Capítulo 10 Ponteiros na linguagem CPonteiros na linguagem C
  • 95. 95 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 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 int float *ponteiroCalc; // ponteiro para variavel do tipo float FILE * arq // ponteiro para um arquivo Para obter o endereço de uma variável é utilizado o operador &.
  • 96. 96 Exemplos de utilização de ponteirosExemplos de utilização de ponteiros int cont; int val; int *end1; int *end2; // atribui o valor 100 à variável cont cont = 100; // end1 guarda o endereço de cont end1 = &cont; // o valor da variável cont é indiretamente atribuído a val val = *end1; // end2 guarda o endereço de 100 100 0A00 0A00 cont val end1 end2 endereços memória variáveis 0A00 0A04 0A08 0A0C
  • 97. 97 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ável dentro da função: #include <stdio.h> void semPonteiros(int num) { num = num + 5; } void comPonteiros(int *num) { *num = *num + 5; } int main() { 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); printf("Apos chamar a funcao comPonteiros: a = %d n", a); return 0; } Saída do programa: Valor original da variável a: 1 Valor de a após chamar a função semPonteiros: 1 Valor de a após chamar a função comPonteiros: 6
  • 98. 98 Ponteiro como parâmetro de funçõesPonteiro como parâmetro de funções #include <stdlib.h> #include <stdio.h> #include <math.h> void raizes(int a1, float *r1, int a2, float *r2) { *r1 = sqrt(a1); *r2 = sqrt(a2); } int main() { float v1, v2; int b1, b2; printf("Digite dois numeros inteirosn"); scanf("%d", &b1); scanf("%d", &b2); raizes(b1, &v1, b2, &v2); printf("Raiz quadrada de: %d = %fn", b1, v1); printf("Raiz quadrada de: %d = %fn", b2, v2); return 0; }
  • 99. 99 // Programa-exemplo com ponteiros #include <stdio.h> #include <stdlib.h> int main() { char letra = 'q'; int dia = 12; int *end; float nota = 87.8; end = &dia; char assunto[10] = "medicina"; char *pont1; int *pont2; double *pont3; char *pont4[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 nota: %2.1f e seu endereco: %xn", nota, &nota); printf("Valor apontado por end: %d e o endereco que ele contem: %xn", *end, end); printf("Valor da variavel assunto: %s e seu endereco: %xn", assunto, assunto); printf("Endereco que o ponteiro pont1 contém: %xn", pont1); printf("Endereco que o ponteiro pont2 contém: %xn", pont2); printf("Endereco que o ponteiro pont3 contém: %xn", pont3); printf("Endereco que o ponteiro pont4 contém: %xn", pont4); return 0;
  • 100. 100 Exibindo uma string utilizando ponteiroExibindo uma string utilizando ponteiro #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() { char texto[40] = "Exibindo uma string usando um ponteiro."; char *ptr_str; ptr_str = texto; // Apontando para o inicio da string printf("Inicio da string = %cnn", *ptr_str); // Exibindo toda a string usando o ponteiro while(*ptr_str != '0') { putchar(*ptr_str); usleep(100000); ptr_str++; } printf("n"); return 0; }
  • 101. 101 ExercíciosExercícios 1) Faça programa com uma função que recebe 2 números e devolve a soma, multiplicação, divisão e subtração desses números, e retorna o valor de um número elevado pelo outro. 2) a) Sendo p um ponteiro, explique a diferença entre: p++; (*p)++; *(p++); b) O que quer dizer *(p+10) ? c) Qual o valor de y no final do programa abaixo? A seguir, escreva um /* comentário */ em cada comando de atribuição explicando o que ele faz e o valor da variável à esquerda do '=' após sua execução. int main() { int y, *p, x; y = 0; p = &y; x = *p; x = 4; (*p)++; x--; (*p) += x; printf ("y = %dn", y); return(0); } (fonte: http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c620.html)
  • 102. 102 Linguagem e Técnicas de Programação Capítulo 11 Parâmetros da função mainParâmetros da função main Biblioteca padrão da linguagem CBiblioteca padrão da linguagem C
  • 103. 103 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() Os parâmetros argc e argv dão ao programador acesso à linha de comando com a qual o programa foi chamado.
  • 104. 104 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] sempre aponta para o nome do programa (que, como já foi dito, é considerado o primeiro argumento). Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
  • 105. 105 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 i; for(i = 0; i < argc; i++) { printf("%sn", argv[i]); } return 0; } Exercício: Faça um programa de uma calculadora de quatro operações que, passando argumentos na linha de comando, executa a operação indicada. Exemplo: calcular soma 15 43 ou calcular divisao 113 29
  • 106. 106 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 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 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 printf("Erro!nUso: data dia mes ano, argumentos com 2 digitos"); } Fonte: http://www.inf.lasalle.tche.br/~barreto/cursoC/c790.html
  • 107. 107 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 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é-compilados, que são “linkados” pelo link-editor. Principais 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). • math.h – Funções matemáticas comuns em computação (sqrt, cos, sin, log etc). • time.h – Conversão de tipos de dado de data e horário (asctime, clock, localtime etc).
  • 108. 108 Linguagem e Técnicas de Programação Capítulo 12 Pré-processador e MacrosPré-processador e Macros Operadores bináriosOperadores binários Programação para MicrocontroladoresProgramação para Microcontroladores
  • 109. 109 Pré-processador e MacrosPré-processador e Macros O pré-processador é uma aplicação executada antes de se executar o 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ódigo. Um exemplo de macro é a definição de uma constante numérica: #define MAX 100
  • 110. 110 Macros de funçõesMacros de funções É possível transformar funções simples em macros. 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 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() { printf("%d n", Mult(3,4)); printf("%f n", Mult(3.5,5.2)); }
  • 111. 111 Outras diretivas de pré-processamentoOutras diretivas de pré-processamento A diretiva #include é utilizada para indicar ao pré-processador para substituir a linha em que se encontra pelo conteúdo do arquivo que é colocado logo após. Exemplo: #include <stdio.h> // inclui o conteúdo da biblioteca-padrão stdio #include “c:userstrabalhomotor.h” // inclui o conteúdo da biblioteca motor 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 Para o compilador CCS C o pragma é opcional: #device pic16c54
  • 112. 112 Operadores BináriosOperadores Binários A linguagem C, considerada de baixo nível, permite a manipulação de bits, utilizando operadores binários, conforme mostrado abaixo: Operador Descrição & AND | OR ^ XOR (OR exclusivo) << Deslocamento para esquerda >> Deslocamento para direita Os operadores binários não devem ser confundidos com os operadores lógicos (&& || !). Os operadores binários operam bit a bit, sendo muito utilizados em circuitos com microcontroladores.
  • 113. 113 Tipos de Variáveis - MicrocontroladoresTipos de Variáveis - Microcontroladores • Os compiladores de linguagem para microcontroladores apresentam, geralmente, tamanhos menores para os tipos de variáveis. O exemplo abaixo refere-se a compiladores voltados a microcontroladores PIC:
  • 114. 114 Exemplos com Operadores BináriosExemplos com Operadores Binários unsigned char c; c = 7; // codigo binario 0000 0111 c = c<<1; // codigo binario 0000 1110 = 14 c = c<<2; // codigo binario 0011 1000 = 56 c = c<<3; // codigo binario 1100 0000 = 192 c = c>>1; // codigo binario 0110 0000 = 96 // 12 equivale a 00001100 e 6 equivale a 00000110 c = 12 & 6; // c passa a valer 4 (00000100) c = 12 | 6; // c passa a valer 14 (000001110) c = 12 ^ 6; // c passa a valer 10 (000001010)
  • 115. 115 Exemplo de programa para microcontroladorExemplo de programa para microcontrolador As definições de PIN_B0 e PIN_B1 estão no arquivo 16c71.h. A função toupper, que transforma letras em maiúsculas, está definida em ctype.h. O uso de #fuses indica “high speed oscillator” e “no watch dog timer”. As funções printf e putc são referenciadas utilizando o #use rs232, que indica parâmetros de comunicação para o microcontrolador. #include <16c71.h> #include <ctype.h> #fuses hs,nowdt #use rs232(baud=9600,xmit=PIN_B0,rcv=PIN_B1) #define TRUE 1 main() { printf(“Enter characters:”); while(TRUE) putc(toupper(getc())); }
  • 116. 116 Linguagem e Técnicas de Programação Capítulo 13 Exercícios selecionadosExercícios selecionados
  • 117. 117 1) 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úmero corresponde a duas vezes o valor do número do primeiro arquivo, linha-a-linha. 5) 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.
  • 118. 118 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]. 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 as 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. Passados como argumentos do programa. A seguir, o programa deve permitir acesso apenas aos usuários que acertarem o login e senha. 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.
  • 119. 119 11) Qual o resultado do programa abaixo, para cada sequência de dados de entrada. #include <stdio.h> main() { int a, b, c; scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); if((a == 7 || b != 2) && c < 4) printf("X"); else { if (a%b == 0) printf("Y"); else printf("Z"); } } Sequência digitada Letra escrita na tela 7 3 4 8 4 1 2 2 2
  • 120. 120 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; } int main(void) { int var1 = 1; int var2 = 2; int var3 = 3; int var4 = 4; float var5, var6; var4 = f1(var1, var2, &var3, &var4); var5 = 2.5; var6 = 5.7; printf("%d - %d - %d - %dn", var1, var2, var3, var4); printf("%.1fn", var6 - var5); puts("var4 – var2"); return 0; }