Вы находитесь на странице: 1из 25

Engenharia 2014.

2 Programao de Computadores
Prof. Max Arruda Diniz Filho

Programao
De
Computadores

Pgina |1

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |2

Lgica de Programao

O que lgica?

Modo de raciocinar tal como de fato se exerce (Michaelis, 2010).

O que Lgica de Programao?


Lgica de programao a tcnica de encadear pensamentos para
atingir determinado objetivo.

O que uma sequncia Lgica?


uma sequncia de instrues, que devem ser seguidas para se
cumprir uma determinada tarefa.

O que uma instruo?


Conjunto de regras ou normas definidas para realizao ou emprego de
algo.
Em informtica, o que indica a um computador uma ao a ser
executada.

O que um Algoritmo ?
Sequncia de passos que levam a execuo de uma tarefa.

Algoritmos so definidos em pseudocdigos


Linguagem independente da linguagem de programao;
Deve ser fcil de interpretar e de codificar ;
menos analtico que a lngua falada e menos sinttico que uma
linguagem de programao.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |3

Portugol
A maioria esmagadora das linguagens de programao de computadores em
lngua inglesa. Para facilitar o aprendizado de lgica de programao foram criadas
algumas pseudolinguagens.
O Portugol uma pseudolinguagem de programao, uma simbiose de Portugus,
Algol e Pascal, criada originalmente em ingls, com a proposta de ser independente da
linguagem nativa (ou seja, existe em japons, javans, russo...).
Basicamente, uma notao para algoritmos, a ser utilizada na definio,
criao, desenvolvimento e documentao dos programas.
Algumas Palavras Chave
Inicio, Fim, Algoritmo, Enquanto, Se, ento, Para, At, At que, Leia,
Escreva, Faa, Repita, FimSe, FimEnquanto, FimSelecione, entre outras que
veremos adiante.
Regras para construo do Algoritmo
Para escrever um algoritmo precisamos descrever a seqncia de instrues, de
maneira simples e objetiva. Para isso utilizaremos algumas tcnicas:
1. Usar somente um verbo por frase
2. Imaginar que voc est desenvolvendo um algoritmo para pessoas que no
trabalham com informtica
3. Usar frases curtas e simples
4. Ser objetivo
5. Evite usar palavras que tenham sentido dbio
6. Procure dividir o problema em etapas menores.
Fases Fundamentais
Vimos que ALGORITMO uma seqncia lgica de instrues que podem ser
executadas.
importante ressaltar que qualquer tarefa que siga comportamento padro pode
ser descrita por um algoritmo.
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em trs fases fundamentais...

Entrada

Processamento

Sada

ENTRADA:
So os dados de entrada do algoritmo
PROCESSAMENTO: Procedimentos utilizados para chegar ao resultado final
SADA:
So os dados j processados

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |4

Exemplos de Algoritmo
1) Imagine o seguinte problema: Calcular a mdia final dos alunos. Pelas provas
os alunos recebero 2 notas: N1, N2. Onde:
N1 + N2
Mdia Final =
-------------------2
Para montar o algoritmo proposto, faremos trs perguntas:
a) Quais so os dados de entrada?

R: Os dados de entrada so N1, N2

b) Qual ser o processamento a ser R: O procedimento ser somar todos os


utilizado?
dados de entrada e dividi-los por 2
(dois)
c) Quais sero os dados de sada?
R: O dado de sada ser a mdia final

INICIO do algoritmo
Receba a nota da prova1
Receba a nota de prova2
Some todas as notas e divida o resultado por 2
Mostre o resultado da diviso

FIM do algoritmo

2) Ler um valor e saber se um numero ou letra

3) Ler dois nmeros e saber qual o maior

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |5

EXERCCIOS
1)

Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um


algoritmo que calcule seu peso ideal, utilizando as seguintes frmulas:
Para homens: (72.7*h) - 58
Para mulheres: (62.1*h) - 44.7 (h = altura)

2)

Faa um algoritmo que calcule o IMC - ndice de massa corprea de uma pessoa,
segundo a frmula:
IMC = peso * altura 2
Classifique-a segundo a tabela:
0
19
25
30
40

IMC
a 19
a 25
a 30
a 40
a acima

Resultado
Muito Magro
Normal
Sobre Peso
Obeso
Obesidade Grave

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |6

