Buscar

Introdução à Programação em C

Prévia do material em texto

Programação em C
PRC
Parte 01 - Pseudocódigo
Prof. Victor Thomaz
www.sites.google.com/site/professorvictorthomaz/materialprc
O Computador
• Máquina que manipula dados de acordo com 
um conjunto de instruções
• Os primeiros foram desenvolvidos em 1940-
1945. Ocupavam grandes áreas devidos ao seu 
tamanho físico.
O Computador
• Os computadores modernos são baseados em 
Circuitos Integrados (CI) tornando-os rápidos e 
de tamanho reduzido.
• Um CI é formado por inúmeros transístores 
combinados
• Lei de Moore: “O número de transístores em 
um CI dobraria a cada dois anos”
O Computador
• O computador digital pode ser dividido em 2 
partes: Hardware e Software
• Hardware -> Parte eletrônica e mecânica
– Unidades de armazenamento
– Unidades de entrada 
– Unidades de saída
– Unidades de processamento
Partes do Computador
• Um programa é uma entrada do HDD(1) executada na 
memória RAM(2). Os dados vindos do teclado(3) também são 
armazenados na memória RAM(4). O CPU opera sobre o 
programa e dados na RAM(5) e retorna o resultado para o 
HDD(6) e também para o Monitor(7).
• Isto é tudo controlado pelo CPU exigindo “apenas” instruções 
de um programador.
Partes do Computador
• Software
– Consiste em programas carregados das unidades 
de processamento.
– Os programas são executados sobre o hardware
– Exemplos: 
• Sistemas Operacionais
• Programas de aplicações
• Compiladores
• Etc.
Compiladores
• Compiladores traduzem declarações escritas 
em um software através de linguagens de 
programação em alto nível em uma linguagem 
de baixo nível (Chamada código de máquina).
• Os compiladores estão associados a uma 
linguagem. Existem compiladores para 
linguagens: Fortran, C, C++, Java, Pascal, Basic, 
Cobol....
Introdução a programação
• Programação de computadores é o processo de:
– Escrever
– Testar / Debugar (Encontrar o erro e corrigir)
– Dar manutenção
no código fonte de programas.
• O código fonte está escrito em uma linguagem 
de programação.
Código Fonte
#include <stdio.h>
int main(){
printf(“Código Fonte em C”);
return 0;
}
Algoritmo
• É um conjunto de regras para solucionar um 
problema em um número finito de passos
• Um algoritmo frequentemente possui 
repetições, decisões, expressões
Algoritmo
• Um algoritmo:
– Possui um ponto de entrada (passo inicial) e um 
ponto de saída (passo final)
– Os passos são bem definidos, seu resultado é 
previsível. Repetidas execuções do mesmo passo 
produzirão sempre o mesmo resultado
– Existe uma ordem de execução, uma sequência 
adequada. É fundamental para o resultado final 
correto. Um passo é executado e logo depois o 
seguinte
Algoritmo
• Um algoritmo:
– Executa um número de passos finito
– Ao final, produz o resultado esperado , quando 
executado com um conjunto de dados válidos
Algoritmo
• Qualquer algoritmo de computador pode ser 
construído com três tipos de estruturas:
– Sequência: Passos executados um após o outro, 
salvo outra indicação
– Decisão: Escolhe entre a execução de uma ou 
outra instrução ou conjunto de instruções
– Repetição: Forma de executar novamente uma 
instrução ou conjunto de instruções
• Estas estruturas estão relacionadas com o 
controle de execução
Algoritmo
• A representação do algoritmo também deve 
permitir: 
– Inserir dados e receber resultados (Ler e escrever 
valores)
– Realizar as 4 operações aritméticas básicas
– Fornecer forma de armazenar dados em variáveis 
através da atribuição de valores
• Estes são os conceitos básicos (outras 
características estão incluídas nas linguagens 
de programação, porém isto é tudo o que 
você precisa saber no momento)
Fluxograma
• Representação gráfica de um algoritmo 
composto por três passos:
Fluxograma
• Símbolos mais utilizados:
Fluxograma
• Decisão condicional:
Fluxograma
• Repetição:
Pseudocódigo
• Forma de representar um algoritmo de modo 
informal (em comparação as linguagens de 
programação)
• No entanto, dado um algoritmo escrito em 
pseudocódigo, dois programadores distintos 
devem ser capazes de escrever dois 
programas funcionalmente equivalentes
Pseudocódigo
• Decisão condicional:
se (Condição for Verdadeira) então
Instrução/Passo/Comando 1
Instrução/Passo/Comando 2
Instrução/Passo/Comando 3
...
fim se
Pseudocódigo
• Mais de uma decisão condicional em sequência:
se (Condição X for Verdadeira) então
Instrução/Passo/Comando 1
Instrução/Passo/Comando 2
Instrução/Passo/Comando 3
...
fim se
se (Condição Y for Verdadeira) então
Instrução/Passo/Comando A
Instrução/Passo/Comando B
Instrução/Passo/Comando C
...
fim se
Pseudocódigo
• Decisão condicional com SE e SENÃO:
se (Condição Y for Verdadeira) então
Instrução/Passo/Comando A
Instrução/Passo/Comando B
Instrução/Passo/Comando C
...
senão
Instrução/Passo/Comando 1
Instrução/Passo/Comando 2
...
fim se
Pseudocódigo
• Decisão condicional aninhada:
se (Condição Y for Verdadeira) então
Instrução/Passo/Comando A
se (Condição Z for Verdadeira) então
Instrução/Passo/Comando B
Instrução/Passo/Comando C
se (Condição W for Verdadeira) então
Instrução/Passo/Comando H
fim se
fim se
...
senão
Instrução/Passo/Comando 1
Instrução/Passo/Comando 2
...
fim se
Pseudocódigo
algoritmo
declare numérico DISTKM, INDICACAOTANQUE
escreva “Digite a distância em KM”
leia DISTKM
se DISTKM > 200 então
escreva “Encha o tanque”
senão
escreva “Digite a indicação do tanque”
leia INDICACAOTANQUE
se INDICACAOTANQUE < ½ então
escreva “Abasteça até ½ tanque”
fim se
fim se
fim algoritmo
Pseudocódigo
• Repetição:
repita (Enquanto Condição for Verdadeira)
Instrução/Passo/Comando 1
Instrução/Passo/Comando 2
Instrução/Passo/Comando 3
...
fim repita
Pseudocódigo
algoritmo
declare inteiro NUM
escreva “Digite um número:”
leia NUM
repita NUM<= 10
escreva “O número digitado foi:”, NUM
escreva “Digite outro número:”
leia NUM
fim repita
escreva “Você digitou um número maior que 10”
fim algoritmo
Pseudocódigo
algoritmo
declare inteiro CONT
CONT � 0
repita CONT<= 30
escreva “Valor do contador:”, CONT
CONT � CONT + 1
fim repita
fim algoritmo
Exercício 1
• Faça o fluxograma que calcule a área de um 
circulo a partir da medida do raio informado 
pelo usuário. Área = pi (3,14) X raio X raio
• Escreva o pseudocódigo do exercício acima
Exercício 2
• Faça o fluxograma que responda se um 
determinado número digitado pelo usuário é 
ZERO, POSITIVO ou NEGATIVO
• Escreva o pseudocódigo do exercício acima
Palavras Reservadas
• algoritmo fim algoritmo
• declare
• se senão então fim se
• repita fim repita
• leia escreva
• ...
Fazem parte da gramática da linguagem. Existe um conjunto de princípios que 
regem o funcionamento e orientam como as palavras podem ser combinadas 
Tipos de Dados
• Computador manipula informações
• Em geral um programa precisa manipular 
vários tipos de dados
• Internamente o computador só trabalha com 
números
Tipos de Dados
• Inicialmente vamos trabalhar com 4 tipos de 
dados:
Tipos de Dados
• inteiro: variáveis numéricas do tipo inteiro, ou 
seja, sem casas decimais
• real: variáveis numéricas do tipo real, ou seja, 
com casas decimais
• caractere: variáveis do tipo string, ou seja, 
cadeia de caracteres
• lógico: aplicado a variáveis do tipo booleano. 
Assumem apenas dois valores: VERDADEIRO 
ou FALSO
Armazenando Dados
• As informações manipuladas pelo computador 
precisam estar armazenadas de alguma forma 
para:
– Consulta 
– Utilização em operações posteriores
• Calcular a médiadas notas dos alunos: É 
preciso armazenar os dados para gerar o 
resultado
• Solução: Utilizar variáveis
Variáveis
• São utilizadas para armazenar algum valor
• Cada variável armazena um tipo de dado
• Representam uma posição na memória (Disco 
rígido, memória RAM, etc)
• Os dados somente podem ser manipulados 
em tempo de execução
Variáveis - Declaração
• Utilize a seguinte sintaxe:
– declare <tipo de dado> <nome da variável>
• Exemplo:
– declare real nota
– declare real nota1, nota2, nota3 
Variáveis - Declaração
• Variáveis: matricula, nome, idade, 
casado
–declare inteiro matricula, idade
–declare caractere nome
–declare lógico casado
Variáveis
• Sempre é necessário declarar a variável antes 
de utilizá-la
• A ação de armazenar um dado na variável é 
chamada de atribuição
– nome � “Fulano da Silva”
– nota � 6.7
– casado � FALSO
Variáveis
• Após a declaração da variável e antes de 
utilizá-la em uma operação é aconselhável 
inicializá-la. Ou seja, atribuir um valor inicial 
que não interfira na operação que será 
executada. Esta prática evita que o lixo de 
memória, que pode estar dentro da variável, 
produza resultados “estranhos”.
• Exemplo: 
declare inteiro contador
contador � 0
contador � contador + 1
Saída de Dados
• Para imprimir alguma informação na tela para 
o usuário utilizaremos:
escreva “Olá usuário”
• Outro exemplo:
algoritmo
escreva “Fulano da Silva”
escreva “Aluno IST FAETERJ”
fim algoritmo
Saída de Dados
algoritmo
declare inteiro idade
idade � 21
escreva idade
fim algoritmo
• O que aparecerá na tela para o usuário?
Entrada de Dados
• Para receber algum dado digitado pelo 
usuário utilizaremos:
leia idade
• Considerando no exemplo acima que existe 
uma variável denominada idade, o valor 
digitado pelo usuário será atribuído a variável 
idade.
Entrada de Dados
algoritmo
declare caractere nome, rua
escreve “Informe o seu nome”
leia nome
escreve “Informe o nome da rua”
leia rua
escreva “O aluno ”, nome, “reside na rua ”, rua
fim algoritmo
Exercícios
• Crie um algoritmo em pseudocódigo que 
solicite ao usuário nome, sobrenome, 
matrícula, curso e ao final apresente estas 
informações na tela.
• Crie um algoritmo em pseudocódigo com duas 
variáveis do tipo real. Armazene duas notas 
referentes a provas feitas por um aluno e 
mostre as notas na tela. Obs.: use atribuição, 
não é necessário ler o valor digitado pelo 
usuário.
Operadores Aritméticos
• + Operador Soma
• - Operador Subtração
• * Operador Multiplicação
• / Operador Divisão
Operadores Aritméticos - Soma
algoritimo
declare inteiro resultado
resultado � 5 + 6
escreva “Resultado é ”, resultado
fim algoritmo
Operadores Aritméticos -
Subtração
algoritimo
declare inteiro numA, numB, resultado
numA � 20
numB � 8
resultado � numA - numB
escreva “Resultado é ”, resultado
fim algoritmo
Operadores Aritméticos -
Multiplicação
algoritimo
declare inteiro num01, num02, resultado
num01 � 5
num02 � 2
resultado � num01 * num02
escreva “Resultado é ”, resultado
fim algoritmo
Operadores Aritméticos - Divisão
algoritimo
declare inteiro resultado
resultado � 30/2
escreva “Resultado é ”, resultado
fim algoritmo
Vários Operadores
algoritimo
declare inteiro resultado
resultado � 5+3-4/2*2
escreva “Resultado é ”, resultado
fim algoritmo
Vários Operadores
algoritimo
declare inteiro resultado
resultado � 5+(3-4)/2*2
escreva “Resultado é ”, resultado
fim algoritmo
Operadores Aritméticos -
Precedência
• Informa qual a operação que o compilador 
fará primeiro. 
• Se os operadores forem de um mesmo nível 
de precedência, serão analisados da esquerda 
para direita.
• Prioridade Alta: *, / e % (Ver mais adiante)
• Prioridade Baixa: + e –
• Quando houver parênteses, o compilador 
seguirá a ordem definida pelos parênteses
Exercícios
• Crie um algoritmo em pseudocódigo que 
receba duas notas de um aluno e informe a 
média na tela para o usuário.
• Crie um algoritmo em pseudocódigo que 
some ou subtraia dois números inteiros de 
acordo com a opção digitada pelo usuário. Se 
o usuário digitar “1”, execute a operação de 
soma, caso digite “2”, execute a operação de 
subtração
Constantes
• Uma constante é semelhante a uma variável, 
porém, uma vez atribuído um valor a mesma, 
este valor não poderá ser alterado 
posteriormente. Isto é, uma vez atribuído um 
valor ele será constante sempre que for 
utilizado no código.
Constante
algoritimo
declare const real PI � 3.14159
escreva “O valor da constante PI é ”, PI
fim algoritmo
Regras e Convenções
• Variáveis
– Regras: Nome deve iniciar com uma letra. Após, 
pode ser qualquer combinação de letras e 
números
– Convenções: Letra inicial do nome deve ser 
minúscula. Se houver mais de uma palavra no 
nome, cada letra inicial deve ser maiúscula, para 
as palavras depois da primeira.
– Exemplo: nomeAluno; resultadoFinal; 
SomaDasNotas
Operador Aritmético - Resto
• Operador %: Retorna o resto da divisão entre 
dois números inteiros
• Exemplo: resultado � 9%5
– Valor armazenado na variável resultado será 4
Operador Aritmético – Resto
algoritimo
declare inteiro num1, num2, resultado
num1 � 11
num2 �5
resultado � num1 % num2
escreva “O valor do resto da divisão é ”, resultado
fim algoritmo
Comentários
• Textos que servem para explicar e organizar o 
código
• Não são interpretados. O compilador não analisa 
o conteúdo do comentário
• Sintaxe: //
• Exemplo: //Este é um comentário de uma linha
• Sintaxe comentário de uma ou várias linhas:
• /* Comentário que eu posso usar mais de uma 
linha sem problemas*/
Comentários
Algoritmo
/*Este algoritmo imprime valores de 1 até 30 
utilizando uma repetição*/
declare numérico CONT
CONT � 0
//A repetição abaixo imprime os valores de 1 até 30
repita CONT<= 30
escreva “Valor do contador:”, CONT
CONT � CONT + 1//Adiciona uma unidade
fim repita
fim algoritmo
Exercícios
• Escreva em pseudocódigo um algoritmo que 
peça para o usuário digitar dois números 
inteiros. O primeiro número deverá ser 
elevado ao quadrado (num1²) e o segundo ao 
cubo (num2³). Use os resultados como valores 
para o operador resto (%). Insira comentários 
explicativos.
Operadores Relacionais
• Também são chamados de operadores de 
comparação (condicionais)
• Dado duas variáveis por exemplo, então:
– = Compara se possuem o mesmo valor
– <> Compara se possuem valores diferentes
– < Compara se o valor da esquerda é menor que o da 
direita
– > Compara se o valor da esquerda é maior que o da direita
– <= Compara se o valor da esquerda é menor ou igual ao da 
direita
– >= Compara se o valor da esquerda é maior ou igual ao da 
direita
Operadores Relacionais
• Estes operadores são utilizado nas estruturas 
de decisão e repetição
• O resultado da operação relacional é Lógico 
(Verdadeiro ou Falso)
• Exemplo: 
repita num <> 0
escreva “Você não digitou Zero”
fim repita
Operadores Lógicos
• Conectam mais de uma operação relacional
• e – Operação anterior e posterior devem ser 
verdadeiras 
• ou – Operação anterior ou posterior deve ser 
verdadeiras
• não – Inverte o valor. O que é verdadeiro se 
torna falso e vice-versa
Operadores Lógicos
• Estes operadores também são utilizado nas 
estruturas de decisão e repetição
• Operadores lógicos trabalham com valores do 
tipo Lógico (Verdadeiro ou Falso)
• Exemplo: 
se (idade >= 18) e (idade < 32) então
escreva “Você pode ingressar no corpo de 
engenheirosda Marinha”
fim se
Exercícios
• Desenvolva um algoritmo em pseudocódigo 
que peça para usuário digitar duas notas de 
um aluno. Calcule a média aritmética das 
notas e se o resultado for maior ou igual a 
seis, então imprima na tela APROVADO senão 
imprima REPROVADO. 
Exercício
• Para participar de um curso de programação 
em linguagem Python os alunos já devem ter 
cumprido os pré-requisitos a seguir: Ter média 
7.0 na disciplina PRC ou média 8.0 na 
disciplina LFT, além de estar aprovado na 
disciplina PRJ. Escreva um pseudocódigo em 
que somente alunos com os pré-requisitos 
sejam cadastrados no curso. Peça os dados 
para o usuário.
Exercício
• Escreva um pseudocódigo que cadastre 
somente aqueles que devem prestar o serviço 
militar obrigatório. Ou seja, homens que 
completem 18 anos no ano corrente. 
Considere que o cidadão pode escolher 
ingressar na Marinha, Exército ou 
Aeronáutica. Caso a escolha seja Marinha ou 
Exército o cidadão deve se dirigir ao batalhão 
1, no caso de Aeronáutica, Batalhão 2. OBS.: 
Considere que o usuário pode desejar 
cadastrar mulheres também.
Variáveis Compostas Homogêneas
• São posições de memória identificadas por um 
mesmo nome, mas cada posição pode ser 
acessada individualmente através de um 
índice
• Em resumo são listas de informações. Uma 
variável capaz de armazenar vários valores de 
um mesmo tipo
• Podem ser unidimensionais, bidimensionais 
ou multidimensionais
• Unidimensionais chamadas de vetores
• Bidimensionais chamadas de matrizes
Exemplo – Declaração Vetor
• Utilize a seguinte sintaxe:
– declare <tipo de dado> <nome da variável> 
[<Quantidade de elementos>]
• Exemplo:
– declare real notas[10]
– declare caractere nomes[5] 
Exemplo – Como acessar
• Acessar uma posição:
– escreva “valor da posição 5 no vetor notas: ”, notas[5]
• Atribuir valores:
– nomes[1] � “João”
– nomes[2] � “Fulano de Tal”
– nomes[3] � “Maria Silva”
– nomes[4] � “Joana Oliveira Silva e Silva”
– nomes[5] � “Beltrano”
Exemplo – Repetição
CONT � 1
repita CONT<= 5
escreva “Digite um nome:”
leia nomes[CONT]
escreva “O nome digitado foi:”, nomes[CONT]
CONT � CONT + 1
fim repita
Exercício
• Crie um pseudocódigo que receba as notas de 
30 alunos e calcule a média da classe. Após, 
liste na tela somente as notas dos alunos com 
média maior que a média da classe.
• Dica: Peça as notas dos alunos; Faça a soma; 
Calcule a média; Apresente na tela as notas;
Exercício
• Crie um pseudocódigo que receba 10 valores 
inteiros em um vetor e determine qual é o 
maior valor armazenado no vetor.
Matriz
• Podemos pensar como sendo uma tabela que 
armazena dados em linhas e colunas
• Podemos acessar os elementos(células) 
através do índice da linha combinado com o 
índice da coluna 
Exemplo – Declaração Matriz
• Utilize a seguinte sintaxe:
– declare <tipo de dado> <nome da variável> 
[<Quant. elementos>] [<Quant. elementos>]
• Exemplo:
– declare real notasAlunos[5][3]
Exemplo – Como acessar
• Acessar uma posição:
– escreva “valor da posição linha 1, coluna 3 na matriz 
de notas dos alunos: ”, notasAlunos[1][3]
• Atribuir valores:
– notasAlunos[1][1]� 6.7
– notasAlunos[1][2] � 7.9
– notasAlunos[1][3] � 6.2
– notasAlunos[2][1] � 3.5
– ...
– notasAlunos[5][2] � 8.6
– notasAlunos[5][3]� 7.8
Exemplo – Repetição
i � 1
repita i <= 5
j � 1
repita j <= 3
escreva “Digite a nota ”, j, “do aluno ”, i
leia notasAlunos[i][j]
escreva “A nota digitada foi:”, notasAlunos[i][j]
j � j + 1
fim repita
i � i + 1
fim repita
Exercício
• Crie um pseudocódigo que preencha uma 
matriz de 10 por 100 elementos do tipo 
inteiro (10 linhas x 100 colunas) com valores 
de 1 até 1000. Após o programa deve 
apresentar os valores contidos na matriz na 
tela.
Exercício
• Em uma classe com dez alunos, cada aluno fez 
três provas. Crie um pseudocódigo que calcule 
e apresente na tela a média de cada aluno. 
Dica: Utilize uma matriz (notas das provas dos 
alunos) e um vetor (média das notas dos 
alunos).
Resumo – Estrutura de dados 
homogênias
• Permitem manipular um conjunto de dados 
através de uma só variável
• Vetores são unidimensionais, isto é, possuem 
um único índice
• Matrizes são multidimensionais, podem ter 
duas ou mais dimensões (dois ou mais índices)
Modularização - Funções
• Uma tarefa normalmente pode ser dividida em 
várias tarefas menores. Exemplo: trocar uma 
lâmpada (pegar a escada, remover lâmpada 
velha).
• Uma tarefa grande e complexa pode ser 
decomposta em problemas menores
• Uma grande quantidade de problemas/tarefas 
menores pode afetar a legibilidade (clareza) 
dificultando a manutenção de um código em C, 
por exemplo.
• Vantagem: Reutilização, Clareza do Código e 
Independência
Modularização - Funções
• Para resolver este problema relacionado com 
complexidade e clareza do código, utilizamos a 
técnica de modularização.
• Modularização: “Quebrar um problema em 
pequenas partes”
• Podemos chamar um módulo de função
• Exemplo: Função que calcule a média dado 
duas notas
• Ao utilizar uma função preciso saber o que ela 
faz e não como ela faz
Declaração de Funções
• Cabeçalho ou protótipo:
função <tipo retorno> <nome função> (lista de 
parâmetros)
• Corpo da função:
função <tipo retorno> <nome função> (lista de 
parâmetros) 
fim função
Parâmetros
• Uma função pode precisar de dados para 
realizar alguma ação.
• Uma lista de parâmetros de uma função é um 
conjunto de variáveis. Através destas variáveis 
os dados podem ser armazenados e serão 
acessíveis dentro do corpo da função. 
• No corpo da função é onde descrevemos 
(pseudocódigo) como a função irá trabalhar 
com os dados.
Funções - Observação
• As funções podem não ter nenhum parâmetro
• As funções podem não ter um tipo de retorno, ou 
seja, ela executa alguma ação que não precisa 
retornar um resultado para quem fez a chamada. 
Função que não tem retorno podem ser chamadas 
de procedimentos.
• Utilizaremos um tipo de retorno especial chamado 
vazio (palavra reservada). 
• A palavra reservada retorno no corpo da função 
indica o resultado da operação/cálculo que deverá 
ser retornado por “quem” chamou a função
Exemplo – Com retorno e com retorno vazio
função inteiro somaInteiro(inteiro numA, inteiro numB)
declare inteiro resultado
resultado � numA+numB
retorno resultado
fim função
função vazio somaInteiro(inteiro numA, inteiro numB)
declare inteiro resultado
resultado � numA+numB
escreve "A soma de ", numA, "com ", numB "é " resultado
fim função
Exemplo Completo
algoritmo
declare inteiro n1,n2,r
função inteiro somaInteiro(inteiro numA, inteiro numB)
escreva "Digite um número inteiro: "
leia n1
escreva "Digite outro número inteiro: "
leia n2
r = somaInteiro(n1,n2)
escreva "As soma dos números é: " r
fim algoritmo
função inteiro somaInteiro(inteiro numA, inteiro numB)
declare inteiro resultado
resultado � numA+numB
retorno resultado //Retorna o resultado
fim função
Exemplo – Retorno vazio e sem 
parâmetros
//Corpo da função
função vazio bomDia()
escreve “Bom dia!"
fim função
algoritmo
função vazio bomDia() // Cabeçalho da função
bomDia() //Chamada da função
fim algoritmo
Exercícios
• Crie uma função que retorne o quadrado de 
um número inteiro digitado pelo usuário. 
Escreva o algoritmo que solicite o número e 
faça a chamada a função criada.
• Crie uma função que retorne um valor com 
desconto de 10%, dado um valor do tipo real 
como entrada ( (valor/100)*10 ). Escreva o 
algoritmo que solicite o número e faça a 
chamada a função criada.

Continue navegando