Baixe o app para aproveitar ainda mais
Prévia do material em texto
DCC 119 Algoritmos 2 Pontos importantes da última aula Sistemas de Numeração: base, notação posicional e conversão de base. Sistemas Computacionais: processador, memória, linguagens de programação e sistema operacional. Algoritmos: ação, estado, processo, padrão de comportamento, algoritmo, aspectos estático e dinâmico de um algoritmo e formas de representação de algoritmos. 3 Introdução Para cada comando serão apresentadas a sua: sintaxe: formato geral do comando que deve ser aceita e respeitada como padrão. semântica: o significado da ação realizada pelo comando, em tempo de execução. No texto (estático) de um programa (ou algoritmo), um valor pode ser representado na forma de constante ou de variável. A constante é representada em um programa diretamente pelo seu valor (que não se altera durante a execução do programa). 4 Variáveis A variável é representada no texto de um programa por um nome que corresponde a uma posição da memória que contém o seu valor. Em tempo de execução, o nome da variável permanece sempre o mesmo e seu valor pode ser modificado. Nome de variável: é criado pelo programador e deve ser iniciado por uma letra que pode ser seguida por tantas letras, algarismos ou sublinha quanto se desejar e é aconselhável que seja significativo do valor que ela representa. 5 Variáveis Exemplos de nomes de variáveis: Certo: nome, telefone, salario_func, x1 Errado: 1ano, sal/hora, _nome 6 Tipos de Dados Todo valor (constante ou variável) de um programa tem um tipo de dados associado. Um tipo de dados é constituído de dois conjuntos: um conjunto de objetos (domínio de dados) e de um conjunto de operações aplicáveis aos objetos do domínio. Toda linguagem de programação tem embutido um conjunto de tipos de dados, também chamados de implícitos, primitivos ou básicos. Tipos de dados básicos: inteiro, real, caracter e lógico. Em C, os tipos acima são, respectivamente, int, float/double e char. Não há o tipo lógico em C. 7 Tipos de Dados Básicos inteiro: Domínio: conjunto dos inteiros. Operações: usam dois argumentos inteiros e, de acordo com o resultado são: +, -, *, div, e mod: resultado inteiro /: resultado real <, , =, >, e : resultado lógico real: Domínio: conjunto dos reais. Operações: usam dois argumentos reais e, de acordo com o resultado são: +, -, * e /: resultado real <, , =, >, e : resultado lógico 8 Tipos de Dados Básicos caracter: Domínio: conjunto de caracteres alfanuméricos. Operações: usam dois argumentos do domínio e fornecem resultado lógico: <, , =, >, e lógico: Domínio: {verdadeiro, falso}. Operações: usam dois argumentos do domínio e fornecem resultado lógico: Conectivos lógicos: conjunção (e, ^), disjunção (ou, ), disjunção exclusiva (xou, ), negação (não, ). A negação trabalha com somente um argumento. Conectivos relacionais: = e . 9 === != >= <= %Mod CPseudolinguagem A tabela abaixo apresenta os operadores que são diferentes em C em relação a pseudolinguagem. O símbolo = em C é utilizado para atribuição, correspondendo ao do português estruturado. Não há correspondente direto em C para o operador div . 10 O tipo básico associado a uma constante fica determinado pela própria apresentação da constante. Tipos de Constantes e de Variáveis Exemplos: 7 cte. inteiro 7.0 ou 7. cte. real 7 cte. caracter falso cte. lógico Para as variáveis, devem ser feitas no início do programa (ou de um bloco) as declarações (de tipo) de variáveis. 11 Sintaxe: <tipo> nome (s); Implicações da declaração de uma variável: Alocação de um espaço na memória que possa conter um valor do seu tipo. Associação do endereço dessa posição da memória ao nome da variável. Declarada uma variável, toda vez que ela for referenciada em qualquer comando do programa, o computador vai trabalhar com o conteúdo de seu endereço, que é o valor da variável. Exemplos: caracter f, n; inteiro idade; real a, b, X1; lógico vendido; 12 1) Indique quais das constantes abaixo são do tipo inteiro: ( )1000 ( ) 0 ( ) -900 ( )verdadeiro ( )-456 ( )34 ( )-1.56 2) Indique quais das constantes abaixo são do tipo real: ( ) -678.0 ( ) 0.87 ( ) -9.12 ( ) falso ( ) -456.0 ( ) Cinco ( ) -1.56 3) Indique quais das constantes abaixo são do tipo lógico: ( ) -678.0 ( ) 0.87 ( ) -9.12 ( )falso ( )-456 ( ) Verdadeiro ( )-1.56 13 Exercícios Indique com um X os nomes válidos para uma variável: ( ) endereco ( ) 21brasil ( ) nome_usuario ( ) nome*usuario ( ) cidade3 ( ) #cabec 14 Comando de atribuição Sintaxe: variável expressão; Semântica: atribuir à variável o resultado da expressão. Expressões aritméticas: fornecem resultado numérico (inteiro ou real). Operações básicas: +, -, *, / Exponenciação: potencia( A + B , N) Funções matemáticas comuns: sen (X), cos (X), abs (X), raiz (X), arctan (X), exp (X), log (X), ln (X) etc. Operadores para inteiros: M mod I: resto da divisão inteira de M por I M div I: quociente da divisão inteira de M por I 15 Comando de atribuição Expressões lógicas: fornecem resultado lógico. Conectivos relacionais: (<, , =, >, e ) Conectivos lógicos: Conjunção: e, Disjunção: ou, Disjunção Exclusiva: xou, Negação: não, VFFFFF VVVFVF FVVFFV FFVVVV não AA xou BA ou BA e BBA Tabela Verdade: Sejam A e B duas expressões lógicas. 16 Comando de atribuição Prioridade de execução das operações em uma expressão: 1º. Parênteses (dos mais internos para os mais externos) 2º. Expressões aritméticas, seguindo a ordem: funções, * e /, + e 3º. Comparações: <, , =, >, e 4º. não 5º. e 6º. ou e xou 7º. Da esquerda para a direita quando houver indeterminações. 17 Comentários inteiro maior; //maior valor lido //ler os valores das variáveis A, B, C Pseudocomando leia os valores das variáveis A, B, C ; Classifique os valores lidos em ordem crescente ; Comandos de entrada e saída leia (a, x); //serão lidos os valores das variáveis a, x nesta ordem imprima ( Valor de N = , n, Fatorial de N = , fat); 18 Bloco (1) Conjunto de comandos entre { } (2) Pode-se declarar variáveis em seu interior. (3) Delimitar o escopo das variáveis. { <declaração de variáveis>; <comandos>; } 19 1. Seqüência Simples C1; C2; ... Cn; Exemplo: leia (X, Y); A X + Y; B X Y; imprima (A, B); Semântica: o controle de fluxo de execução entra na estrutura, executa comando por comando, de cima para baixo e sai da estrutura. Sintaxe: Exemplo em C: scanf( %d %d , &X, &Y); a = x + y; b = x - y; printf ( %d %d , a, b); 20 Até agora, foram estudados os seguintes recursos visando especificamente a construção de algoritmos: Conceito de Constante, Variável e Tipos de Dados. Tipos de Dados Básicos. Declaração de Variáveis. Construção de Expressões (Aritmética e Lógica). Sintáxe e Semântica dos Comandos de Atribuição e de Entrada e Saída. Seqüência Simples (primeiro dos três tipos de estruturas de controle). Já é possível criar alguns algoritmos simples, bastando adotar um método de desenvolvimento. 21 Métodos de Criação de Programas a) Método Direto 1. Entender o problema (análise do enunciado). 2. Descrição de variáveis: lista contendo para cada variável, o seu nome, uma descrição de seu objetivo e o seu tipo. Iniciar a lista pelos dados de entrada e pelos resultados a produzir. 3. Estudo de métodos: estabelecer (pelo menos) um método para obtenção de cada resultado pedido e para cada controle de processamento. Caso o método escolhido necessite utilizar novas variáveis, incluí-las na lista de descrição de variáveis. 22 Métodos de Criação de Programas a) Método Direto 4. Elaborar um algoritmo baseado no estudo de métodos, observando a seguinte seqüência: principal { definição de novos tipos; declaração de variáveis; inicialização de variáveis; corpo do algoritmo controlando: leitura; processamento; saída; } 23 Métodos de Criação de Programas a) Método Direto 5. Testar o algoritmo, considerando, se possível, todas as alternativas de entrada. 6. Programa:traduzir o algoritmo para uma linguagem de programação e testá-lo exaustivamente no computador. 7. Documentação: o conjunto de documentos produzidos ao longo do método direto constitui a primeira documentação técnica do programa. 24 Métodos de Criação de Programas b) Método dos Refinamentos Sucessivos Inicialmente, manter um nível mais alto de abstração (atenção em o que fazer e não em como fazer). Dispensa-se o estudo de métodos e parte-se logo para a elaboração do algoritmo sendo que cada tarefa lógica distinta será representada por um pseudocomando. 25 Métodos de Criação de Programas b) Método dos Refinamentos Sucessivos A primeira versão do algoritmo é rapidamente obtida pela listagem de alguns poucos pseudocomandos que deverão ser detalhados em refinamentos posteriores (em função de outros pseudocomandos ou em função da própria pseudolinguagem). Depois que todos os pseudocomandos já estiverem detalhados em termos da pseudolinguagem, pode-se juntar as partes montando a versão final e completa do algoritmo. 26 Métodos de Criação de Programas c) Método Misto Controles de caráter geral e as ações mais simples são desenvolvidas diretamente e a técnica de refinamentos sucessivos fica somente para as ações lógicas consideradas mais complexas. Observação: Em qualquer dos métodos, pode-se desenvolver as ações lógicas bem definidas na forma de procedimentos (ou funções). A utilização destes módulos funcionais constitui uma técnica (programação modular) que geralmente diminui o esforço do programador e aumenta a qualidade de seus programas. 27 Exercícios 1. Desenvolver os algoritmos a seguir, utilizando o método direto. a) Ler uma temperatura em graus Celsius e apresentá- la convertida em graus Fahrenheit. A fórmula de conversão: F (9*C+160)/5 b) Calcular e apresentar o volume de uma lata de óleo cilindrica, a partir da leitura do raio da base e da altura. c) Ler os valores do comprimento, da largura e da altura de uma caixa, calcular e imprimir o seu volume. 28 2. Construir um algoritmo para ler 5 valores inteiros, calcular e imprimir a soma desses valores. 3. Construir um algoritmo para ler 6 valores reais, calcular e imprimir a média aritmética desses valores. 4. Fazer um algoritmo para gerar e imprimir o resultado do número H, sendo H = 1 + 1/2 + 1/3 + 1/4 + 1/5. 5. Construa em C os algoritmos acima. DCC 120 Laboratório de Programação 30 Tipos de dados Impressão Formatação da Impressão Variáveis Entrada de Dados 31 São nomes usados para se fazer referência a variáveis, funções, rótulos e vários outros objetos definidos pelo usuário. Exemplos: a, b, peso, i, contaCorrente, saldo, x1, x2...... OBS: A linguagem C é case sensitive, ou seja, as letras maiúsculas diferem das minúsculas. 32 Quando você declara um identificador dá a ele um tipo. Um tipo de objeto de dados determina como valores de dados são representados, que valores pode expressar, e que tipo de operações você pode executar com estes valores. 1.7E-308 a 1.7E+308 (15 casas de precisão)8 bytesdouble 3.4E-38 a 3.4E+38 (6 casas de precisão)4 bytesfloat -2147483648 a 21474836474 bytesint -128 a 127 (incluindo letras e símbolos)1 bytechar FaixaEspaço que ocupa na memóriaTipo Obs.: Alguns sistemas trabalham com valores inteiros de 2 bytes, com faixa de -32768 a 32 767. 33 A exibição dos resultados do processamento e de mensagens é feita através da função pré-definida printf(), cujo protótipo está contido também no arquivo stdio.h. Sua sintaxe é a seguinte: printf("Expressão" , Lista de argumentos ); Onde: Expressão: contém mensagens a serem exibidas, códigos de formatação que indicam como o conteúdo de uma variável deve ser exibido e códigos especiais para a exibição de alguns caracteres especiais. Lista de argumentos: pode conter identificadores de variáveis, expressões aritméticas ou lógicas e valores constantes. 34 #include <stdio.h> int main( ) { printf("Estou aprendendo a programar em C"); return 0; } 35 ponto flutuante com dupla precisãodouble%lf uma cadeia de caracteres.........%s um número na notação científicafloat ou double%e um número em ponto flutuantefloat%f um inteiroint%d ou %i um único caracterechar%c Elemento armazenadoTipoCódigo #include <stdio.h> int main( ) { printf("Valor recebido foi %d" ,10); return 0; } 36 #include <stdio.h> int main() { printf("Caracter A: %c" , 'A'); return 0; } #include <stdio.h> int main() { printf("Valor inteiro %d e um float %f" ,10 ,1.10); return 0; } 37 #include <stdio.h> int main() { printf("Minha string: %s", "Entendi tudo!!!! "); return 0; } #include <stdio.h> int main() { printf("Deveria imprimir um float, "); printf("mas mandei imprimir um inteiro: %d" ,1.10); return 0; } 38 Impressão de Códigos Especiais #include <stdio.h> int main() { printf("\t\tx\n"); printf("\tx\t\tx\n"); printf("\t\tx\n"); return 0; }exibe o caractere %%% exibe o caractere \\\ exibe o caractere "\" emite um sinal sonoro (beep)\a leva o cursor para a próxima página\f executa um retrocesso\b executa uma tabulação\t leva o cursor para a próxima linha\n AçãoCódigo 39 #include <stdio.h> int main() { printf("Default: %f \n",3.1415169265); printf("Uma casa: %.1f \n",3.1415169265); printf("Duas casas: %.2f \n",3.1415169265); printf("Tres casas: %.3f \n",3.1415169265); printf("Notacao Cientifica: %e \n",3.1415169265); return 0; } Por default, a maioria dos compiladores C exibem os números de ponto flutuante com seis casas decimais. Para alterar este número podemos acrescentar .n ao código de formatação da saída, sendo n o número de casas decimais pretendido. 40 #include <stdio.h> int main() { printf("Valor: %d \n",25); printf("Valor: %10d \n",25); return 0; } O programa pode fixar a coluna da tela a partir da qual o conteúdo de uma variável, ou o valor de uma constante será exibido. Isto é obtido acrescentado-se um inteiro m ao código de formatação. Neste caso, m indicará o número de colunas que serão utilizadas para exibição do conteúdo. 41 1. Fazer um programa que imprima o seu nome. 2. Modificar o programa anterior para imprimir na primeira linha o seu nome, na segunda linha a sua idade e na terceira sua altura. 3. Imprimir o valor 2.346728 com 1, 2, 3 e 5 casas decimais. 42 O nome de uma variável (identificador) é formado por um ou mais caracteres, sendo que: o primeiro caractere é uma letra ou sublinha ( _ ); os outros caracteres podem ser letras, algarismos ou sublinha ( _ ). Exemplos: a) Nomes válidos: L a de op1 V9a Lista_Notas a_2 p56 A1 _2A b) Nomes Inválidos: x+ t.6 43x &ah $dolar Lista-Notas n! %p Em C, letras maiúsculas e minúsculas são diferentes. Os seguintes nomes são distintos: PESO Peso peso peSo Uma variável não pode ter o mesmo nome de uma palavra-chave de C, como por exemplo: main, cout, int, float, char, short, return, case, void 43 Declaração de Variáveis As variáveis só podem armazenar informações ou dados sempre de um mesmo tipo (inteiro, real, caractere ou char). Na linguagem C, a declaração de variáveis obedece a seguinte sintaxe: <tipo> <nome_var>; ou <tipo> <nome_var1>, <nome_var2>, ..... ,<nome_varn>; É importante não esquecer que quando se declara uma variável, um espaço num determinado endereço na memória é alocado para armazenar um dado que obrigatoriamente tem que ser do mesmo tipo que o da variável. Toda e qualquer variável deve ser declarada e sua declaração deve ser feita antes de sua utilização no programa. 44 Declaração de Variáveis - Exemplo Exemplos: int a,b, c; char letra, d, e; float f1; float f2,f3; Marque as declarações válidas: ( ) int a, ( ) char c; ( ) int a,b,a; ( ) float f1,f2,f3,4f; ( ) int meu_nro; ( ) float leitura_sensor; 45 O operador de atribuição em C é o sinal de igual = Sintaxe: <variavel> = <expressão>; Exemplos: int a,b,c,d; a = 5; c = 7; b = a; d = a + b + c; ou int a=5; int c=7; int b,d;b=a; d=a+b+c; 46 4Resto da divisãoBinário% 1Inversão do sinalUnário- 1Manutenção do sinalUnário+ 2DecrementoUnário-- 2IncrementoUnário++ 3DivisãoBinário/ 3MultiplicaçãoBinário* 5SubtraçãoBinário- 5AdiçãoBinário+ PrioridadeOperaçãoTipoAritméticos 47 Exemplos: a = a + b; a = a + 4; a = b / 2; a = 4 * 2 + 3; // qual o valor final de a? b = 2 * 3 2 * 2; // qual o valor final de b? a++; // similar a a = a + 1; b--; // similar a b = b 1; 48 Diferente!= Igual= = Menor ou igual<= Not (não)!Menor que< Or (ou)||Maior ou igual>= And (e)&&Maior que> LógicosRelacionais 49 Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão (teclado). Sua sintaxe: scanf("expressão de controle", argumentos); Entendendo o scanf: ...... int a; ....... scanf ( %d , &a); Operador utilizado para obter o endereço de memória da variável. 50 #include <stdio.h> int main() { int num; printf("Digite um valor: "); scanf("%d",&num); printf("\nO valor digitado foi %d.",num); return 0; } 51 #include <stdio.h> int main() { int n1,n2,soma; printf("Digite dois valores: "); scanf("%d",&n1); scanf("%d",&n2); soma = n1 + n2; printf("\n%d + %d = %d.",n1,n2,soma); return 0; } 52 1. Ler uma temperatura em graus Celsius (C) e apresentá- la convertida em graus Fahrenheit. A fórmula de conversão é F = (9*C+160)/5. 2. Calcular e apresentar o volume de uma lata de óleo, utilizando a fórmula: volume = 3.14159*raio*raio*altura. 3. Elaborar um programa que calcule e apresente o volume de uma caixa retangular, por meio da fórmula volume = comprimento*largura*altura.
Compartilhar