Linguagem de Programao C
A linguagem C uma linguagem 3GL (terceira gerao);
uma linguagem com um ncleo muito simples, procedural e com recursos
apoiados em bibliotecas de funes padronizadas;
Possui um sistema simples de tipos, evitando operaes desnecessrias;
Parmetros passados sempre por valor (exceto em vetores simulado atravs de
ponteiros que pode ser passado por referncia);
Estrutura de variveis do tipo struct que permite que dados de tipos diferentes
sejam combinados e manipulados como um registro.

Traduo do cdigo-fonte
Quando o programador escreve um algoritmo ele est criando uma soluo inicial
para o problema proposto pelo usurio. O texto formal o que se chama de cdigofonte, escrito numa linguagem formalizada e dentro dos padres rgidos de programao
(sua sintaxe).
Para que o cdigo-fonte seja processado pelo computador necessrio antes
traduzi-lo em cdigo de maquina.

Interpretao
Nesta forma de traduo feita a leitura, traduo e execuo de cada
linha do programa (cdigo-fonte).

Compilao
Aps verificao e checagem da sintaxe gerado um cdigo em linguagem
de mquina a partir da traduo integral do programa, dando como resultado final
o cdigo executvel que pode ser executado diretamente pelo computador.

Linguagem de
Alto Nvel

Compilador
ng

Executvel

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |7

Ambiente de desenvolvimento em C
A escrita de um programa em C feita num editor de texto puro, no
formatado para evitar a insero de caracteres estranhos no texto.
Dev-C++
um ambiente integrado de desenvolvimento para aplicaes em C e C++
e pode ser baixado no site: http://bloodshed.net/devcpp.html
Possui as seguintes caractersticas:
1.
2.
3.
4.
5.
6.
7.

Controle de verso de software;


Editor com cores de sintaxe personalizvel;
Gerenciador de projetos;
Funo auto-completar;
Edio e compilao de arquivos dos projetos criados;
Gerenciador de ferramentas;
Funo de localizao e substituio.

Figura 1 Janela Inicial do ambiente de desenvolvimento do Dev-C++

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

Pgina |8

Para iniciar um novo projeto basta carregar a ferramenta a partir do


desktop e seguir os passos a seguir:
1. Inicie um novo projeto clicando em File/New/Project;

2. Selecione:
a.
b.
c.
d.

Tipo de projeto = Console Application;


Name = Aula1;
C Project;
Make Default Language

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

3. Ser criado a classe main.c

4. Altere a classe main.c conforme descrito abaixo:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Alo Mundo!");
getch();
return 0;
}

Pgina |9

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

5. Salve o cdigo fonte da classe main.c (CTRL+S)

6. Salve o cdigo fonte da classe main.c (CTRL+F12)

P g i n a | 10

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 11

7. Compile o arquivo clicando em Execute/Compile

8. Verifique se a compilao ocorreu sem erros (Status Done)

a. Caso esteja tudo certo (isento de erro de sintaxe) aparecer


uma janela como a tela acima com o status done (feito,
pronto). Caso haja sintaxes incorretas, mensagens de erros
aparecero no rodap da janela e dentro da janela aparecer
a mensagem: there are erros no status;
b. Depois de compilar o programa o arquivo executvel
gerado no mesmo local onde foi gravado o arquivo-fonte.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

9. Execute a aplicao clicando em Execute/Run

P g i n a | 12

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 13

10. A Aplicao ser executada numa tela do DOS

Case sensitive
A linguagem C diferencia as letras maisculas das minsculas: por
exemplo, uma varivel empregada para armazenar a devoluo do imposto de
renda, declarada Devir tratada diferentemente de devIR e de DEVIR.

Comando e Linha de Instruo


O computador executa ordens dadas atravs do cdigo-fonte que
compilado e traduzido em cdigo de maquina. Essas ordens so chamadas de
comandos ou instrues.

Comando: palavra-chave que indica explicitamente uma ordem de


execuo;
Instruo: conjunto de palavras-chave e argumentos que compem uma
linha do cdigo-fonte.

Exemplo:
a) Int x,y;
O comando Int , juntamente com os seus argumentos x,y compem a
linha de instruo que definem as variveis x,y como do tipo inteiro.
b) R = sqrt(a);
O comando sqrt, com seus argumentos compem a linha de instruo
cujo resultado deve ser atribudo a varivel R.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 14

Comentrios
Os comentrios, antes de servirem apenas para comentar um determinado
trecho do programa, so fundamentais para documentar o cdigo de uma rotina
ou um bloco de instrues.
Para comentar uma linha so usadas duas barras inclinadas // indicando
que tudo que est escrito aps essas duas barras considerado comentrio ( o
compilador ignora).
Para comentar mltiplas linhas pode ser usada um par de barras inclinadas
com asterisco dentro /*....*/.

