Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Técnicas de
Programação de
Computadores I
Mecatrônica Industrial
Prof. MSc Diego R. Moraes
diegorafaelmoraes@gmail.com
• Conceitos
– Computador
– Programas
– Linguagem
– Linguagem de programação
– Algoritmo
2
1.1. Introdução: Conceitos
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 3
1.1. Introdução: Conceitos
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 4
1.1. Introdução: Conceitos
O que é linguagem?
Qual o objetivo?
• Estabelecer uma comunicação
• Troca de informações
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 5
1.1. Introdução: Conceitos
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 6
1.1. Introdução: Conceitos
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 7
1.1. Introdução: Conceitos
O que é algoritmo?
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 8
1.1. Introdução: Conceitos
O que é algoritmo?
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 9
Exercício (7 minutos)
– Dicas:
• analogia a receita de bolo
• passo-a-passo
10
SLIDE DO PROFESSOR
Algoritmo para troca de pneu do carro:
• Pobre em detalhes
1) Pare o carro
2) Peque o pneu reserva
3) Remova o pneu furado
4) Troque pelo pneu reserva
5) Ligue o carro
11
SLIDE DO PROFESSOR
Algoritmo para troca de pneu do carro:
• Exagerado em detalhes
13
Agenda da aula
• Programa
• Paradigma
• Paradigma de Programação
– Estruturado
– Imperativo
– Funcional
– Orientado a eventos
– Orientado a objetos
14
1.1. Introdução: Conceitos
O que é programa?
O que é paradigma?
• Significa modelo ou padrão
• Exemplo a ser seguido em uma situação
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 16
Mudar paradigmas é difícil
C - 436
17
1.1. Introdução: Conceitos
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 18
1.1. Introdução: Conceitos
• Paradigmas de programação
– Diferentes formas de
• organizar/estruturar um programa
• Estruturado
– Objetivo:
• Códigos claros e simples
20
1.1. Introdução: paradigmas
• Imperativo
– Objetivo:
• Ação/comando altera o estado do programa
21
1.1. Introdução: paradigmas
• Funcional
– Objetivo:
• Evitar os estados
• Uso mais acadêmico, mas permite comercial
• Orientado a eventos
– Objetivo:
• Executar uma tarefa após ocorrer uma
interação do usuário (teclado, mouse etc)
• Orientado a objetos
– Objetivo:
• Reutilização de código
• Herança, polimorfismo etc
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 25
Como colocar uma girafa na
geladeira
Duração:
26
Agenda da aula
• Histórico do computador
– Pascalina
– Máquina Analítica
– ENIAC
27
1.1. Introdução: Conceitos
Histórico:
1.2. Evolução das linguagens
de programação
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 28
1.2. Histórico: Pascalina
• 1642: Contador Mecânico de Blaise Pascal
http://delta.cs.cinvestav.mx
Evolução do ábaco; Contador mecânico; Adição e subtração
29
1.2. Histórico: Máquina analítica
http://helmutsy.homestead.com
• 1823: Máquina analítica de Charles Babbage
Lady Ada Lovelace
http://www.dma.eui.upm.es
Computador mecânico “moderno” de uso geral
30
1.2. Histórico: ENIAC
32
http://www.techguru.com.br
História do computador em
minutos
C - 1940
33
Agenda da aula
• Fundamentos da Linguagem C
– Ambiente de Desenvolvimento
– Variáveis e Tipos de Dados
34
5.1. Programação Estruturada
http://en.hdyo.org
• Tem como principal características:
• clareza e qualidade do código
• Modularização a partir do uso de
procedimentos ou funções
http://blog.hostdime.com.br
• Roda em todos SO’s (original para Unix)
• Aplicações comerciais e acadêmicas
36
5.2.1. IDE
• Integrated Development Environment ou
Ambiente de Desenvolvimento Integrado
– É um conjunto de ferramentas para
• codificação, depuração e testes de programas
• Exemplos:
– Code::Blocks: C e C++, gratuito
– Dev-C++: C e C++, gratuito
– Microsoft Visual Studio: C, C++, VB .NET, C#
• versão gratuita (Express) ou paga (Enterprise)
37
5.2.1. IDE
• Exemplos:
– Code::Blocks: C e C++, gratuito
38
5.2.1. IDE
• Exemplos:
– Dev-C++: C e C++, gratuito
39
5.2.1. IDE
• Exemplos:
– Microsoft Visual Studio: C, C++, VB .NET, C#
40
5.2.1. Linguagem C é ‘Case Sensitive’
O que é case sensitive?
• É a diferenciação de caracteres
http://en.hdyo.org
maiúsculos e minúsculos
42
5.2.2. Variáveis e Tipos de Dados
• int:
– Para inteiros de 4 bytes (+, - ou 0)
– Com sinal (-2.147.483.648 a +2.147.483.647)
– Sem sinal (0 a 4.294.967.295)
• char:
– Para caractere de 1 byte (‘a’, ‘5’, ‘$’)
– Com sinal (-128 a +127)
– Sem sinal (0 a 255)
• double:
– números reais de 8 bytes com precisão de 10
casas decimais (pi = 3,141592653589793)
– Faixa de Valores: +/- 1,7 E (+/- 308)
• Declaração de variáveis
SINTAXE:
EXEMPLO:
tipo_dado nome_variavel;
• Regras, não é permitido: int x;
– acentos (opcão) char opcao;
– espaços (media final) float soma;
– iniciar por nº (1valor) double media;
– especiais (tot@i$)
46
5.2.2. Variáveis e Tipos de Dados
unid5_exemplo02.c – Código 1
47
5.2.2. Variáveis e Tipos de Dados
48
5.2.2. Variáveis e Tipos de Dados
49
5.2.2. Variáveis e Tipos de Dados
unid5_exemplo03.c – Código 2
50
5.2.2. Variáveis e Tipos de Dados
51
Exercício 1/2
Afirmações (certas/erradas) sobre declaração de variáveis:
I) char sexo
II) int 2nota
III) float Valor
IV) double valor
Qual alternativa abaixo apresenta afirmações erradas
sobre declaração de variáveis?
a) Apenas II
b) Apenas III
c) Apenas IV
d) Apenas II e III
e) Apenas III e IV
52
Resposta 1/2
Afirmações (certas/erradas) sobre declaração de variáveis:
I) char sexo correto
II) int 2nota errado
III) float Valor correto (case sensitive)
IV) double valor correto (case sensitive)
Qual alternativa abaixo apresenta afirmações erradas
sobre declaração de variáveis?
a) Apenas II
b) Apenas III
c) Apenas IV
d) Apenas II e III
e) Apenas III e IV 53
Exercício 2/2
Um desenvolvedor precisa escrever um programa em
linguagem de programação C para cadastro de pacientes de
um consultório de dentista. Ao realizar o levantamento de
requisitos, o desenvolvedor identificou todas informações
essenciais para serem armazenadas no programa.
No momento em que estava projetando o programa, precisou
converter essas informações para variáveis:
código do paciente, sexo e idade.
Na fase de implementação, ao declarar tais variáveis, quais os
tipos de variáveis devem ser definidas, respectivamente?
a) int, string, int
b) float, char, int
c) int, char, int
d) float, string, int
e) int, int, int
54
Resposta 2/2
Um desenvolvedor precisa escrever um programa em
linguagem de programação C para cadastro de pacientes de
um consultório de dentista. Ao realizar o levantamento de
requisitos, o desenvolvedor identificou todas informações
essenciais para serem armazenadas no programa.
No momento em que estava projetando o programa, precisou
converter essas informações para variáveis:
código do paciente, sexo e idade.
Na fase de implementação, ao declarar tais variáveis, quais os
tipos de variáveis devem ser definidas, respectivamente?
a) int, string, int
b) float, char, int
c) int, char, int
d) float, string, int
e) int, int, int
55
Agenda da aula
• Fundamentos da Linguagem C
– Comandos de Entrada e Saída
– Operadores e Expressões
– Estruturas Condicionais
– Estruturas de Repetição
– Modularização
56
5.2.3. Comandos de Entrada e Saída
Especificador %i %c %f %lf
Tipo de Dado int char float double
57
5.2.3. Comandos de Entrada e Saída
• Comando de Saída: printf
SINTAXE:
printf (“Texto: %especificador”, variável );
EXEMPLOS
scanf (“%i”, &idade);
58
5.2.3. Comandos de Entrada e Saída
unid5_exemplo04.c – Código 3 – Soma 2 valores
59
5.2.3. Comandos de Entrada e Saída
60
5.2.3 – Comandos de Entrada Saída
CARACTERE SIGNIFICADO
\a aviso sonoro
\b retrocesso
http://homepages.dcc.ufmg.br
\f avanço de formulário
\n nova linha
retorno do carro (sem
\r
alimentação de linha)
\t tabulação horizontal
\v tabulação vertical
\\ caractere de barra invertida
\' apóstrofe
\" aspas
\? interrogação
\nnn valor ASCII em octal
\xnnn valor ASCII em hexadecimal
61
5.2.3 – Comandos de Entrada Saída
ESPECIFICADOR VALOR
%o inteiro em formato octal
%x
inteiro em formato hexadecimal
http://homepages.dcc.ufmg.br
%X
%ui unsigned int
%ld long int
%e
float em formato exponencial
%E
%g float. C escolhe melhor maneira de
%G exibição entre normal e exponencial
%s string
%p endereço de um ponteiro
quantos caracteres a função printf
%n exibiu
62
5.2.3 – Comandos de Entrada Saída
SINTAXE EFEITO
exibe valor com um mínimo de 5
printf (" %5d ",valor);
http://homepages.dcc.ufmg.br
caracteres
exibe valor com um mínimo de 5
printf(" %05d ",valor); caracteres precedendo-o com
zeros
exibe um valor octal precedido
#%o
de 0 (zero)
exibe um valor hexadecimal
#%x
precedido de 0x
Lembrando:
SINTAXE:
scanf ( “%especificador”, &variável );
printf (“Texto: %especificador”, variável );
Especificador %i %c %f %lf
Tipo de Dado int char float double
64
Resposta 1/2
65
5.2.4. Operadores e Expressões
• Operadores Aritméticos: soma (+), subtração (-),
multiplicação (*), divisão (/) e módulo (% é o resto da divisão)
66
Aviso do Amigo!
Para operações
relacionais e
condicionais em C,
o resultado é
sempre 0 ou 1!
Importante:
Porque não existe tipo de dado booleano em C
67
5.3. Estruturas Condicionais: if
if (equivalente ao ‘se’ no VisuAlg)
SINTAXE:
if (condicao)
{
comandos;
}
else if (condicao)
{
comandos;
}
else
{
comandos;
}
68
5.3. Estruturas Condicionais: switch
switch (equivalente ao ‘escolha’ no VisuAlg)
SINTAXE:
switch (variavel)
{
case 1:
comandos;
break;
case 2:
comandos;
break;
default:
comandos;
}
69
Exercício 2/2
Qual a saída do código abaixo?
Para num abaixo:
a) num=9 b) num=12 c) num=0 d) num= -10
if( num % 2 == 0 )
printf( “Resultado: %d”, num / 2 );
else
printf( “Resultado: %d”, num % 2 );
70
Resposta 2/2
Qual a saída do código abaixo?
Para num abaixo:
a) num=9 b) num=12 c) num=0 d) num= -10
if( num % 2 == 0 )
printf( “Resultado: %d”, num / 2 );
else
printf( “Resultado: %d”, num % 2 );
EXEMPLO: tabuada do 10
for ( i = 1; i <= 10; i++ ) //num=10
{
printf( “%i x %i = %i \n”, i, num, (i*num));
}
72
5.4. Estruturas de Repetição: while
while (equivalente ao ‘Enquanto’ no VisuAlg)
SINTAXE:
while (condição)
{
comandos;
}
EXEMPLO: tabuada do 10
EXEMPLO: tabuada do 10
do //num=10 e i=1
{
printf( “%i x %i = %i \n”, i, num, (i*num));
i++;
} while (i <= 10);
74
5.5. Modularização
• Serve para:
–organizar o código-fonte
–facilitar a manutenção
–reutilizar código
75
5.5. Modularização: sintaxe de função
Toda a função deve ter Os argumentos
um tipo (char, int), o (parâmetros) indicam
qual indicará o tipo de o tipo e quais valores
valor de retorno serão enviados para
serem manipulados
//corpo da função
return valor_de_retorno;
}
76
5.5. Modularização: ex. 1 de Função
void message()
{
printf(“Hello World”);
}
79
Agenda
• Matriz unidimensional à vetor
– Definição
– Declaração
– Atribuição
– Leitura
– Exibição
80
Estruturas: Variável
http://en.hdyo.org/assets/ask-question-2-ce96e3e01c85a38a0d39c61cfae6d42c.jpg 81
Vetor
idade1 = 22;
idade2 = 30;
idade3 = 17;
idade4 = 40;
idade5 = 55;
SINTAXE:
tipo VETOR[tamanho];
ONDE:
VETOR à nome do vetor
tamanho à tamanho do vetor
84
Vetor: declaração
• Como declarar um vetor? Precisa de:
– Nome, tamanho e tipo
EXEMPLO:
int vet_IDADE[5];
85
Vetor
Declaração
Linguagem C
tipo nomeDoVetor[tamanhoDoVetor];
Linguagem C
/* Vetor para guardar 10 notas */
86
Vetor
Declaração
Linguagem C
tipo nomeDoVetor[tamanhoDoVetor];
Linguagem C
/* Vetor para guardar 10 notas */
float notas[10];
/* Vetor para guardar o sexo de 50 pessoas */
char sexo[50];
/* Vetor para armazenar o valor do salario de 100 funcionários */
float salario[100];
/* Vetor para armazenar 1 nome com 30 caracteres */
char nome[30];
87
Vetor: atribuição
• Como atribuir um valor a um vetor?
SINTAXE:
nome_vetor[indice] = valor;
88
Vetor: atribuição
• Como atribuir um valor a um vetor?
Exemplo:
vet_IDADE[5] = 55;
89
Vetor
Atribuição
Linguagem C
nomeDoVetor[posição] = valor;
Linguagem C
/* Atribuir o valor 20 para a posição 2 do vetor notas */
90
Vetor
Atribuição
Linguagem C
nomeDoVetor[posição] = valor;
Linguagem C
/* Atribuir o valor 20 para a posição 2 do vetor notas */
notas[2] = 20;
/* Atribuir o valor F na primeira posição do vetor */
sexo[0] = ‘F’;
/* Atribuir o valor 12.23 na posição 3 do vetor vreais */
vreais [3] = 12.23;
91
Vetor: leitura
• Como receber um valor do usuário num vetor?
SINTAXE:
scanf(”%espec”,&nome_vetor[indice]);
92
Vetor: leitura
• Como receber um valor do usuário num vetor?
Exemplo:
scanf(”%d”,vet_IDADE[5]);
93
Exercício (5 minutos)
94
Vetor
Leitura de dados
Linguagem C
int vet[8];
printf("Digite 1o elemento: /n”);
scanf(”%d”,&vet[0]);
printf("Digite 2o elemento: /n”);
scanf(”%d”,&vet[1]);
printf("Digite 3o elemento: /n”);
scanf(”%d”,&vet[2]);
printf("Digite 4o elemento: /n”);
scanf(”%d”,&vet[3]);
printf("Digite 5o elemento: /n”);
scanf(”%d”,&vet[4]);
printf("Digite 6o elemento: /n”);
scanf(”%d”,&vet[5]);
printf("Digite 7o elemento: /n”);
scanf(”%d”,&vet[6]);
printf("Digite 8o elemento: /n”);
scanf(”%d”,&vet[7]);
95
Vetor
Leitura de dados
Linguagem C
int i;
int vet[8];
96
Vetor: exibição
• Como exibir um valor de um vetor?
SINTAXE:
printf(nome_vetor[indice]);
97
Vetor: exibição
• Como exibir um valor de um vetor?
EXEMPLO:
printf(vet_IDADE[5]);
98
Exercício (5 minutos)
– Faça um algoritmo em Linguagem Cpara:
Imprimir um vetor de tamanho 8 automaticamente:
1) vetor coluna
2) vetor linha
99
Vetor
Exibição
Linguagem C Linguagem C
Em coluna Em linha
int i; int i;
int vet[8]; int vet[8];
100
Agenda
• Matriz bidimensional
– Definição
– Declaração
– Atribuição
– Leitura
– Exibição
101
Matriz
• A matriz é uma variável composta, pois é formado por
um número finito de variáveis
• E homogêneo porque essas variáveis são de um
mesmo tipo de dado (inteiro, real, caracter ou lógico)
• É bidimensional, pois possui 2 dimensões
• Seus elementos são acessados por 2 índices
102
Matriz
Quero fazer um programa para controlar a notas
dos alunos, preciso registrar quatro notas diferentes
mais a frequência, tenho ao todo 60 alunos!
Vetor Notas 1
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 2
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 3
A1 A2 A3 A4 ..... A59 A60
Vetor Notas 4
A1 A2 A3 A4 ..... A59 A60
Vetor Faltas
A1 A2 A3 A4 ..... A59 A60
103
Matriz
• 5 vetores?
SINTAXE:
tipo MATRIZ[tam_linha][tam_coluna];
ONDE:
MATRIZ à nome da matriz
tam_linha à quantidade de linhas
tam_coluna à quantidade de colunas
105
Matriz: declaração
• Como declarar uma matriz? Precisa de:
– Nome, tamanho e tipo
EXEMPLO:
int mat_IDADE[5][5];
106
Matriz Declaração
Linguagem C
Exemplos de uso
/* declara uma matriz para guardar 3 informações diferente de 300 paciente */
107
Matriz Declaração
Linguagem C
Exemplos de uso
/* declara uma matriz para guardar 3 informações diferente de 300 paciente */
float pacientes[300] [3];
/* declara uma matriz de 4 notas para 100 alunos */
float notas[100] [4];
108
Matriz: atribuição
• Como atribuir um valor a uma matriz?
SINTAXE:
nome_matriz[LINHA][COLUNA] = valor;
109
Matriz: atribuição
• Como atribuir um valor a uma matriz?
Exemplo:
mat_IDADE[5][3] = 20;
110
Matriz: Atribuição
Linguagem C
tipo nomeDaMatriz[posiçãoLinha] [posiçãoColuna] = ValorDesejado;
Linguagem C
/* atribuir o valor 13 à primeira posição da primeira linha */
111
Matriz: Atribuição
Linguagem C
tipo nomeDaMatriz[posiçãoLinha] [posiçãoColuna] = ValorDesejado;
Linguagem C
/* atribuir o valor 13 à primeira posição da primeira linha */
112
Matriz: leitura
• Como receber um valor do usuário numa matriz?
SINTAXE:
scanf(”%espec”,&nome_matriz[LINHA][COLUNA]);
113
Matriz: leitura
• Como receber um valor do usuário numa matriz?
Exemplo:
scanf(”%d”,&mat_IDADE[8][4]);
114
Matriz: exibição
• Como exibir um valor de uma matriz?
SINTAXE:
printf(nome_matriz[LINHA][COLUNA]);
115
Matriz: exibição
• Como exibir um valor de uma matriz?
EXEMPLO:
printf(mat_IDADE[8][4]);
116
1) Só existem matrizes Unidimensionais e
Bidimensionais?
R:
117
1) Só existem matrizes Unidimensionais e
Bidimensionais?
R: Não
118
Laboratório e
Técnicas de
Programação de
Computadores I
FIM
Prof. MSc Diego R. Moraes
diegorafaelmoraes@gmail.com