programação de computadores e algorítimos

25
Engenharia 2014.2 Programação de Computadores Prof. Max Arruda Diniz Filho Página | 1 P P r r o o g g r r a a m ma a ç ç ã ã o o D D e e C C o o m mp p u u t t a a d d o o r r e e s s

Upload: aieoa

Post on 04-Oct-2015

18 views

Category:

Documents


0 download

DESCRIPTION

Apostila com introdução a algorítimos. Linguagem C+ e programação de computadores. Portugol, exercícios com algotítimos com introdução ao programa DEV C++. Funções no DEV C++ : São arquivos especiais, indicados entre que contêm instruções necessárias aos programas, e que devem ser incluídos no código-fonte com a diretiva #include.Exemplo:a) Para que se possa entrar com dados através do comando scanf() e exibir os resultados com printf() é necessário incluir biblioteca padrão “stdio.h”;b) Para elevar um número a uma potência usando a função pow() é necessário a inclusão da biblioteca “math.h”;c) Para trabalhar mais facilmente com strings é fundamental a inclusão da biblioteca “string.h”.

TRANSCRIPT

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 1

    PPPrrrooogggrrraaammmaaaooo

    DDDeee

    CCCooommmpppuuutttaaadddooorrreeesss

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 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

    P g i n a | 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: So os dados de entrada do algoritmo

    PROCESSAMENTO: Procedimentos utilizados para chegar ao resultado final

    SADA: So os dados j processados

    Entrada Processamento Sada

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 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

    utilizado?

    R: O procedimento ser somar todos os

    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

    P g i n a | 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:

    IMC Resultado

    0 a 19 Muito Magro

    19 a 25 Normal

    25 a 30 Sobre Peso

    30 a 40 Obeso

    40 a acima Obesidade Grave

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 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 cdigo-

    fonte, 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.

    ng

    Linguagem de

    Alto Nvel

    Compilador Executvel

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 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. Controle de verso de software;

    2. Editor com cores de sintaxe personalizvel;

    3. Gerenciador de projetos;

    4. Funo auto-completar; 5. Edio e compilao de arquivos dos projetos criados;

    6. Gerenciador de ferramentas;

    7. 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

    P g i n a | 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. Tipo de projeto = Console Application;

    b. Name = Aula1;

    c. C Project;

    d. Make Default Language

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 9

    3. Ser criado a classe main.c

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

    #include

    #include

    int main()

    {

    printf("Alo Mundo!");

    getch();

    return 0;

    }

  • Engenharia 2014.2 Programao de Computadores Prof. Max Arruda Diniz Filho

    P g i n a | 10

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

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

  • 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

    P g i n a | 12

    9. Execute a aplicao clicando em Execute/Run

  • 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 Usabilidade Algumas funes

    Stdio.h Comandos de entrada/sada Fprintf(), gets(), scanf(),

    printf(), stdin(), stdout().

    Stdlib.h Funes envolvendo alocao de memria,

    controle de processos, converses e outras.

    Abs(), div(), rand(),

    strtod(), system().

    String.h Funes de manipulao de strings Strllen(), strupr(),

    strlwr(), strtolower(),

    strcmp.

    Math.h Funes para serem usadas em clculos

    matemticos.

    cos(), sin(), tan(), exp(),

    log(), sqrt().

    Conio.h Comandos de controle do console 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 // necessria para pow() e sqrt()

    #include // 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

    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 =

    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 =

    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. Operadores Aritmticos (*, / , % , +, - );

    2. Operadores Relacionais ( < , > , = , != , == );

    3. Operadores Lgicos (&& , || , ! );

    4. Operadores 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)

    ( ) !(AB) && (B==C) || (B>A)

    ( ) !(B>C) && (6B)))

    ( ) (C==A) || (B>A)

    ( ) !9B==A) && (B

  • 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 #include 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 #include 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 #include Int main() { Int j, par, soma; Par = 2; Soma = 0;

    J = 1; While (j

  • 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

  • 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.