Bibliotecas (arquivo de cabealhos)


So arquivos especiais, indicados entre < e > que contm instrues
necessrias aos programas, e que devem ser includos no cdigo-fonte com a
diretiva #include.
Exemplo:
a) Para que se possa entrar com dados atravs do comando scanf() e
exibir os resultados com printf() necessrio incluir biblioteca padro
stdio.h;
b) Para elevar um nmero a uma potncia usando a funo pow()
necessrio a incluso da biblioteca math.h;
c) Para trabalhar mais facilmente com strings fundamental a incluso da
biblioteca string.h.
Biblioteca
Stdio.h

Usabilidade
Comandos de entrada/sada

Stdlib.h

Funes envolvendo alocao de memria,


controle de processos, converses e outras.
Funes de manipulao de strings

String.h
Math.h
Conio.h

Funes para serem usadas em


matemticos.
Comandos de controle do console

clculos

Algumas funes
Fprintf(), gets(), scanf(),
printf(), stdin(), stdout().
Abs(),
div(),
rand(),
strtod(), system().
Strllen(),
strupr(),
strlwr(),
strtolower(),
strcmp.
cos(), sin(), tan(), exp(),
log(), sqrt().
Getch(), getchar().

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 15

Layout do Cdigo Fonte


O cdigo-fonte de um programa deve ser escrito de forma legvel e
elegante. Para isso so usadas as seguintes tcnicas:
1) Endentao Espaos que precedem uma instruo dentro de uma
estrutura.
2) Par de chaves {..} Definem blocos de instrues ou implementao de
uma funo.
3) Identificadores Nomes utilizados na definio de variveis, constantes
e funes.
a) Constantes Letras maisculas; por exemplo, PI, TAXA, etc.
b) Funes A primeira letra maiscula; por exemplo,
CalcFat(), VerifNumero(), etc.
c) Variveis Letras minsculas;

Tipos de Dados Bsicos


Int : //define uma varivel inteira
Float/Double: // define uma varivel real
Char: // define uma varivel string
Bool: // define uma varivel lgica(verdadeiro ou falso)
Modificadores So usados para alterar a faixa de valores.
short encurta a faixa de valores;
Exemplo: short int
long aumenta a faixa de valores;
Exemplo: long int
signed considera a faixa de valores com sinal;
Exemplo: signed int
unsigned considera apenas a faixa de valores no negativos;
Exemplo: unsigned int
O tipo de dado int (inteiro) serve para armazenar valores numricos
inteiros. pode ainda ser declarado precedidos da clusula unsigned, o que faz com
que s suporte nmeros positivos. Isto faz com que, com o mesmo tamanho, uma
varivel suporte mais nmeros positivos do que um signed (todos os inteiros so
signed por omisso).
O tipo char serve para armazenar caracteres ou inteiros. Com vetores do
tipo char possvel criar cadeias de caracteres (strings).
O tipo de dado float serve para armazenar nmeros de ponto flutuante, ou
seja, com casas decimais. O tipo de dado double serve para armazenar nmeros
de ponto flutuante de dupla preciso, normalmente tem o dobro do tamanho do
float e portanto o dobro da capacidade.
O tipo de dado struct servem para criar estruturas (chamados de registos
em outras linguagens de programao). As estruturas so grupos de variveis
organizadas arbitrriamente pelo programador.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 16

O seguinte cdigo realiza seis operaes matemticas, adio, subtrao


, multiplicao, diviso, exponenciao e radiciao, e em seguida envia os seus
respectivos resultados para a sada padro (normalmente o console).

#include <math.h> // necessria para pow() e sqrt()


#include <stdio.h> // necessria para printf() e getchar()

int main()
{
int a = 2, b = 3;

printf("%d + %d = %d\n", a, b, a + b);


printf("%d - %d = %d\n", a, b, a - b);
printf("%d x %d = %d\n", a, b, a * b);
printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionrio
printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente)
printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a));

getchar(); //O uso dessa funo necessria apenas nos sistemas Windows,
para manter o terminal (Prompt de comando) aberto
return 0;
}

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 17

No exemplo seguinte, criada uma estrutura composta por 3 elementos de tipos


diferentes. Aps ser declarada uma varivel "x" do tipo struct "y", onde "y" o nome da
estrutura, para se acessar os elementos usa-se a seguinte sintaxe: x.elemento.

