Introdução à Linguagem C

Propaganda
Engenharia de
CONTROLE e
AUTOMAÇÃO
Introdução à Linguagem C
Aula 03
DPEE 1038 – Estrutura de Dados para Automação
Curso de Engenharia de Controle e Automação
Universidade Federal de Santa Maria
Prof. Rafael Concatto Beltrame
[email protected]
1/5
Sumário
•
Matrizes
– Unidimensional (vetor)
– Multidimensional
– Limites de matrizes
•
Manipulação de strings
– gets( ); puts( ); strcat( ); strcpy (); strcmp( );
•
Ponteiros
– Declaração e manipulação
•
Funções
– Funções sem retorno e com retorno de dados
– Chamada por referência (ponteiros)
•
Classe de variáveis
Prof. Rafael Concatto Beltrame
2
1/5
Matrizes
•
Matriz Unidimensional (Vetor)
tipo nome[tamanho]
– As matrizes empregam o índice 0 para o primeiro elemento
– Os índices de uma matriz de 10 elementos variam, então, de 0 a 9
– Exemplo
main()
{
int t, x[10];
for(t=0; t<=9; t++)
}
Prof. Rafael Concatto Beltrame
{ x[t]=t + 10; }
3
1/5
Matrizes
•
Matriz Multidimensional
tipo nome[tamanho][tamanho]...
– Funciona como uma “pilha” de vetores
– Exemplo
main()
{
int t, p=0, x[10][10];
for(t=0; t<=9; t++, p++) {
x[t][p]=t*p;
printf("%d \n", x[t][p]);
}
}
Prof. Rafael Concatto Beltrame
4
1/5
Matrizes
•
Limites de Matrizes
– A verificação de limites não é realizada automaticamente em C
– Não são emitidas mensagens de alerta
– O programa deve testar os limites de modo correto
main()
{
int i, erro[10];
// Cuidado! Uso indevido da memória
for(i=0; i<100; i++) {
erro[i]=1;
printf("%d \n", erro[i]);
}
}
Prof. Rafael Concatto Beltrame
5
1/5
Manipulação de Strings
•
Em C não existe um tipo de dado “string”
– Usa‐se, então, uma matriz de characteres “char”
– Uma string é uma matriz do tipo char que termina com ‘\0’
• O ‘\0’ é colocado pelo compilador
• Deve conter uma posição a mais que o nº de caracteres desejado
main()
{
static re[]="engenharia";
puts(re);
// Escreve na tela
puts(&re[0]);
// Endereço inicial
putchar('\n');
// Quabra linha
}
Prof. Rafael Concatto Beltrame
6
1/5
Manipulação de Strings
• gets( )
gets(nome_matriz);
– Utilizada para a leitura de uma string após o ENTER
– Não testa limites da matriz!
main()
{
char str[80];
gets(str);
// Lê e salva em "str"
printf("%s", str);
}
Prof. Rafael Concatto Beltrame
7
1/5
Manipulação de Strings
• puts( )
puts(nome_vetor_caracteres);
– Escreve seu argumento do dispositivo de saída (tela)
– Coloca um ‘\n’ ao final
– Reconhece os códigos de barra invertida
main()
{
char str[80];
gets(str);
// Lê e salva em "str"
puts(str);
// Escreve na tela
}
Prof. Rafael Concatto Beltrame
8
1/5
Manipulação de Strings
• strcpy( )
strcpy(destino, origem);
– Copia o conteúdo de uma string (origem) e salva na string destino
– “origem” pode ser uma “string explícita”
main()
{
char str[80];
strcpy(str, "alo"); // Copia "alo"
puts(str);
}
Prof. Rafael Concatto Beltrame
9
1/5
Manipulação de Strings
• strcat( )
strcat(string_1, string_2);
– Concatena (une) duas strings
– Salva o resultado em “string_1”
main()
{
char str1[20], str2[10];
strcpy(str1, "bom"); // Dimensão 20
strcpy(str2, " dia"); // Dimensão 10
strcat(str1, str2);
// Concatenação
printf("%s \n", str1);
}
Prof. Rafael Concatto Beltrame
10
1/5
Manipulação de Strings
• strcmp( )
strcmp(string_1, string_2);
– Compara duas strings. Se forem iguais, retorna 0
main()
{
char senha[80];
printf("Digite a senha: ");
gets(senha);
if ( strcmp(senha, "engenharia") )
printf("Senha inválida \n");
else
printf("Senha correta! \n");
}
Prof. Rafael Concatto Beltrame
11
1/5
Ponteiros
•
Sintaxe
tipo *nome_variavel;
– É uma variável que conterá o endereço de outra variável
– Úteis em alocação dinâmica de dados (a partir do endereço inicial)
– Maneira pela qual as funções podem modificar argumentos
•
Declaração
int x, *pnt_x;
pnt_x = &x;
– Se uma variável irá conter um ponteiro, ela deve ser explicitamente declarada como tal
Prof. Rafael Concatto Beltrame
12
1/5
Ponteiros
•
Observação
// Notar que
y = x;
// É a mesma coisa que
y = *pnt_x;
Prof. Rafael Concatto Beltrame
13
1/5
Ponteiros
•
Manipulação de ponteiros
– Podem ser manipulados como qualquer variável
– Exemplos
main()
{
int x,*pnt_x,*pnt_y;
// Declarações
x=9;
// Atribuições
pnt_x=&x;
pnt_y=pnt_x;
printf("x=%d \n", x);
// Val.
printf("&x=%d \n", &x);
// End.
printf("pnt_x=%d \n", pnt_x);
// End.
printf("*pnt_x=%d \n", *pnt_x); // Val.
}
Prof. Rafael Concatto Beltrame
x
x
x
x
14
1/5
Funções
•
Características
– É uma unidade autônoma de código do programa
– É projetada para cumprir uma tarefa particular
– Geralmente os programas em C consistem em várias pequenas funções
– A declaração do tipo da função é obrigatória no C
– Os parâmetros de recepção de valores são separados por vírgulas
•
Sintaxe
tipo nome_funcao(parametro1, parametro2, etc)
{
comandos;
}
Prof. Rafael Concatto Beltrame
15
1/5
Funções
•
Função sem retorno
– Quando uma função não retorna valor, ela é declarada como void
void fc_inverso(a)
// Função inverso
// Declaração
float a;
{
printf("Resultado = %f \n", 1/a);
}
//----------------------------------------//
main()
// Função main
{
float x;
fc_inverso(x); ...
}
Prof. Rafael Concatto Beltrame
16
1/5
Funções
•
Função com retorno
– Quando uma função retorna valor. Declarar seu tipo
float fc_inverso(a)
// Função inverso
// Declaração
float a;
{
return(1/a);
// Dado retornado
}
//----------------------------------------//
main()
// Função main
{
float x, z;
z = fc_inverso(x); ...
}
Prof. Rafael Concatto Beltrame
17
1/5
Funções
•
Chamada por referência (emprego de ponteiros)
– Quando uma função altera variáveis externas a ela
void fc_inverso(a)
// Função inverso
float *a;
// Declaração
{
*a = 1/(*a);
// Dado alterado
}
//----------------------------------------//
main()
// Função main
{
float x;
fc_inverso(&x)
printf("O valor inversor é %f", x); ...
}
Prof. Rafael Concatto Beltrame
18
1/5
Classe de Variáveis
•
Considerações
– Uma função pode chamar outras funções
•
•
•
O código que compreende o corpo de uma função ( bloco { } ) está oculto
ao restante do programa
Não pode afetar nem ser afetado por outras partes do programa
Variáveis locais
– São declaradas dentro de uma função
– Existem apenas localmente (na função) e são armazenadas na pilha
main()
{
float x;
...
}
Prof. Rafael Concatto Beltrame
// Variável local
19
1/5
Classe de Variáveis
•
Variáveis globais
– São declaradas fora de uma função
– São conhecidas por todo o programa
– São armazenadas em uma região fixa da memória
int cont;
void function_1()
{ ... }
// Variável global
// Todas as funções tem
// acesso à “int”
void function_2()
{ ... }
main()
{ ... }
Prof. Rafael Concatto Beltrame
20
1/5
Revisão
•
Matrizes
– Vetores e matriz multidimensional
– Verificar os limites!
•
Manipulação de strings
– gets( ); puts( ); strcat( ); strcpy (); strcmp( );
•
Ponteiros
– “Aponta” para um endereço de memória
– Usados para acessar o conteúdo de variáveis de outras funções
•
Funções
– Funções sem retorno (void) e com retorno de dados (tipo)
•
Classe de variáveis
– Locais e globais
Prof. Rafael Concatto Beltrame
21
Download