Buscar

LInguagem C

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 201 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 201 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 201 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução à Linguagem C
Prof
a
.Dr
a
.Thatyana de Faria Piola Seraphim (ECO)
Prof.Dr.Enzo Seraphim (ECO)
Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.MSc.João Paulo Reus Rodrigues Leite (ECA)
Prof.Dr.Carlos Henrique Valério de Morais (ECA)
Universidade Federal de Itajubá
thatyana@unifei.edu.br
seraphim@unifei.edu.br
rodrigomax@unifei.edu.br
joaopaulo@unifei.edu.br
valerio@unifei.edu.br
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - História
I
A linguagem de programação C foi projetada para permitir
grande economia de expressão nos programas, isto é, produzir
programas fonte mais compactos.
I
Foi usada para escrever cerca de 90% do código do sistema
operacional UNIX
I
com a popularização do UNIX em equipamentos de médio
porte, e até micros, a linguagem C também ganhou
popularidade entre os programadores profissionais.
I
1969: os laboratórios Bell lançaram uma versão básica do
sistema operacional UNIX escrito em Assembly
I
Keneth Thompson desenvolveu em 1969 uma linguagem
experimental chamada B
I
1972: a partir da linguagem B, a linguagem C foi projetada
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Criadores do Unix e Linguagem C (1969)
Ken Thompson (1943) Dennis Ritchie (1941-2011)
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - História
I
1973: o sistema operacional UNIX foi melhorado e cerca de
90% de seu código foi escrito em C.
I
Por causa da libertação do Assembly, o UNIX (e
consequentemente C) adquiriu grande portabilidade:
I
foi rapidamente adaptado a uma série de computadores e seu
uso não parou de crescer
I
No final da década de 70 e inicio da década de 80
I
a proliferação de UNIX e C foi muito grande e chegou até os
micros.
I
C ficou independente do sistema operacional UNIX e uma série
de compiladores C surgiram para muitos equipamentos
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - História
I
C é a linguagem preferida dos programadores profissionais por
várias razões
I
chega a substituir Assembly em boa parte do software
recentemente desenvolvido;
I
para muitos programadores que há alguns anos, vinham
desenvolvendo seus programas em Assembly, estão hoje quase
todos escritos em C.
I
Com o advento da Programação Orientada para Objetos
(OOP-Object Oriented Programming)
I
a linguagem que se tornou mais usada para esta técnica de
programação é uma extensão da linguagem C, chamada C++.
I
A maneira de comunicação com um computador chama-se
programa e a única linguagem que o computador entende
chama-se linguagem de máquina.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Criadores do Linux e GCC
Linus Torvalds
(Linux � 1991)
Richard Stallman
(Projeto Gnome � 1983)
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
C
int x = 10;
int y = 20;
int z = x*y;
Assembly
ldaa 10 // carrega 10 no acum. a
staa x // salva o valor do acum. a em x
ldaa 20 // carrega o valor 20 no acum. a
staa y // salva o valor do acum. a em y
ldaa x // carrega o acum. a com o valor de x
ldab y // carrega o acum. b com o valor de y
mulab // mult. acum. a por b, salva em a
staa z // salva o valor do acum. a em z
Binário
0x83 0x0a
0x84 0x00
0x83 0x14
0x84 0x01
0x83 0x00
0x93 0x01
0x5f
0x83 0x02
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Alice no mundo das maravilhas
Mundo Real: Devastação ocasionada pelos tornados
Mundo Maravilhoso: Coelho, Chapeleiro, Lagarta e a Rainha de Copas
Mundo Real x Mundo Maravilhoso
Linguagem Assembly x Linguagem C
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
I
Um programa C é uma coleção de funções criadas pelo
programador ou funções de biblioteca.
I
A grande maioria dos compiladores vem com uma grande
quantidade de funções já criadas e compiladas em biblioteca
que são usadas dependendo da necessidade do programador.
I
Os componentes de um programa em C são:
I
Comentários: podem e devem estar em qualquer ponto do
programa. São escritos entre os delimitadores /* e */ para um
bloco de comandos ou utilizar // para comentar uma linha
Comentários
1 /* Programa 01 */
2 /* Funcao: descricao */
3 // Autor: nome
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
I
Diretivas de compilação: não são instruções próprias da
linguagem C. São mensagens que o programador envia ao
compilador para que este execute alguma tarefa no momento
da compilação.
I
As diretivas são iniciadas pelo caractere #.
I
As diretivas mais comuns são #include e #define, ambas
utilizadas para especificar bibliotecas de funções a serem
incorporadas na compilação.
Diretivas
1 //Diretivas de compilacao
2 #include<biblioteca.h>
3 #define macros
4 #define labels
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
I
Definições Globais: são especificações de constantes, tipos e
variáveis que serão válidas em todas as funções que formam o
programa.
I
Embora sejam de relativa utilidade, não é uma boa prática de
programação definir muitas variáveis globais.
I
Podem ser acessadas em qualquer parte do programa.
I
Um breve descuido na alteração dos seus valores, pode
provocar problemas em muitos outros locais.
Definições Globais
1 // Secao de variaveis globais
2 char variavelGlobal;
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
I
Protótipos de funções: não são obrigatórios. São usados
pelo compilador para fazer verificações durante a compilação.
I
Ver se as partes do programa que acionam as funções o fazem
de modo correto, com o nome certo, com o número e tipo de
parâmetros adequados.
Protótipo de Funções
1 // Secao de prototipo de funcoes
2 void funcao01(char var);
3 int funcao02(void);
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
I
Definições de funções: são os blocos do programa onde são
definidos os comandos a serem executados em cada função.
I
A função pode, ou não, receber valores que serão manipulados
em seu interior.
I
Após o processamento, as funções podem, se necessário
retornar um valor.
I
É obrigatório a presença de pelo menos uma função com o
nome main, e esta será a função por onde começa a execução
do programa.
I
Não há ordem obrigatória para codificar as funções.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Introdução - Organização dos Programas em C
Definição de Funções
1 // Secao de definicao de funcoes
2 int main(int argc, char *argv[]){
3 return 0;
4 }//end main
5 void funcao01(char var){
6 ...
7 }//end funcao01
8 void funcao02(void){
9 ...
10 }//end funcao02
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Diretiva include
I
include: serve para especificar ao compilador que deseja-se
usar novas funções, tipos e macros que estão disponíveis em
outros arquivos.
I
Como a linguagem C tem uma grande variedade destas
funções e definições
I
é comum que elas sejam agrupadas em arquivos diferentes, de
acordo com a natureza das tarefas que elas executam.
Sintaxe
1 #include<nome do arquivo>
2 #include ``nome do arquivo''
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Diretiva include
I
A diferença entre as duas formas está no local onde o
compilador vai procurar o arquivo no momento da compilação.
I
#include<nomedo arquivo>: o arquivo é procurado no
diretório definido pelo compilador C, como sendo aquele que
contém os header files.
I
Header files: são os arquivos com extensão .h que contêm as
definições de tipos, dados e várias funções já prontas.
I
#include �nome do arquivo�: é usado quando deseja que o
compilador busque o arquivo especificado no mesmo diretório
do arquivo que está sendo criado.
I
Esta forma é usada quando deseja-se incorporar arquivos
criados e salvos pelo programador no mesmo diretório atual.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Diretiva include
Alguns arquivos (bibliotecas) padronizadas em todos os
compiladores, compatíveis com a norma ANSI-C.
I
assert.h: define a macro assert() que implementa uma
asserção, utilizada para verificar suposições feitas pelo
programa.
I
ctype.h: rotinas para verificação de tipos de dados.
I
errno.h: fornece macros para identificar e relatar erros de
execução através de códigos de erro. A macro errno fornece
um número inteiro positivo contendo o último código de erro
fornecido por alguma função ou biblioteca que faz uso do
errno.
I
float.h: define macros que especificam características do
ponto flutuante.
I
limits.h: define macros que definem os limites dos tipos de
dados.s
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Diretiva include
I
math.h: funções matemáticas.
I
stdio.h: rotinas de entrada e saída definidas pelos criadores da
linguagem C.
I
stddef.h: vários tipos de dados e macro substituições.
I
stdlib.h: possui funções envolvendo alocação de memória,
controle de processos, conversões e outras.
I
string.h: fornece funções, macros e definições da biblioteca
padrão da linguagem de programação C para manipulação de
cadeias de caracteres e regiões de memória.
I
time.h: fornece protótipos para funções, macros e definição de
tipos da biblioteca padrão da linguagem de programação C
para manipulação de datas e horários de modo padrão.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis
Uma variável em linguagem C possui:
I
Um tipo que indica o tamanho.
I
Um nome para referenciar o conteúdo.
I
Um espaço reservado na memória para armazenar seu valor.
Variável
É um espaço de memória contém um valor o qual pode ser alterado
ao longo do tempo.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Identificadores ou nomes
I
Para nomes de variáveis podem ser usados quantos caracteres
forem desejados contanto que o primeiro caracter seja uma
letra ou sublinhado.
I
A linguagem C faz distinção entre maiusculas e minusculas.
Por exemplo: matrix e MaTrIx são variáveis distintas.
I
É comum utilizar apenas minusculas para nomes de variáveis e
apenas MAIÚSCULAS para constantes.
I
Uma variável não pode ter o mesmo nome de uma palavra
chave em linguagem C .
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Tipos de Dados e Tamanhos
Existem quatro tipos básicos em C:
I
char - 1 byte: de -128 à 127;
I
int - 2 bytes: de -32.768 à 32.767;
I
float - 4 bytes: de -3.4 x 10
−38
à 3.4 x 10
38
;
I
double - 8 bytes: de -3.4 x 10
−308
à 3.4 x 10
308
.
Atenção
Apenas float e double podem armazenar valores fracionários!
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Modificadores
I
Para obtermos um tamanho de variável diferente dos tamanhos
padrões podemos utilizar dois modificadores: long e short.
I
Uma variável do tipo long deve ser de tamanho MAIOR ou
IGUAL a variável do tipo basico modificado.
I
Uma variável do tipo short deve ser de tamanho MENOR ou
IGUAL a variável do tipo basico modificado.
I
Exemplos:
I
short int - 2 bytes: de -32.768 à 32.767;
I
int - 2 bytes: de -32.768 à 32.767;
I
long int - 4 bytes: de -2.147.483.648 à 2.147.483.647;
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Modificadores
I
Todos os tipos básicos apresentados possuem sinal.
I
Se não for necessário o uso de sinal é possível utilizar o
modificador unsigned.
I
As variáveis conseguem, com o mesmo espaço, armazenar um
valor mais alto.
I
Para garantir que aquela variável tem sinal utilizamos o
modificador signed.
I
Exemplos:
I
signed int - 2 bytes: de -32.768 à 32.767;
I
int - 2 bytes: de -32.768 à 32.767;
I
unsigned int - 2 bytes: de 0 à 65.535;
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Declaração
I
Variáveis:
I
Consistem em um tipo seguido de nome da variável.
I
Devem ser declaradas antes de iniciar a codificação.
I
Variáveis do mesmo tipo podem ser declaradas separadas por
vírgula.
Declaração de variáveis
1 int main(int argc, char *argv[]){
2 //Declaracao das variaveis
3 int numFuncionarios;
4 float salarioMinimo, bonificacao;
5 double imposto, descontoEmFolha;
6 return 0;
7 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Inicialização
I
Inicializar uma variável é atribuir um valor a esta no momento
de sua declaração.
Inicialização de variáveis
1 int main(int argc, char *argv[]){
2 int numFuncionarios = 2;
3 float salarioMinimo = 510.0;
4 double imposto = 0.25, descontoEmFolha = 151.97;
5 printf("O salario minimo eh %f", salarioMinimo);
6 return 0;
7 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Inicialização de conjunto de caracteres
I
Para armazenar textos utilizamos um vetor de caracteres.
I
A inicialização deste vetor pode ser feita utilizando o texto
entre aspas duplas.
Armazenamento de texto
1 int main(int argc, char *argv[]){
2 char nome[10] = "Jose";
3 printf("Meu nome eh %s", nome);
4 return 0;
5 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - Atribuição
I
A alteração do valor de uma variável no meio do programa é
chamada atribuição.
I
O operador de atribuição é o sinal de igual =.
Atribuição de variáveis
1 int main(int argc, char *argv[]){
2 float valor;
3 valor = 1234.56;
4 printf("Valor sem nota %f", valor);
5 valor = valor * 1.25;
6 printf("Valor com nota %f", valor);
7 return 0;
8 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - typecast
I
typecast é a operação de mudança de tipo de um valor.
I
Para realizar um typecast basta colocar o tipo desejado entre
parênteses na frente do valor a ser convertido.
Atribuição de variáveis
1 int main(int argc, char *argv[]){
2 int valor;
3 float imposto;
4 valor = 300;
5 imposto = (int) valor * 0.257;
6 printf("Valor = %d, imposto = %f", valor, imposto);
7 //Valor = 300 e imposto = 77
8 return 0;
9 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Variáveis - typecast
Cuidado!
Ao realizar typecast tenha cuidado para não perder informação. No
caso anterior, o valor acaba sendo truncado pois, uma variável do
tipo int não possue virgula.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Constantes
I
Uma constante possui valor fixo e inalterável.
I
Para declarar uma constante utilizamos a diretiva #define
mais o nome da constante e o valor a ser atribuido.
Definição de constantes
1 #include<stdio.h>
2 #define DISTANCIA 262
3 int main(int argc, char *argv[]){
4 printf("Distancia entre Itajuba e SP = %d", DISTANCIA);
5 return 0;
6 }//end main
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores
I
A linguagem C tem uma grande quantidade de operadores.
I
Os operadores podem ser divididos em grupos como:
aritméticos, aritméticos de atribuição, incremento,
decremento, relacionais e lógicos.
I
Operadores aritméticos:soma e subtração têm a mesma
prioridade, que é menor do que a multiplicação, divisão e resto
da divisão.
Operadores
Operador Descrição Operador Descrição
= Atribuição + Soma
- Subtração * Multiplicação
/ Divisão % Resto da divisão
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores Aritméticos
Exemplos de operadores aritméticos
1 int a = 1, b = 3, c = 5;
2 int l, m, n, o, p;
//código //interpretação //resultado
l = 17 % c; l = 17 % 5; l = 2;
m = 15 + b; m = 15 + 3; m = 18;
n = 23 - a; n = 23 - 1; n = 22;
o = 18 / b; o = 18 / 3; o = 6;
p = 4 * c; p = 4 * 5; p = 20;
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores Aritméticos de Atribuição
I
Pode-se combinar os operadores aritméticos (+,-,*,/,%) com o
operador de atribuição da seguinte forma:
Combinação operadores aritméticos e atribuição
1 int a = 1, b = 3, c = 5;
2 int l, m, n, o, p;
//contração //expandido
l *= 4; l = l * 4;
m /= 2; m = m / 2;
n += 5; n = n + 5;
o -= 8; o = o - 8;
p %= 5; p = p % 5;
I
Este tipo de contração é muito utilizado na linguagem C, pois
facilita a escrita.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores de Incremento e Decremento
I
Uma operação muito comum nos programas em C é realizar o
incremento ou decremento de uma variável.
I
Em C existem dois operadores específicos:
I ++ incrementa de 1 seu operando.
I −− decrementa de 1 seu operando.
I
São utilizados para realizar contagens progressivas ou
regressivas.
I
Trabalham de dois modos:
I
pré-fixado: o operador aparece antes do nome da variável.
Exempo: ++n; onde n é incrementado antes de seu valor ser
usado.
I
pós-fixado: o operador aparece após o nome da variável.
Exemplo: n++, onde n é incrementado depois de seu valor ser
usado.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores de Incremento e Decremento
Exemplos Operadores de Incremento e Decremento
1 int a = 4;
//comando //interpretação //resultado
a++; a = a + 1; a = 5;
a� �; a = a - 1; a = 3;
l = 2 * a++; l = 2 * 4; l = 8;
m = 2 * ++a; m = 2 * 5; m = 10;
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores Relacionais
I
Os operadores relacionais são utilizados para fazer
comparações.
I
O resultado de uma comparação deve ser verdadeiro ou falso.
I
A linguagem C não define um tipo lógico.
I
Se o reultado de uma comparação for falso, o resultado da
operação será 0 (zero).
I
Se o resultado de uma comparação for verdadeiro, o resultado
da operação será 1.
Operadores Relacionais
Operador Descrição Operador Descrição
> Maior < Menor
>= Maior ou igual <= Menor ou igual
== Igualdade ! = Diferente
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores Relacionais
I
Programadores de linguagem C definem seu próprio tipo lógico
chamado bool da seguinte forma:
Definição de bool
1 typedef enum {false,true} bool;
Exemplo operadores relacionais
1 #include<stdio.h>
2 typedef enum {false,true} bool;
3 int main(int argc, char *argv[]){
4 int idade = 18;
5 bool longMaiorIdade = (idade >= 18);
6 bool idadeVelho = (idade > 50);
7 printf("Maior idade = %d e velho = %d", longMaiorIdade, idadeVelho);
8 return 0;
9 }//end main
Resultado: maiorIdade = 1 e velho = 0
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Operadores - Operadores Lógicos
I
Os operadores lógicos são:
I
Lógico E: indicado por &&.
I
Lógico OU: indicado por ||.
I
Lógico Negação: indicado por !.
I
Se exp1 e exp2 são duas expressões simples:
I
exp1 && exp2: é verdadeira se as duas expressões forem
verdadeiras.
I
exp1 || exp2: é verdadeira se uma ou as duas expressões forem
verdadeiras.
I
! exp1: é verdadeira se exp1 for falsa e vice-versa.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Expressões e Cometnários
1. Expressões: a linguagem C dá ao usuário uma grande
liberdade no momento de escrever expressões.
I
Isto é responsável pela compactação do código escrito em C,
mas faz com que as expressões escritas por programadores
mais experientes sejam mais complicadas.
I
Para facilitar a interpretação das expressões é comum o uso de
parênteses para evitar a ambiguidade.
I
Exemplo: (2+2)/2=2 e 2+2/2=3
2. Comentários: são textos introduzidos no meio do programa
fonte com a intenção de torná-lo mais claro.
I
//: usado para comentar uma linha do código.
I
/* . . . */: usado para comentar mais de uma linha de código.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
Função de saída printf().
I
Está definida na biblioteca stdio.h.
I
É uma das funções de entrada e saída e no interior dos
parênteses estão as informações passadas na tela do
computador.
Sintaxe
printf(�expressão de controle�, lista de argumentos);
I
Expressão de controle: indica a mensagem que vai ser impressa
na tela.
I
Lista de argumentos: indica os valores que serão passados para
a expressão controle.
I
É responsável tanto por imprimir as informações na tela do
computador, quanto por formatá-las.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
As informações apresentadas na tela do computador podem
ser formatadas através de códigos especiais:
Códigos Especiais em C
Códigos especiais Descrição
\n Nova linha
\t Tabulação
\b Retrocesso
\" Aspas
\\ Barra
\f Salta página
Código printf()
Código Formato
printf()
%c Caracter simples
%d Inteiro
%e Notação Científica
%f Ponto flutuante
%o Inteiro octal
%s Cadeia de caracteres
%u Decimal sem sinal
%x Hexadecimal
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
Exemplo 01
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 printf("Este eh o numero dois: %d", 2);
4 return 0;
5 }//end main
Resultado na tela: Este eh o numero dois: 2
Exemplo 02
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 printf("%s esta a %d milhoes de milhas do Sol", "Venus", 67);
4 return 0;
5 }//end main
Resultado na tela: Venus esta a 67 milhoes de anos do Sol
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
Os comandos de formato podem ter notificadores que
especificam a largura do campo e o número de casas decimais.
I
Um número inteiro é colocado entre o sinal % e o comando de
formato age como um especificador de largura mínima do
campo.
I
Caso a string ou o número seja maior que o mínimo, será
totalmente impressa, mesmo que ultrapasse o mínimo.
Exemplos
1 //Preenche com espacos em branco
2 printf("%5d", 350); //Tela: 350
3 //Preenche com zeros
4 printf("%05d", 350); //Tela:00350
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
Exemplos
1 //Preenche com espacos em branco
2 printf("%4.2f \n", 3456.78); //Tela: 3456.78
3 printf("%3.1f \n", 3456.78); //Tela: 3456.8
4 printf("%10.3f \n", 3456.78); //Tela: 3456.780
5 //Alinhamento com casas decimais
6 printf("%10.2f %10.2f %10.2f \n", 834.0, 1500.55, 480.21);
7 printf("%10.2f %10.2f %10.2f \n", 23, 4567.64, 9.12);
//Resultado na tela
834.00 1500.55 480.21
23.00 4567.64 9.12
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
O sinal de menos (-) precedendo a especificação do tamanho
do campo após o sinal %, justifica os campos à esquerda.
Exemplos
1 printf("%-10.2f %-10.2f %-10.2f \n", 834.0, 1500.55, 480.21);
2 printf("%-10.2f %-10.2f %-10.2f \n", 23, 4567.64, 9.12);
// Resultado natela
834.00 1500.55 480.21
23.00 4567.64 9.12
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
Função de saída putchar(): exibe um único caracter na tela.
I
Está definida na biblioteca stdio.h.
I
Ao contrário de strings, escritas entre aspas, constantes tipo
caracter são escritas entre apóstrofo em C.
Sintaxe
putchar(caracter);
I
Exemplo: putchar('a');
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
Função de entrada scanf():
I
Está definida na biblioteca stdio.h.
I
É o complemento da função printf().
I
Permite ler dados formatados da entrada do teclado.
I
Sua sintaxe é similar à do printf(), ou seja, é uma expressão
de controle seguida por uma lista de argumentos separados por
vírgula.
Sintaxe
scanf(�expressão de controle�, lista de argumentos);
I
Expressão de controle: são os códigos de formatação,
precedidos por um sinal de %.
I
Lista de argumentos: consiste nos endereços das variáveis.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
A linguagem C oferece um operador para tipos básicos
chamado operador de endereço e referenciado ao símbolo &
que retorna o endereço.
Código scanf()
Código Leitura Código Leitura
scanf() scanf()
%c Caracter simples %d Inteiro
%e Número notação científica %o Inteiro octal
%f Número de ponto flutuante %x Hexadecimal
%s Cadeia de caracteres %l Inteiro longo
%u Decimal sem sinal
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
Exemplo 01
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int idade;
4 printf("Digite a sua idade = ");
5 scanf("%d", &idade);
6 printf("Voce tem %d anos.\n", idade);
7 return 0;
8 }//end main
Resultado na tela: Voce tem 22 anos.
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int n;
4 printf("N = ");
5 scanf("%d", &n);
6 printf("Valor de n = %d, no endereco: %u \n", n, &n);
7 return 0;
8 }//end main
Resultado na tela: Valor de n = 2, no endereco: 3220420448
ECO002 / ELT102 Introdução à Linguagem C
Linguagem C
Funções de Entrada e Saída
I
Função de entrada getchar(): lê o caracter do teclado e
permite que ele seja impresso na tela. Está definida na
biblioteca stdio.h.
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 char n;
4 printf("Digite um caracter: ");
5 n = getchar();
6 printf("A tecla pressionada foi %c \n", n);
7 printf("Digite outro caracter: ");
8 n = getchar();
9 printf("A tecla pressionada foi %c \n", n);
10 return 0;
11 }//end main
Resultado na tela
Digite um caracter: a
A tecla pressionada foi: a
Digite outro caracter: b
A tecla pressionada foi: b
ECO002 / ELT102 Introdução à Linguagem C
Comandos de Controle: Tomada de Decisão e
Laços ou Malhas de Repetição
Profa.Dra.Thatyana de Faria Piola Seraphim (ECO)
Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.Dr.Carlos Henrique Valério de Moraes (ECA)
Universidade Federal de Itajubá
thatyana@unifei.edu.br
rodrigomax@unifei.edu.br
valerio@unifei.edu.br
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Bloco de Comandos
I Blocos de comando: são grupos de comandos que devem ser
tratados como uma unidade lógica
I O início de um bloco em C é marcado por um “{“ e o término
por um “}”
I O bloco de comando serve para criar um grupo de comandos
que devem ser executados juntos
I Usa-se o bloco de comandos quando se usa comandos de teste
em que deve-se escolher entre executar dois blocos de
comandos
I Um bloco de comandos pode ser utilizado em qualquer trecho
de programa que se pode usar um comando C
I Os comandos de controle especificam a ordem em que a
computação é feita no programa
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Expressão Condicional
I Muitos comandos em C contam com uma expressão
condicional que determina o curso da ação
I Uma expressão condicional pode representar um valor false ou
true
I Um valor 0 é false
I Um valor true é qualquer valor diferente de zero (incluindo
números negativos)
I Para utilizar a constante true ou false deve-se definir o tipo
bool
Definição de bool
1 typedef enum {false,true} bool;
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Estruturas de Decisão
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Estruturas de Decisão: if–else
I O comando if-else é usado para expressar decisões, ou seja, é
utilizado quando for necessário escolher entre dois caminhos,
ou quando se deseja executar um comando sujeito ao resultado
de um teste
Sintaxe do if
1 if( expressao ){
2 comando1;
3 }//end if
if com else opcional
1 if( expressao ){
2 comando1;
3 }//end if
4 else{
5 comando2;
6 }//end else
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Estruturas de Decisão: if–else
Sintaxe do if
1 if( expressao ){
2 comando1;
3 }//end if
4 else{
5 comando2;
6 }//end else
I expressão é avaliada:
I se for true (valor de
expressão tem que
diferente de zero), o
comando ou o bloco que
forma o corpo do if é
executado
I se for false, o comando
ou o bloco que é o corpo
do else é executado
Atenção
Apenas o código associado ao if ou o código associado ao else
será executado, nunca ambos
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Estruturas de Decisão: if–else
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 float nota;
4 printf("Digite uma nota: ");
5 scanf("%f", &nota);
6 if(nota >= 60){
7 printf("Aprovado");
8 }//end if
9 else{
10 printf("Reprovado");
11 }//end else
12 return 0;
13 }//end main
Resultado
Digite uma nota: 75
Aprovado
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Estruturas de Decisão: ifs Aninhados
I Quando for necessário escolher entre mais de uma opção
pode-se utilizar if’s aninhados.
Sintaxe do if
1 if( expressao1 ){
2 comando1;
3 }//end if
4 else{
5 if( expressao2 ){
6 comando2;
7 }//end if
8 else{
9 comando3;
10 }//end else
11 }//end else
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Estruturas de Decisão: ifs Aninhados
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 float nota;
4 printf("Digite a nota do aluno = ");
5 scanf("%f", &nota); //digitar nota
6 if(nota >= 60){
7 printf("Aprovado Direto");
8 } else {
9 printf("Digite a nota de exame aluno = ");
10 scanf("%f", &nota); //digitar nota
11 if(nota >= 60){
12 printf("Aprovado com Exame");
13 } else {
14 printf("Reprovado");
15 }//end else
16 }//end else
17 return 0;
18 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Comandos de Seleção: switch...case
I Para diversas comparações
com uma mesma variável
utilizamos o conjunto
switch...case
I A comparação é feita apenas
com números e caracteres
I As comparações são apenas
de igualdade
I Como boa pratica de
programação deve-se utilizar
sempre um caso padrão
default
Sintaxe do
switch...case
1 switch( variavel ){
2 case 1:
3 comando1;
4 break;
5 case 2:
6 comando2;
7 break;
8 default:
9 comando3;
10 break;
11 }//end switch
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Comandos de Controle
Comandos de Seleção: switch...caseExemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int tipo;
4 printf("Digite um tipo de combustivel = ");
5 scanf("%d", &tipo); //1 - alcool, 2 - gasolina
6 switch( tipo ){
7 case 1:
8 printf("Imposto = 4% do carro.");
9 break;
10 case 2:
11 printf("Imposto = 2% do carro.");
12 break;
13 default:
14 printf("Tipo de carro desconhecido!");
15 reak;
16 }//end switch
17 return 0;
18 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Introdução
I Todo loop deve possuir uma condição que indique quando
este deve terminar. Uma condição mal feita pode prender o
programa dentro do loop
I Esta é uma das causas mais comuns para o ”travamento” dos
aplicativos, comumente chamada de loop infinito
Laços de repetição
Estruturas computacionais que permitem a repetição de um trecho
de código N vezes ou enquanto uma condição for verdadeira.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no inicio - while
I A repetição com teste no
inicio do loop é usada para
repetir N vezes uma ou mais
instruções.
I Não é necessário conhecer
com antecedência o número
de repetições.
Sintaxe do while
1 while( condicao ){
2 comando1;
3 comando2;
4 alteracao da condicao;
5 }//end while
I O controle do loop é feito através de uma condição.
I Para que o sistema NÃO entre em ” loop infinito” esta
condição TEM que ser alterada em algum momento
DENTRO do loop
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no inicio - while - Atividade 1
Fazer um programa que:
I Leia o valor do salário dos funcionários de uma empresa.
I Ao terminar de ler os valores, deve imprimir a soma dos
salários.
I A quantidade de funcionários não é conhecida.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no inicio do loop - Atividade 1
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 float total = 0.0, salario=1;
4 while( salario > 0 ){ //0 - sai do programa
5 printf("Digite o valor de salario = ");
6 scanf("%f", &salario);
7 total = total + salario;
8 }//end while
9 printf("Somatório = %f", total);
10 return 0;
11 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no final - do...while
I Assim como a instrução while a
instrução do..while é utilizada para
repetirmos um bloco do algoritmo
diversas vezes.
I A diferença é o ponto onde a
verificação da condição é realizada.
I Mesmo que a condição seja falsa
desde o inicio, na estrutura
do..while o bloco é executado pelo
menos uma vez.
Sintaxe do do...while
1 do{
2 comando1;
3 comando2;
4 alteracao da condicao
5 }while( condicao )
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no final - do...while
ATENÇÃO NOVAMENTE
O controle do loop TAMBÉM é feito através de uma condição.
Portanto, é necessário que essa condição seja alterada dentro do
loop.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no final - do...while- Atividade 1
Fazer um algoritimo que:
I Leia o valor do salário dos funcionários de uma empresa.
I Ao terminar de ler os valores deve imprimir a soma dos salários.
I A quantidade de funcionários não é conhecida.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com teste no final - do...while- Atividade 1
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 float total = 0.0, salario;
4 do{
5 printf("Digite o valor de salario = ");
6 scanf("%f", &salario);
7 total = total + salario;
8 } while(salario > 0) //0 - sai do programa
9 printf("Somatório = %f\n", total);
10 return 0;
11 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com variável de controle - for
I Diferentemente das duas formas de loop apresentadas
anteriormente a repetição com variável de controle for, é
utilizada para repetir um bloco de instruções com uma
quantidade de repetições pré-estabelecida.
I Para atingir este objetivo utilizamos dentro desta estrutura
uma variável que trabalha como um contador. Esta indicará a
quantidade de vezes que o bloco de instruções será repetido.
Sintaxe do for
1 for(inicializacao; teste; incremento){
2 comandos;
3 }//end for
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com variável de controle - for - Atividade 1
Fazer um programa em C que:
I Leia cinco valores dados pelo usuário
I Some o triplo de cada valor
I Imprima o somatório na tela.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com variável de controle - for - Atividade 1
Exemplo
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int total = 0, cont, num;
4 for(cont = 0; cont < 5; cont++){
5 printf("Digite um numero = ");
6 scanf("%d", &numero);
7 total = total + (numero * 3);
8 }//end for
9 printf("Somatório = %d", total);
10 return 0;
11 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com variável de controle - for - Atividade 1
Exemplo: imprime a tabela ASCI
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, j;
4 for(i = 0; i < 16; i++){
5 for(j = 1; j < 16; j++){
6 printf("[%d] = %c \t", i+j*16, i+j*16);
7 }//end for j
8 printf("\n");
9 }//end for i
10 return 0;
11 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Repetição com variável de controle - for - Atividade 1
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Comandos de desvio break e continue
I Os comandos break e continue permitem ao programador
alterar o fluxo do programa dentro de um loop.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Comandos de desvio break e continue
break
I Ao utilizar o comando break, o loop é parado imediatamente,
independente das condições.
I O programa tem sequencia no primeiro comando depois do
loop.
I Também é utilizado em conjunto com o comando switch
continue
I Ao utilizar o comando continue, a iteração atual do loop para
de ser executada e o loop reinicia.
I Se for usada dentro de um loop do tipo for o bloco de
incremento é executado.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Comandos de desvio break e continue - Atividade 1
Fazer um algoritimo que:
I Leia o valor do salário dos funcionários de uma empresa.
I Ao terminar de ler os valores deve imprimir a soma dos salários.
I A quantidade de funcionários não é conhecida.
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Laços ou Malhas de Repetição
Comandos de desvio break e continue - Atividade 1
Exemplo
1 #include<stdio.h>
2 typedef enum {false,true} bool;
3 int main(int argc, char *argv[]){
4 float total = 0.0, salario;
5 while(true){
6 printf("Digite o salario = ");
7 scanf("%f", &salario);
8 if(salario==0){
9 break; //se o salario = 0, sai do loop
10 }//end if
11 total = total + salario;
12 }//endwhile
13 printf("Total salario = %f", total);
14 return 0;
15 }//end main
ECO002 / ELT102 / ECA102 Tomada de Decisão e Laços ou Malhas de Repetição
Tipos de Dados Estruturados
Prof
a
.Dr
a
.Thatyana de Faria Piola Seraphim (ECO)
Prof.Dr.Enzo Seraphim (ECO)
Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.MSc.João Paulo Reus Rodrigues Leite (ECA)
Prof.Dr.Carlos Henrique Valério de Morais (ECA)
Universidade Federal de Itajubá
thatyana@unifei.edu.br
seraphim@unifei.edu.br
rodrigomax@unifei.edu.br
joaopaulo@unifei.edu.br
valerio@unifei.edu.br
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Um vetor é uma sequência de objetos do mesmo tipo
I
Os objetos são chamados elementos do vetor e são
numerados consecutivamente (0, 1, 2, 3, . . .)
I
Os números dos elementos do vetor são denominados valores
índices. Os números localizam a posição do elemento dentro
do vetor, possibilitando acesso direto ao vetor
I
Os tipos de elementos armazenados no vetor podem ser
qualquer tipo de dado em C, incluindo estruturas definidas
pelo usuário
I
Se o nome do vetor é v, então v[0] é o nome do elemento que
está na posição 0, v[1] é o nome do elemento que está na
posição 1
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Assim como qualquer tipo de variável, deve-se declarar um
vetor antes de utilizá-lo
I
Um vetor é declarado de forma similar a outros tipos de dados,
exceto que se deve indicar ao compilador o tamanho ou o
comprimento do vetor
I
Para indicar o tamanho ou o comprimento do vetor, deve-se
colocar após o nome, o tamanho entre colchetes
Sintaxe para declarar um vetor
tipo nomeVetor[numeroDeElementos];
I
tipo: tipo de dado do vetor
I
nomeVetor: nome dado ao vetor
I
numeroDeElementos: tamanho do vetor. Deve ser uma
constante inteira, assim como 10.
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Criando um vetor de 10 elementos inteiros
I
Essa declaração permite que o compilador reserve espaço
suficiente para conter 10 valores inteiros
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Grande parte da utilidade de um vetor provém do fato de se
poder acessar os elementos do vetor de forma individual
I
Um método para acessar um elemento é utilizar um índice
I
Os vetores sempre começam em zero
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Os elementos do vetor são armazenados em blocos contínuos
Exemplo
1 int idade[5];
2 char codigo[5];
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Deve-se atribuir valores aos elementos do vetor anes de
utilizá-los, assim como se atribuem valores a variáveis
Exemplos
1 idade[0] = 10;
2 idade[1] = 20;
3 idade[2] = 30;
4 idade[3] = 40;
5 ...
I
A primeira sentença atribui o valor 10 à variável idade[0] e o
valor 20 à variável idade[1]
I
Este método não é eficaz quando o vetor contém muitos
elementos
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Pode-se dar valores aos elementos de um vetor, quando este é
definido
I
O sistema consiste em armazenar os valores correspondentes
que estão entre chaves e separados por vírgula
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Não é necessário utilizar o tamanho do vetor quando são
inicializados os elementos do vetor, uma vez que o compilador
contará o npumero de variáveis que inicializa
I
Quando se inicializa um vetor, o seu tamanho pode ser
determinado automaticamente pelas constantes de inicialização
I
As constantes de inicialização são separadas por vírgulas e
estão entre chaves
Exemplos
1 int num[6] = {10, 20, 30, 40, 50, 60};
2 int n[ ] = {3, 4, 5}; //declara um vetor de 3 elementos
3 float k[ ] = {2.15, 32.1, 17.5, 65.6}; //declara um vetor
4 //de 4 elementos
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
I
Os vetores de caracteres podem ser inicializados com uma
constante de cadeia
Exemplo
1 //declara um vetor de 6 elementos
2 char c[ ] = {'U', 'n', 'i', 'f', 'e', 'i'};
3 //declara um vetor de 7 elementos
4 char c[ ] = "Unifei";
I
O método de inicializar vetores por meio de valores constantes
depois de sua definição
I
é adequado quando o número de elementos do vetor é pequeno
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Exemplo 01
Inicializar o vetor com 10 elementos e imprimir os elementos em
ordem inversa
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Exemplo 01
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int conta[10]= {10,9,8,7,6,5,4,3,2,1}; //inicializacao do vetor
4 int i;
5 //impressao do vetor original
6 printf("Vetor Original = ");
7 for(i = 0; i < 10; i++){
8 printf("\%d ", conta[i]);
9 }//end for
10 printf}("\n");
11 //impressao do vetor em ordem inversa
12 printf("Ordem inversa = ");
13 for(i = 9; i >= 0; i--){
14 printf("\%d ", conta[i]);
15 }//end for
16 return 0;
17 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Exercício 01
Dado um vetor de números inteiros, faça a sua inicialização e some
os valores do vetor.
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Resposta do exercício 01
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, soma, vet[10];
4 soma = 0;
5 //inicializacao do vetor
6 for(i = 0; i < 10; i++){
7 vet[i] = i * 45;
8 }//end for
9 //soma dos elementos do vetor
10 for(i = 0; i < 10; i++){
11 soma = soma + vet[i];
12 }//end for
13 return 0;
14 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Exercício 02
Dado dois vetores:
1 int vetA[5] = {1, 2, 3, 4, 5};
2 int vetB[5] = {2, 3, 4, 5, 6};
Encontre a diferença entre os dois vetores, ou seja, quais elementos
estão no vetA mas não estão no vetB.
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Vetores
Resposta do exercício 02
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int vetA[5] = {1, 2, 3, 4, 5};
4 int vetB[5] = {2, 3, 4, 5, 6};
5 int i, j;
6 for(i = 0; i < 5; i++){
7 for(j = 0; j < 5; j++){
8 if(vetA[i] == vetB[j]){
9 break;
10 }//end if
11 }//end for j
12 if(j == 5){
13 printf("%d", vetA[i]);
14 }//end if
15 }//end for i
16 return 0;
17 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
I
Uma matriz é uma variável composta homogênea
bidimensional
I
formada por uma sequência de variáveis, todas do mesmo tipo
I
possuem o mesmo identificador (mesmo nome)
I
Uma vez que as variáveis tem o mesmo nome, o que as
diferencia são os índices que referenciam sua localização
dentro da estrutura
I
Uma variável do tipo matriz de duas dimensões pode ser
referenciada como tendo linhas (dimensao1) e colunas
(dimensao2)
Definição da matriz
tipoDado nomeMatriz[dimensao1][dimensao2];
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Definição da matriz
tipoDado nomeMatriz[dimensao1][dimensao2];
onde:
I
tipoDado: é o tipo de dados que poderá ser armazenado na
matriz
I
nomeMatriz: é o nome dado à variável do tipo da matriz
I
[dimensao1]: indicao tamanho da dimensão 1 (número de
linhas)
I
[dimensao2]: indica o tamanho da dimensão 2 (número de
colunas)
I
Da mesma maneira como ocorre com os vetores, os índices
começam sempre em 0 (zero)
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
I
Por exemplo:
int a[2][6];
I
Criou-se uma matriz chamada a contendo duas linhas (0 e 1) e
6 colunas (0 à 5), capazes de armazenar números inteiros
I
Por exemplo:
float mat[3][3] //contem 3 linhas e 3 colunas
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Atribuindo valores à matriz
a[1][4] = 10;
mat[2][1] = 3.45;
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
I
As matrizes podem ser inicializadas quando são declaradas
I
A inicialização consta de uma lista de constantes separadas
por vírgulas e estão entre chaves
Exemplos de inicialização de matriz
1 int mat[2][3] = {51, 52, 53, 54, 55, 56};
2 int mat[2][3] = { {51, 52, 53}, {54, 55, 56} };
3 int mat[2][3] = { {51, 52, 53},
4 {54, 55, 56} };
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Inicialização da matriz
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, j, mat[3][4];
4 //inicializacao da matriz
5 for(i = 0; i < 3; i++){
6 for(j = 0; i < 4; j++){
7 scanf("%d", &mat[i][j]);
8 }//end for de j
9 }//end for de i
10 return 0;
11 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Mostra os elementos da matriz
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, j, mat[3][4];
4 for(i = 0; i < 3; i++){
5 for(j = 0; i < 4; j++){
6 printf("elem[%d][%d] = %d \n", i, j, mat[i][j]);
7 }//end for de j
8 }//end for de i
9 return 0;
10 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Exercício 01
Ler duas matrizes de inteiros A e B, cada uma de duas dimensões
com 5 linhas e 3 colunas. Construir uma matriz C de mesma
dimensão, onde C é formada pela soma dos elementos da matriz A
com os elementos da matriz B.
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Resposta do exercício 01
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, j, matA[5][3], matB[5][3], matC[5][3];
4 //inicializacao das matrizes A e B
5 for(i = 0; i < 5; i++){
6 for(j = 0; j < 3; j++){
7 scanf("%d", &matA[i][j]);
8 scanf("%d", &matB[i][j]);
9 matC[i][j] = matA[i][j] + matB[i][j];
10 }//end for j
11 }//end for i
12 return 0;
13 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Exercício 02
Faça um programa que inicializa uma matriz identidade de ordem
1000.
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Estruturas Homogêneas
Matrizes
Resposta do exercício 02
1 #include<stdio.h>
2 int main(int argc, char *argv[]){
3 int i, j, matI[1000][1000];
4 //inicializacao da matriz identidade
5 for(i = 0; i < 1000; i++){
6 for(j = 0; j < 1000; j++){
7 if(i == j){
8 matI[i][j] = 1;
9 }//end if
10 else{
11 matI[i][j] = 0;
12 }//end else
13 }//end for j
14 }//end for i
15 return 0;
16 }//end main
ECO002 / ELT102 / ECA102 Tipos de Dados Estruturados
Funções em C
Prof
a
.Dr
a
.Thatyana de Faria Piola Seraphim (ECO)
Prof.Dr.Enzo Seraphim (ECO)
Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.MSc.João Paulo Reus Rodrigues Leite (ECA)
Prof.Dr.Carlos Henrique Valério de Morais (ECA)
Universidade Federal de Itajubá
thatyana@unifei.edu.br
seraphim@unifei.edu.br
rodrigomax@unifei.edu.br
joaopaulo@unifei.edu.br
valerio@unifei.edu.br
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
A modularização é um recurso muito importante apresentado
nas linguagens de programação, onde um programa pode ser
particionado em sub-rotinas específicas.
I
A linguagem C possibilita a modularização por meio das
funções.
I
Um programa escrito em C, possui no mínimo uma função
chamada main, por onde a execução do programa começa.
I
Existem muitas outras funções pré-definidas em C, por
exemplo: strcmp, strcpy, entre outras.
I
Essas funções são inseridas no programa pela diretiva
#include.
I
O usuário também pode criar quantas funções quiser,
dependendo do problema que está sendo resolvido pelo
programa.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Definição de Função
Uma função é um conjunto de sentenças que podem ser chamadas
de qualquer parte de um programa.
I
As funções não podem ser aninhadas, ou seja, uma função
não pode ser declarada dentro de outra função.
I
A razão para isso é permitir um acesso eficiente aos dados.
I
Cada função realiza determinada tarefa, e quando o comando
return é executado dentro da função
I
Retorna-se ao ponto em que a função foi chamada pelo
programa principal (main) ou por uma função principal.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Sintaxe
1 tipoRetorno nomeDaFuncao(listaDeParametros){
2 corpo da funcao
3 return expressao;
4 }
I
tipoRetorno: tipo de valor devolvido pela função.
I
nomeDaFunção: identificador ou o nome dado à função.
I
listaDeParametros: são as variáveis passadas para a função.
Quando a função recebe mais de um parâmetro, esses são
separados por vírgula.
I
expressao: indica o valor que a função vai devolver para o
programa.
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
Tipo de resultado: o tipo de dado retornado (devolvido) pela
função. O tipo sempre aparece antes do nome da função.
I
Lista de parâmetros: a lista de parâmetros com tipos com o
seguinte formato:
(tipo1 parametro1, tipo2 parametro2, . . .)
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
Corpo da função: tem que estar definido entre o abre chaves
{ e o fecha chaves }. Não há ponto-e-vírgula depois da chave
de fechamento.
I
As constantes, tipos de dados e variáveis declaradas dentro da
função são locais à função e não podem ser lidas ou acessadas
fora da função.
I
Valor devolvido pela função: mediante a palavra return,
pode-se devolver (retornar) o valor da função.
I
Uma chamada de função produz:
I
A execução das instruções do corpo da função.
I
Um retorno para a unidade de programa que fez a chamada
depois que a execução da função terminou (ocorre quando a
sentença return é encontrada).
ECO002 / ELT102 / ECA102 Funções em C
Funções
Nome da Função
I
Um nome de função começa com uma letra ou um (_).
I
O nome pode conter tantas letras, números ou (_), quanto
deseje o programador. Alguns compiladores ignora a partir de
uma certa quantidade de caracteres.
I
Letras maiúsculas e minúsculas são distintas para efeito de
nome de função.
1 int max(int x, int y) //nome da funcao max
2 double media(double x1, double x2) //nome da funcao media
ECO002 / ELT102 / ECA102 Funções em C
Funções
Tipo de dado de retorno
I
O usuário deve especificar qual é o tipo de dado que a função
vai retornar.
I
O tipo de dado deve ser um dos tipos de C, por exemplo:
int, double, float ou char; ou então um tipo definido
pelo usuário.
I
O tipo void serve para indicar que a função não retorna
nenhum valor.
Exemplos
1 int max(int x, int y) //retorna um valor inteiro
2 double media(double x1, double x2) //retorna um double
3 float soma(int numElem) //retorna um float
4 void tela(void) //nao retorna nada
ECO002 / ELT102 / ECA102 Funções em C
Funções
Resultados de uma função
I
A função podedevolver um único valor, e o resultado é
mostrado como uma sentença return.
I
O valor retornado por uma função deve seguir as mesmas
regras que são aplicadas a um operador de atribuição.
I
Por exemplo, o valor int não pode ser retornado se o tipo de
retorno da função for um char.
I
Uma função pode ter qualquer número de sentenças return.
I
Sempre que o programa encontra uma instrução return,
retorna para a instrução que originou a chamada para a função.
I
A execução de uma chamada à função termina se não
encontrar nenhuma instrução return; e nesse caso, a execução
continua até a chave final do corpo da função.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Chamada a uma função
I
Para que uma função seja executada, é necessário que a
função seja chamada.
I
Qualquer expressão pode conter uma chamada a uma
função, a qual redirecionará o controle do programa para a
função chamada.
I
Normalmente, a chamada a uma função é realizada pela
função main, mas a chamada pode ser feita através de outra
função.
I
Quando a função termina sua execução, o controle do
programa volta para a função main() ou para a função de
chamada se esta não for o main.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Função para impressão de 10 *
1 #include<stdio.h>
2 void desenha(void){
3 int i; //variavel local
4 for(i=0; i<10; i++){
5 printf("*");
6 }//end for
7 }//end desenha()
8 int main(int argc, char *argv[]){
9 desenha(); //chamada para funcao desenha
10 return 0;
11 }//end main
Resultado
**********
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 01
Altere o programa anterior para que seja feita a leitura do número
de asteriscos a ser impresso na tela. O número de asteriscos deve
ser passado como parâmetro para a função desenha()
ECO002 / ELT102 / ECA102 Funções em C
Funções
Função para impressão de 10 *
1 #include<stdio.h>
2 void desenha(int num){
3 int i; //variavel local
4 for(i=0; i<num; i++){
5 printf("*");
6 }//end for
7 }//end desenha()
8 int main(int argc, char *argv[]){
9 int ast;
10 printf("Digite o numero de asteriscos = ");
11 scanf("%d", &ast);
12 desenha(ast); //chamada para funcao desenha
13 return 0;
14 }//end main
Resultado
Digite o numero de asteriscos = 8
********
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 02
Faça uma função que recebe um número inteiro e retorna o
quadrado do número inteiro. A função deve ser chamada pelo
programa principal (main()) que vai imprimir na tela o valor do
quadrado do número digitado.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 02
1 #include<stdio.h>
2 int quadrado(int num){
3 int aux;
4 aux = num * num;
5 return aux;
6 }//end quadrado()
7 int main(int argc, char *argv[]){
8 int quad, res;
9 printf("Digite um numero = ");
10 scanf("%d", &quad);
11 res = quadrado(quad); //chamada para funcao quadrado
12 printf("O quadrado de %d= %d", quad, res);
13 printf("O quadrado de 3 = %d", quadrado(3));
14 return 0;
15 }//end main
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 03
Faça uma função que realiza a somatória dos quadrados de números
inteiros sucessivos, de zero até um número dado n. A função deve
retornar o valor da soma dos quadrados dos n primeiros números. A
função deve ser chamada pelo programa principal (main()).
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 03
1 #include<stdio.h>
2 int somaQuad(int n){
3 int i, quad, soma = 0;
4 for(i=0; i<n; i++){
5 quad = i * i;
6 soma = soma + quad;
7 }//end for
8 return soma;
9 }//end somaQuad()
10 int main(int argc, char *argv[]){
11 int num, res;
12 printf("Digite um numero = ");
13 scanf("%d", &num);
14 res = somaQuad(num); //chamada para funcao somaQuad
15 printf("Soma = %d \n", res);
16 return 0;
17 }//end main
ECO002 / ELT102 / ECA102 Funções em C
Funções
Protótipo de Funções
I
Em C é necessário que uma função seja declarada ou definida
antes do seu uso.
I
A declaração de uma função sem sua implementação antes do
main é chamada de protótipo da função.
I
O protótipo de uma função possui o mesmo cabeçalho da
função, com a diferença que os protótipos terminam com
ponto-e-vírgula.
I
Um protótipo é composto dos seguintes elementos: tipo,
nome da função, parâmetros (que devem estar entre
parênteses e é opcional) e um ponto-e-vírgula no final.
Sintaxe do Protótipo
tipoRetorno nomeDaFuncao(listaDeParametros);
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
Um protótipo declara uma função e passa ao compilador
informação suficiente para verificar se a função está sendo
chamada corretamente em relação ao número e tipo de
parâmetros e ao tipo de retorno da função.
I
Os protótipos são definidos sempre no início do programa,
antes da definição do main().
I
O compilador utiliza os protótipos para validar que o número e
os tipos de dados do argumentos na chamada da função,
sejam os mesmos que aparecem na declaração formal da
função chamada.
I
Caso encontre alguma inconsistência, uma mensagem de erro é
vizualizada.
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
Uma vez que os protótipos foram processados:
I
o compilador conhece quais são os tipos de argumentos que
ocorreram.
I
Quando é feita uma chamada para a função, o compilador
confirma se o tipo de argumento na chamada da função é o
mesmo definido no protótipo.
I
Se não são os mesmos, o compilador gera uma mensagem de
erro.
Exemplo de protótipo
1 #include<stdio.h>
2 int quadrado(int num); //prototipo
3 int main(int argc, char *argv[]){
4 ...
5 }
6 int quadrado(int num){
7 ...
8 }
ECO002 / ELT102 / ECA102 Funções em C
Funções
I
A linguagem C permite dois modos para passar parâmetros
entre funções.
I
Uma função pode utilizar parâmetros:
I
Por valor.
I
Por referência.
I
Pode não ter parâmetros.
Passagem por Valor
I
É também conhecida como passagem por cópia.
I
Quando C compila a função e o código que chama a função:
I
A função recebe uma cópia dos valores dos parâmetros.
I
Se o valor de um parâmetro local é mudado, a mudança afeta
somente a função e não tem efeito fora dela.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exemplo
1 #include<stdio.h>
2 void imprime(int num);
3 int main(int argc, char *argv[]){
4 int n=10;
5 printf("Antes da funcao imprime n=%d \n", n);
6 imprime(n);
7 printf("Depois da funcao imprime n=%d \n", n);
8 return 0;
9 }//end main
10 void imprime(int num){
11 printf("Dentro da funcao num=%d \n", num);
12 num = 200;
13 printf("Dentro da funcao num=%d \n", num);
14 }//end imprime()
ECO002 / ELT102 / ECA102 Funções em C
Funções
Resultado do Exemplo
Antes da funcao imprime n = 10
Dentro da funcao num = 10
Dentro da funcao num = 200
Depois da funcao imprime n = 10;
ECO002 / ELT102 / ECA102 Funções em C
Funções
Passagem de Parâmetro por Referência
I
A passagem de parâmetro por referência é usado quando se
deseja que uma função modifique o valor do parâmetro
passado e devolva o valor modificado para a função de
chamada.
I
O compilador passa o endereço de memória do valor do
parâmetro para a função.
I
Quando se modifica o valor do parâmetro (a variável local), o
valor fica armazenado no mesmo endereço de memória.
I
Ao retornar para a função de chamada, o endereço de memória
onde foi armazenado o parâmetro conterá o valor modificado.
I
Para declarar um parâmetro como passagem por referência, o
símbolo & deve preceder o nome da variável.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício04
Faça um programa que leia 2 valores inteiros que serão ordenados
de forma crescente. Crie uma função chamada ordena que recebe
os 2 valores inteiros e faça a ordenação dos mesmos. Os
parâmetros devem ser passados por referência para a função.
ECO002 / ELT102 / ECA102 Funções em C
Funções
Exercício 04
1 #include<stdio.h>
2 void ordena(int *a, int *b);
3 int main(int argc, char *argv[]){
4 int a, b;
5 printf("Digite A = ");
6 scanf("%d", &a);
7 printf("Digite B = ");
8 scanf("%d", &b);
9 printf("Antes da ordenacao \n");
10 printf("A = %d, B = %d \n", a, b);
11 ordena(&a, &b);
12 printf("Depois da ordenacao \n");
13 printf("A = %d, B = %d \n", a, b);
14 return 0;
15 }//end main
ECO002 / ELT102 / ECA102 Funções em C
Funções
Continuação do Exercício 04
16 void ordena(int *a, int *b){
17 int n1, n2;
18 if(*a < *b){
19 n1 = *a;
20 n2 = *b;
21 }//end if
22 else{
23 n1 = *b;
24 n2 = *a;
25 }//end else
26 *a = n1;
27 *b = n2;
28 }//end ordena()
ECO002 / ELT102 / ECA102 Funções em C
Funções
Diferenças entre os parâmetros por valor e por referência
I
Parâmetros por valor
I
Os parâmetros por valor são declarados sem & e recebem
cópias dos valores dos parâmetros passados.
I
A atribuição de uma função a parâmetros por valor nunca
muda o valor do parâmetro original passado.
I
Parâmetros por referência
I
Os parâmetros por referência são declarados com & e recebem
o endereço dos parâmetros passados.
I
As atribuições feitas a parâmetros por referência, mudam os
valores dos parâmetros originais.
ECO002 / ELT102 / ECA102 Funções em C
Funções de Biblioteca e Funções para
Manipulação de Strings
Prof
a
.Dr
a
.Thatyana de Faria Piola Seraphim (ECO)
Prof.Dr.Enzo Seraphim (ECO)
Prof.MSc.Rodrigo Maximiano Antunes de Almeida (ELT)
Prof.MSc.João Paulo Reus Rodrigues Leite (ECA)
Prof.Dr.Carlos Henrique Valério de Morais (ECA)
Universidade Federal de Itajubá
thatyana@unifei.edu.br
seraphim@unifei.edu.br
rodrigomax@unifei.edu.br
joaopaulo@unifei.edu.br
valerio@unifei.edu.br
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Biblioteca Padrão C
I
Bibliotecas são conjuntos de funções que foram desenvolvidas
e que podem ser usadas por outros programas sem que o
programador se preocupe com o código dessas funções.
I
Vantagens no uso de bibliotecas:
I
Organização do código.
I
Podem ser utilizadas em vários programas sem a necessidade
de copiar grandes trechos de código.
I
A biblioteca padrão do C é também conhecida como libc.
I
É uma biblioteca de rotinas padronizada da linguagem de
programação C.
I
Contém operações comuns como tratamento de entrada/saída
e cadeia de caracteres.
I
Para muitos compiladores C, a biblioteca padrão está contida
em um arquivo.
I
Algumas implementações têm as funções relacionadas
agrupadas em suas próprias bibliotecas por eficiência ou
restrição de tamanho.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdio.h
I
A biblioteca stdio é um cabeçalho da biblioteca padrão do C.
I
Seu nome vem da expressão inglesa standard input-output
header, que significa cabeçalho padrão de entrada/saída.
I
Possui definições de subrotinas referentes às operações de
entrada/saída.
I
Como leitura de dados digitados no teclado .
I
Exibição de informações na tela do programa de computador.
I
Possui numerosas definições de constantes, variáveis e tipos.
I
É um dos cabeçalhos mais populares da linguagem de
programação C, intensivamente utilizado tanto por
programadores iniciantes quanto experientes.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
I
Stdlib.h é um arquivo cabeçalho da biblioteca de propósito
geral padrão da linguagem de programação C.
I
O nome stdlib vem de standard library.
I
Possui funções que são classificadas em:
I
Conversão de tipo.
I
Geração de sequências aleatórias.
I
Alocação e liberação de memória.
I
Controle de processos.
I
Matemática.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
double atof(const char *str);
I
Converte uma string em um valor float.
I
String deve conter um número de ponto flutuante válido.
I
Se a função atof() for chamada com 100.00Hello, o valor
100.00 será devolvido.
int atoi(const char *str);
I
Converte uma string em um valor inteiro.
I
A string deve conter um inteiro válido.
I
Se a função atoi() for chamada com 123.45, o valor inteiro
123 é devolvido e 0.45 é ignorado.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
int atol(const char *str);
I
Converte uma string em um valor long int.
I
A string deve conter um inteiro longo válido.
I
Se a função atol() for chamada com 123.45, o valor inteiro
123 é devolvido e 0.45 é ignorado.
int abs(int num);
I
Devolve o valor absoluto de seu argumento inteiro.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
int rand(void);
I
Gera um número aleatório.
I
Cada vez que a função rand() é chamada, é devolvido um
número entre zero e RAND_MAX.
void srand(unsigned int seed);
I
Estabelece um ponto de partida para a sequência gerada por
rand().
I
É usada para permitir que programas gerem sequências
diferentes de números aleatórios a cada execução.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
Exemplo 01 - Sorteio da face do dado
Faça um programa que recebe como parâmetro a quantidade
máxima de faces para um sorteio aleatório.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
Exemplo 01
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<time.h>
4 int main(int argc, char *argv[]){
5 int faces, sor;
6 srand(time(NULL));
7 if((argc == 2)){
8 faces = abs(atoi(argv[1]));
9 if(faces > 9){
10 faces = 10;
11 }//end if
12 sor = rand() % faces;
13 printf("Sorteado a face: %d\n", sor);
14 }else{
15 printf("Digite: nomeExecutavel QuatFaces\n");
16 }//end else
17 return 0;
18 }//end main
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
div_t div(int num, int den);
I
Devolve o quociente e o resto da operação num/den em uma
estrutura do tipo div_t.
I
O tipo de estrutura div_t tem dois campos: int quot, rem.
int system(const char *command);
I
Passa uma string como um comando para o processador de
comandos do sistema operacional.
I
O valor retornado pela função system() é definido pela
implementação.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
stdlib.h
void *calloc(size_t num, size_t size);
I
Aloca uma quantidade de memória igual a num*size.
I
Aloca memória suficiente para um vetor de num objetos de
tamanho size.
void free(void *ptr);
I
Libera a memória alocada, tornando a memória disponível para
alocação futura.
void *malloc(size_t size);
I
Retorna um ponteiro para o primeiro byte de uma região de
memória de tamanho size que foi alocada.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
math.h
double cos(double num);
I
Retorna o coseno de num que deve estar em radianos (rad =
(PI/180)*grau).
double log(double num);
I
Retorna o logaritmo natural de um número.
double pow(double base, double exp);
I
Retorna a base elevada à potência pow(base, exp) = (baseexp).
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecasmath.h
double sin(double num);
I
Retorna o seno de num que deve estar em radianos (rad =
(PI/180)*grau).
double sqrt(double num);
I
Retorna a raiz quadrada de um número.
double tan(double num);
I
Retorna a tangente de num que deve estar em radianos (rad =
(PI/180)*grau).
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
math.h
Exemplo 02 - Eq. 2
o
Grau
Faça um programa que recebe como parâmetros os coeficientes a, b
e c de uma equação de segundo grau. Calcule e imprime as raízes
da equação, segundo a fórmula abaixo.
X
1,2 =
−b ±√b2 − 4 ∗ a ∗ c
2 ∗ a
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
math.h
Exemplo 02
1 #include<stdio.h>
2 #include<math.h>
3 int main(int argc, char *argv[]){
4 float a,b,c,delta,x1,x2;
5 if(argc == 4){
6 a = atoi(argv[1]);
7 b = atoi(argv[2]);
8 c = atoi(argv[3]);
9 printf("%fx2 + %fx + %f.\n", a,b,c);
10 delta = pow(b,2) - (4*a*c);
11 if(delta >= 0){
12 x1 = (-b+sqrt(delta))/(2*a);
13 x2 = (-b-sqrt(delta))/(2*a);
14 printf("Raizes:%f e %f.\n",x1,x2);
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
math.h
Exemplo 02 (Cont. . .)
15 }//end if(delta>=0)
16 else{
17 delta = sqrt(-delta)/(2*a);
18 x1 = -b/(2*a);
19 x2 = -b/(2*a);
20 printf("Raizes sao (%f+%fi) e (%f-%fi).\n",
21 x1, delta, x2, delta);
22 }//end else
23 }else{
24 printf("Insira os coeficientes na forma: a b c\n");
25 }//end else
26 }//end main
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
time.h
int clock(void);
I
Retorna um valor aproximado do tempo de execução do
programa que a chama.
double difftime(double t1,double t2);
I
Retorna a diferença em segundos, entre t1 e t2.
double time(double *time);
I
Retorna o horário atual do calendário do sistema.
CLOCKS_PER_SEC: contém o número de clock em um
segundo.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
time.h
Exemplo 03 - Contagem de Tempo
Faça um programa que recebe como parâmetro um tempo em
segundos. O programa deve ficar este tempo parado sem realizar
nenhuma operação.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
time.h
Exemplo 03
1 #include<stdio.h>
2 #include<time.h>
3 int main(int argc, char *argv[]){
4 double inicio, fim, dif;
5 int atraso;
6 inicio = clock();
7 fim = clock();
8 if(argc == 2){
9 atraso = abs(atoi(argv[1]));
10 if(atraso > 60){
11 atraso=60;
12 }//end if
13 printf("Aguarde \n");
14 dif = (fim - inicio) / CLOCKS_PER_SEC;
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Bibliotecas
time.h
Exemplo 03 � cont. . .
15 while(dif < atraso){
16 fim = clock();
17 dif = (fim - inicio) / CLOCKS_PER_SEC;
18 }//end while
19 }//end if
20 else{
21 printf("Sintaxe: atraso TEMPOSEGUNDOS \n");
22 }//end else
23 return 0;
24 }
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
I
A biblioteca <string.h> fornece um conjunto de funções para
manipulação de strings.
I
Estas funções são úteis, devido ao fato de que em C toda
string é um vetor de caracteres.
I
Por ser um vetor de caracteres as strings herdam uma série de
limitações pertinentes ao vetores.
I
Isto se deve ao fato de a linguagem C não suportar operações
com vetores utilizando diretamente os operadores aritméticos e
relacionais.
I
Todo programa que manipular strings deve tomar cuidado com
as seguintes limitações:
1. Strings não podem ser atribuídas com o operador de atribuição
(=), embora possam ser inicializadas.
2. Strings não podem ser comparadas com os operadores
relacionais (==,! =,>,>=,<,<=).
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
I
Vetores e ponteiros são muito usados em C e estão de certo
modo relacionados às strings.
I
Como o nome de um vetor é na verdade um ponteiro, existe
uma outra maneira de definir uma variável strings, ou seja, ela
pode ser um ponteiro para o tipo char.
I
Por exemplo:
char nome[20];
char *profissao;
I
A variável nome na primeira declaração guarda o endereço do
primeiro byte de um local na memória que pode armazenar até
19 caracteres. O último caracter é sempre null, ou seja, apenas
indica o final do nome.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
Diferença
A diferença entre definir uma variável string como vetor e uma
variável como ponteiro está na memória.
I
Definição como vetor: a memória é automaticamente
reservada, como para qualquer vetor.
I
Definição como ponteiro: não existe memória reservada.
I
Quando uma string é escrita entre aspas, o compilador cria a
string seguida por um null em algum lugar no programa
objeto.
I
Por exemplo:
char *nome="Jose Pereira";
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
char *nome="Jose Pereira";
I
Essa forma de atribuição se aplica bem à variáveis strings
definidas como ponteiros para char.
I
Para vetores, existe uma série de funções de biblioteca prontas.
I
As funções para manipulação de strings são definidas no
arquivo string.h.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
string.h
int *strlen(char *str);
I
Conta o número de caracteres armazenados em uma string,
antes do '\0'.
I
Retorna o número de caracteres da string.
I
str: a string que terá seu tamanho calculado.
char *strcpy(char *dest,const char *origem);
I
Copia o conteúdo de uma string para outra. Deve ser utilizada
para atribuição de strings, no lugar do operador de atribiução.
I
Retorna o endereço do primeiro caracter da string dest.
I
dest: string que vai receber o conteúdo.
I
origem: string cujo conteúdo será copiado.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
string.h
char *strncpy(char *dest,char *origem,int n);
I
Copia no máximo n caracteres de uma string para a outra.
I
Não coloca '\0' no final de dest, a não ser que tenha atingido
o final da string origem.
I
Retorna o endereço do primeiro caracter da string dest.
I
dest: string que receberá o conteúdo.
I
origem: string cujo contúdo será copiado.
I
n: número máximo de caracteres a ser copiado.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
string.h
char *strcmp(char *s1,char *s2);
I
Compara o conteúdo de duas strings. Esta função deve ser
utilizada em substituição aos operadores relacionais no caso de
uso com strings.
I
Retorna:
I
0 (zero) se o conteúdo das duas strings são iguais.
I
Um valor maior que 0, se o conteúdo de s1 for maior que s2.
I
Um valor menor que 0, se o conteúdo de s1 é menor que s2.
I
Maior e menor não se refere ao tamanho da string, mas a
posição, quando ordenadas de forma ascendente.
I
s1 e s2: as duas strings a serem comparadas.
ECO002 / ELT102 / ECA102 Funções de Biblioteca e Strings
Funções de Manipulação de String
string.h
char *strncmp(char *s1,char *s2,int n);
I
Compara apenas um trecho do início de duas strings com
tamanho especificado.
I
Retorna:
I
0 (zero) se o conteúdo das duas strings são iguais.
I
Um valor maior que 0, se o conteúdo de s1 for maior que s2.
I
Um valor menor que 0, se o conteúdo de s1 é menor que s2.
I
Maior e menor não se refere ao tamanho da string, mas a
posição, quando

Continue navegando