#include <stdio.h>

struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
};

int main()
{
struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declarao da
varivel "exemplo"

printf("Nome: %s\n", exemplo.nome);


printf("Idade: %hu\n", exemplo.idade);
printf("RG: %s\n", exemplo.rg);

getchar(); // desnecessrio, mas comumente utilizado em ambientes windows


para "segurar" o terminal aberto
return 0;
}

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 18

Variveis e Constantes
A linguagem de programao C exige que todas as variveis usadas no
programa sejam previamente definidas: declaradas com seu tipo de dado.
De um modo geral a definio de variveis representada como indicado a
seguir:
tipo identificador = <valor>
Exemplo:
int cont;
int cont =0;
char CliSexo;
char AluMat[10];
De um modo geral a definio de constantes representada como indicado
a seguir:
Const tipo identificador = <valor>
Exemplo:
Const double PI=3,14;

Operadores e Operaes
Operadores so smbolos convencionados que indicam ao compilador o tipo
de operao a ser efetuado.
1.
2.
3.
4.

Operadores
Operadores
Operadores
Operadores

Aritmticos (*, / , % , +, - );
Relacionais ( < , > , <= , >= , != , == );
Lgicos (&& , || , ! );
de incremento/decremento (++ , -- )

Exerccio:
1) Marque com V se a expresso for verdadeira ou com F se for falsa,
considerando os seguintes dados: A=3, B=1, C=2.
(
(
(
(
(
(
(
(
(
(

)
)
)
)
)
)
)
)
)
)

(B>A) && (C>=B)


!(A<B)
(A>B) && (B==C) || (B>A)
!(B>C) && (6<9)
(A<=B)|| (B>C)
!(!(!(B==A) && (C>B)))
(C==A) || (B>A)
!9B==A) && (B<=C)
(C==B) && !(B<C) || !(A>B)
!((B<C) && (A=3) && !(6<5))

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 19

2) Sabendo que j=7 e


k=3 (ambos inteiros),marque com V as
respostas verdadeiras e com F as respostas falsas.
a. ( ) j+++2 = 9
b. ( ) j=k==3 = 1
c. ( ) j/k = 3,5
d. ( ) j%k = 3
e. ( ) 3+j>>5 = 1
f. ( ) k==j+1 = 0
g. ( ) j---k = 6
h. ( ) j%k/j+k==5 = 0
i. ( ) k+++j-j = 3
j. ( ) j==--k/(k>1 = 1

Entradas e Saidas
1. Funo scanf() l dados do teclado;
Sintaxe: scanf(formato, &dados);
Exemplo:
...
Double SalAtu;
Printf (Digite o salrio atual do empregado:);
Scanf(%f, &SalAtu);
Para cada varivel colocada na funo scanf() deve-se informar qual
o formato desejado de entrada.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 20

2. Funo printf() exibe na tela do monitor de vdeo uma lista


formatada de numeros, caracteres, strings etc.
Sintaxe: printf(formato, sadas);
Exemplo:
Printf (Resumo das vendas no Trimestre);
Printf (Raiz quadrada de 4 e 5, x,y);
Para cada varivel colocada na funo printf() deve-se informar qual
o formato desejado de saida.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 21

Estruturas de Deciso
Permite desviar o fluxo do processamento em funo de um teste lgico
feito sobre um condio.
1. Estrutura de Deciso Simples
Neste comando um bloco de instrues s ser executado se a
condio testada for verdadeira. Sua sintaxe a seguinte:
IF (condio)
{
Bloco de instrues
}
2. Estrutura de Deciso Composta
Neste comando um bloco de instrues s ser executado se a
condio testada for verdadeira e se for falsa. Sua sintaxe a
seguinte:
IF (condio)
{
Bloco de instrues1
}
Else
{
Bloco de instrues2
}
Exemplo1: Leia o nome de um aluno e as suas duas notas no
semestre. Calcule sua mdia aritmtica e mostre o nome do aluno
numa linha e sua mdia na outra. E se essa mdia for no mnimo
7.0, escreva em outra linha Aprovado seno escreva Reprovado.
//Exemplo Estrutura de deciso composta
#include<stdio.h>
#include<conio.h>
Int main()
{
float Nota1, Nota2, Media;
char Aluno[30];
printf(Digite o nome do Aluno: );
printf(\n);
printf(Digite a primeira nota: );
scanf(%f, &nota1);
printf(Digite a segunda nota: );
scanf(%f, &nota2);
Media = (nota1+nota2)/2;
Printf(\n);
Printf(Aluno: %s \n, Aluno);
Printf(Media: %3.1f \n, Media);
IF (Media >= 7.0)
Printf(Aprovado);
Else
Printf(Reprovado);
Getch();
Return 0;
}

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 22

Exemplo2: Imprimir na tela o nome do ms em funo do nmero


digitado pelo usurio.
//Exemplo2 Comandos de deciso aninhados (um dentro do outro)
#include<stdio.h>
#include<conio.h>
Int main()
{
Int num;
Printf (Digite o numero do ms: );
Scanf(%d, Num);
IF (num ==1)
Printf(Janeiro);
Else IF (num==2) printf (Fevereiro);
Else IF (num==3) printf (Maro);
Else IF (num==4) printf (Abril);
Else IF (num==5) printf (Maio);
Else If (num==6) printf (Junho);

.
.

.
Else IF (num==12) printf (Dezembro);
Else printf (Ms Invalido);
Getch();
Return 0;

Exerccio:
1. Ler um nmero e verificar se par ou impar.
2. Leia o nome e a idade de uma pessoa, e exiba quantos dias de
vida ela possui. Considere sempre anos completos, e que um
ano possui 365 dias.
3. Leia o salrio de um funcionrio e aumente em 15%. Aps o
aumento, desconte 8% de impostos. Exiba o salrio inicial, o
salrio com o aumento e o salrio final.

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 23

Estruturas de Repetio
1. Loop lgico com teste no inicio
Sua sintaxe a seguinte:
While (condio)
{
Instruo1
Instruo2
Instruo3
....
Instruon
}
Exemplo1: Crie um programa que some dez primeiros nmeros
pares.
//Exemplo1 estrutura de repetio
#include <stdio.h>
#include <conio.h>
Int main()
{

Int j, par, soma;


Par = 2;
Soma = 0;
J = 1;
While (j<=10)
{
Soma = soma + par;
Par = par + 2;
J++;
}
Printf(A Soma : %d \n, soma);
Getch();
Return 0;

2. Loop lgico com teste no final


Sua sintaxe a seguinte:
Do
{
Instruo1
Instruo2
Instruo3
....
InstruoN
}while (condio);

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 24

3. Estrutura de repetio numrica


Neste caso tem-se uma estrutura que define um loop
numrico (ou automtico) com a seguinte forma geral:
For (varCont=inicio; VarCont<=fim; VarCont++)
{
Instruo1
Instruo2
Instruo3
....
InstruoN
}
Onde: VarCont Varivel de controle do loop
Inicio Valor inicial (inteiro ou real)
Fim Valor Maximo(inteiro ou real)
Exemplo2: Crie um programa que leia dois nmeros (N e P)
e calcule a potncia N elevado a p.
//Exemplo2 estrutura de repetio
#include <stdio.h>
#include <conio.h>
Int main()
{

Int cont, base, p pot;


Printf (Digite o numero[base]: );
Scanf(1f, base);
Printf(digite o expoente: );
Scanf(%f, p);
Pot = 1;
For (cont=1; cont<=p; cont++)
{
Pot = pot * base;
}
Printf(\n);
Printf(%d elevado a %d = %d \n, base, p, pot);
Getch();
Return 0;

Obs.:
1. Comando break (abandona o lao mas no o programa);
2. Comando Exit (abandona o programa);

Engenharia 2014.2 Programao de Computadores


Prof. Max Arruda Diniz Filho

P g i n a | 25

Exercicios:

1. Ler 10 nmeros reais e exibir qual foi o maior nmero.


2. Ler 100 nmeros e exibir a soma dos nmeros impares.
3. Ler 30 nmeros e exibir a soma dos nmeros que so
divisveis por 5.
4. Ler diversos nmeros reais e exibir qual foi a soma. O valor
999 o cdigo de fim da entrada.
5. Ler diversos nmeros reais e exibir quantos foram digitados.
O valor 999 o cdigo de fim da entrada.
6. Ler 20 nmeros e exibir qual foi o menor e o maior
informados.
7. Ler um nmero inteiro e exibir o fatorial deste nmero. Onde
a Formula : n! = 1x2x3x...x(N-1)xN
8. Ler 500 valores inteiros e positivo e depois informe: a. Qual
o maior valor; b. Qual o menor valor; c. A mdia dos
nmeros lidos.