Construção de Algoritmos AULA 02

Slides:



Advertisements
Apresentações semelhantes
Pseudo-código: sintaxe
Advertisements

Estruturas de Repetição
Algoritmo e Programação
Construção de Algoritmos AULA 07
Programação para Engenharia I
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
Introdução a Programação Renata Freire
Introdução à Computação - Jorge Macêdo
Construção de Algoritmos 1
Programação para Engenharia I
Tópicos Preliminares na Linguagem C
Disciplina: AAM Profa. Ana Watanabe 03/13 vol.2
Lógica de Programação Módulo II
Linguagem C Estruturas de Seleção.
Linguagem C Estruturas de Sequências
Variável Variável: “objecto” que pode assumir diversos valores;
Introdução a Linguagem de Programação C
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Rodrigo Cristiano Silva
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
Comandos de Repetição Comando Para-Faça
Aula prática 6 Vetores e Matrizes
Construção de Algoritmos
Linguagem de Programação II Parte IV
CADEIA DE CARACTERES (Strings)
Construção de Algoritmos Professor: Aquiles Burlamaqui Construção de Algoritmos AULA 07 Aquiles Burlamaqui UERN
Construção de Algoritmos AULA 03
Introdução a Linguagem de Programação C
Introdução a Programação
PROGRAMAÇÃO I UNIDADE 2.
PCI- Introdução a linguagem C
Operadores Relacionais, Lógicos e comandos de condição
Linguagem de programação
Instituto Federal de Santa Catarina
Programação em C++ Compiladores
Aula 6 - Estruturas de Controle
Algoritmo e Programação
Linguagem de Programação JAVA
Faculdade Talentos Humanos - FACTHUS - Algoritmo I - Rogério Rodrigues
1.2 Variaveis - conceito Podemos imaginá-la como uma caixa com tampa que pode conter algum dado. Se precisarmos conhecer esse dado, abrimos a tampa da.
Fundamentos de programação
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
3. Introdução à Linguagem C
Introdução a Linguagem de Programação C
Tipos de Dados Operadores
Algumas notas sobre a linguagem de programação C
MSc. Marcelo Torres – professortorres.com.br. Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br.
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Wellington Felix.  Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix  C++ é uma extensão da.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Fundamentos de linguagens de programação
Linguagem C.
Algoritmos.
ALGORITMIA. ALGORITMO Conjunto de instruções ou acções que ao serem executadas, permitirão realizar uma determinada tarefa.
DSC/CCT/UFCG Carga Horária: 60 h Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel.
Programação de Computadores - 1
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
DSC/CCT/UFCG Carga Horária: 60 h Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Profa. Maria Augusta Constante Puget
Profa. Maria Augusta Constante Puget
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Profº Antonio Carlos Marcelino de Paula
Programação estruturada unidade 2
Sistemas para Internet Algoritmos e Lógica de Programação
Lógica de Programação Aula 06 Prof. Marcelo Marcony.
Transcrição da apresentação:

Construção de Algoritmos AULA 02 Aquiles Burlamaqui UERN 2007.1 Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui …previously Apresentação da Disciplina Definição de algoritmo Conceitos de memória, variáveis e constantes. Tipos básicos de dados Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Variáveis Guardar dados Nome Tipo Informação Pseudocódigo <Tipo>:<Lista de Variáveis Ex:Inteiro: idade Real : media,n1,n2,n3,n4,mf Lógico : passou, flag Literal : letra Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Variáveis Existem algumas regras básicas que regulam a o batismo de variáveis. Estas regras básicas são: Todo nome só pode conter letras e dígitos; O caractere "_" é contado como uma letra; Todo primeiro caractere deve ser sempre uma letra; Letras maiúsculas e minúsculas são consideradas caracteres diferentes; Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Constantes Reserva um espaço na memória acessado através do seu endereço que é vinculado no algoritmo a um nome; Esse espaço possui tamanho necessário para guardar seu tipo de dado, e guarda um valor fixo do início ao final do programa; Sintaxe: Constante <nome_da_constante> = <valor>; Ex: Constante pi = 3,14; Professor: Aquiles Burlamaqui

Conteúdo Programático Unidade I Fundamentos de Lógica de Programação Algoritmo (metalinguagem) Conceitos de memória, variáveis e constantes. Tipos básicos de dados Operadores aritméticos, relacionais e lógicos. Comandos básicos de entrada e saída e atribuição Conceito de bloco de comandos Estruturas de controle de fluxo – condicionais (se, se-senão e caso) Estruturas de controle de fluxo – repetições (para, enquanto e repita-enquanto) Estruturas de Dados Homogêneas (vetores e matrizes) Unidade II Estruturas de Dados Heterogêneas (registros) Modularização Variáveis locais e globais Funções Passagem de parâmetros por valor e por referência Funções recursivas Biblioteca de funções Unidade III Algoritmos de Busca Ponteiros Conceitos Operador endereço e operador de acesso indireto Alocação dinâmica de memória Arquivo Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Expressões Expressão é uma combinação de variáveis, constantes e operadores que, uma vez avaliada, resulta num valor Operadores Quanto ao número de operandos Unários Binários Quanto ao tipo de dado Operadores Aritméticos Operadores Lógicos Operadores Literais Operadores Relacionais Professor: Aquiles Burlamaqui

Operadores Aritméticos Operador Tipo Operação Prioridade + binário adição 4 - “ subtração 4 * “ multiplicação 3 / “ divisão 3 ** “ exponenciação 2 + unário manutenção de sinal 1 - “ inversão de sinal 1 Professor: Aquiles Burlamaqui

Operadores Aritméticos Vamos considerar alguns exemplos para mostrar como estas regras são aplicadas. Considere as seguintes variáveis: A=2.0 B=4.0 C=1.0 Vamos então analisar expressões com estas variáveis e seus resultados. A*B-C A*(B-C) B+A/C+5 (B+A)/(C+5) Professor: Aquiles Burlamaqui

Operadores Aritméticos 1)5x3 + 7x2 – 3x – 1 Resp.: 5.0*x**3 + 7.0*x**2 – 3.0*x –1.0 2)x0 + v0t – 1 gt2 2 Resp.:xo + vo*t – 0.5*g*t**2 Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Operadores Lógicos Operador Tipo Operação Prioridade .OU. binário disjunção 3 .E. binário conjunção 2 .NÃO. unário negação 1 Professor: Aquiles Burlamaqui

Operadores Relacionais Operador Comparação = igual <> diferente < menor <= menor ou igual > maior >= maior ou igual Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Operadores Literais Não há padronização para seus operadores. Vamos considerar apenas o operador de concatenação ( + ) . Exemplo: “sonha” + “dor” resulta “sonhador” Professor: Aquiles Burlamaqui

Avaliação de Expressões Regras: Observar a prioridade dos operadores. Se houver empate, considera-se a expressão da esquerda para a direita. Os parênteses alteram a prioridade, forçando a avaliação da subexpressão em seu interior. Professor: Aquiles Burlamaqui

Instruções Primitivas Entrada Saída Atribuição Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Entrada Sintaxe : Leia ( < lista_de_variáveis > ) Semântica : Os dados são fornecidos ao computador por meio de um dispositivo de entrada e armazenados nas posições de memória das variáveis cujos nomes aparecem na lista. Exemplo: Leia ( x ) Leia ( a , b , c ) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Saída Sintaxe : Escreva ( < lista_de_expressões > ) Semântica : Os argumentos são enviados para o dispositivo de saída. No caso de uma lista de variáveis, o conjunto de cada uma delas é pesquisado na posição de memória correspondente a variável. No caso de argumento constante(número, literal ou lógico) este é enviado diretamente ao referido dispositivo. E no caso de expressões, após sua avaliação, segue como uma constante. Exemplos: Escreva (“Programa elaborado pelo aluno Thiago.”) Escreva (“Digite um número inteiro positivo:”) Escreva (“Lados do triângulo: “, L1 , L2 , L3 ) Escreva (“Area do circulo = “, pi*r**2) Escreva (“Area = “, x*y, “Perimetro = “, 2*(x + y)) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Saída Regras Básicas (Interface com o Usuário: fase de execução) Toda vez que um programa estiver esperando que o usuário forneça a ele um determinado dado (operação de leitura), ele deve antes enviar uma mensagem dizendo o que o usuário deve digitar, por meio de um instrução de saída. Antes de enviar qualquer resultado ao usuário, um programa deve escrever uma mensagem explicando o significado do mesmo. Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Atribuição É a principal maneira de se armazenar uma informação numa variável. Sintaxe :< nome_da_variável >  < expressão > Semântica : 1) avaliação da expressão 2) armazenamento do valor resultante na posição de memória correspondente à variável que aparece à esquerda do comando. Importante : Deve haver compatibilidade entre o tipo de dado resultante da avaliação da expressão e o tipo de dado da variável ( a não ser, propositadamente, com tipos numéricos). Professor: Aquiles Burlamaqui

Controle de Fluxo de um Programa Comando Composto Estrutura Seqüencial Estrutura de Decisão Se Caso Estrutura de Repetição Para Enquanto Repita Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Comando Composto É um conjunto de comandos simples como atribuição, entrada, saída ou algumas construções (estruturas) apresentadas a seguir. Ex: Escreve((a+b)/15) ou bas =(- b + (b * b – 4.* a * c)**0.5)/(2 * a) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Estrutura Seqüencial Cada comando é executado somente após o término do comando anterior. Ex: Escreve(“Qual o valor da conta?”) Leia(b); a  b * 0.1 Escreve(“10 % do garçom dá:”+a) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Estrutura de Decisão Classificação quanto ao número de condições: uma condição ( decisão simples ) : estrutura do SE várias condições ( decisão múltipla ) : estrutura do ESCOLHA Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Se Sintaxe: Se ( < condição > ) então Se ( < condição > ) então < comando1 > < comando1 > senão Fim_se < comando2 > Fim_se Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Se Aninhados Algoritmo Max_min Real: a, b, c, max, min Início Escreva (“Digite tres numeros: “) Leia (a, b, c) Se ( a < b ) então Se ( b < c ) então min  a max  c senão max  b Se ( a < c ) então min  a min  c Fim_se Se ( b > c ) então min  c max  a min  b Se ( a > c ) então max  c Escreva (“Maior numero = “, max) Escreva (“Menor numero = “, min) Fim Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Escolha...Caso Sintaxe: Escolha(<expressão>) Caso(<condição1>)faça <comando1> Caso(<condição2>)faça <comando2> . Caso(<condiçãot>)faça <comandot> senão <comandok> Fim_escolha Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Escolha...Caso Algoritmo Calculadora Real: num1,num2 Literal[2]: op Inicio Escreva(“Digite um numero, o operador e outro numero: “) Leia(num1,op,num2) Escolha(op) Caso(op=”+”)faça Escreva(num1,op,num2,” =”, num1+num2) Caso(op=”– “ )faça Escreva(num1,op,num2,” =”, num1 – num2) Caso(op=”* “)faça Escreva(num1,op,num2,” =”,num1* num2) Caso(op=” / ”)faça Se(num2<>0)então Escreva(num1,op,num2,” =”,num1/ num2) Senão Escreva(“Não existe divisão por zero.”) Fim_se Escreva(“Operador desconhecido.”) Fim_escolha Fim Professor: Aquiles Burlamaqui

Estrutura de Repetição Tipos Contados Para – Faça Condicionais ENQUANTO – FAÇA REPITA – ATÉ Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Para- Faça Sintaxe: Para <var> de <ini> até <fim> passo <inc> faça <comando> Fim_para Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Algoritmo Fatorial Inteiro: num,k,fat Início Escreva(“Digite um número:”) Leia(num) Se(num >= 0)então fat  1 Para k de 2 até num passo 1 faça fat  fat*k Fim_para Escreva(“Fatorial de”, num, “ igual a “ ,fat) Senão Escreva(“Não existe fatorial de número negativo.”) Fim_se Fim Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Enquanto - Faça Sintaxe: Enquanto (<expressão lógica>)faça <comando> Fim_enquanto Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Algoritmo MDC Inteiro: a, b Início Escreva (“Digite dois numeros inteiro positivos: “) Leia (a,b) Se ( a>0 .e. b>0 ) então Enquanto ( a< > b ) faça Se ( a > b ) então a  a – b senão b  b – a Fim_se Fim_enquanto Escreva (“ mdc = “, a) Senão Escreva (“Dados incorretos.”) Fim Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Repita - Até Sintaxe: Repita <comando> Até (<expressão lógica>) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Algoritmo Divisores Inteiro: num, div Início Repita Escreva (“Digite um numero inteiro positivo: “) Leia (num) Até (num > 0) Escreva (“Divisores do número “, num) div  1 Se ( num / div * div = num) então Escreva (div) Fim_se div  div + 1 Até (div > num) Fim Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Linguagem C Professor: Aquiles Burlamaqui

Linguagem de Programação C Criada em 1972 por Dennis Ritchie Inicialmente para uso no UNIX Características Linguagem de programação imperativa Apenas 32 palavras-chave Estruturação modular, módulos compilados separadamente Ponteiros como tipo de dado Passagem de argumentos por valor Facilidade de trabalhar os dados em bits Nível intermediário entre nível de máquina e alto nível Professor: Aquiles Burlamaqui

Linguagem de Programação C Uso: Desenvolvimento de software de sistemas operacionais: Drivers; Kernel; Api; Etc. Desenvolvimento de sistemas embutidos; Professor: Aquiles Burlamaqui

Palavras reservadas do ANSI C auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Professor: Aquiles Burlamaqui

Estrutura básica de um programa em C /* Modelo de programa em C */ int main() { return(0); } Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Programa Olá Mundo Copie o texto a seguir em um editor de textos, e salve com um nome qualquer, mas extensão .c /* Programa Olá Mundo */ #include <stdio.h> int main() { printf(“Olá mundo!”); return(0); } Professor: Aquiles Burlamaqui

Compilando um código em C Após escrever e salvar um código em c, vá para o terminal e digite: gcc <nome_do_arquivo.c> -o <nome_do_programa> Em seguida, digite no terminal: ./<nome_do_programa> Observe o resultado da saída no terminal. Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Comentários Por área selecionada /* - início da área de comentário <texto comentado> ... */ - fim da área Por linha // <linha comentada> Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Tipos Primitivos Tipo Especificação Bytes Valores char Armazena um byte com sinal. 1 -128 a 127 unsigned char Armazena um byte sem sinal. 0 a 255 int Inteiro. 4 -2,147,483,648 a +2,147,483,647 short int Inteiro curto. 2 -32,768 a +32,767 long int Inteiro longo. Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Tipos Primitivos Tipo Especificação Bytes Valores unsigned int Inteiro sem sinal. 4 0 a +4,294,967,295 unsigned short Inteiro curto sem sinal. 2 0 a +65,535 unsigned long Inteiro longo com sinal. float Real. 3.4E-38 a 3.4E+38 double Real com dobro de precisão. 8 1.7E-308 a 1.7E+308 long double Real com presisão de 19 dígitos. 10 3.4E-4932 a 3.4E+4932 void Nenhum valor. Professor: Aquiles Burlamaqui

Declaração de constantes e variáveis tipo <identificador>; ex: int x; Constantes const tipo <identificador>=<valor>; ex: const int numero=5; #define <identificador> valor ex: #define numero 5 Professor: Aquiles Burlamaqui

Operadores Aritméticos Descrição + Soma - Subtração * Multiplicação / Divisão (inteira ou real) % Resto da divisão inteira sinalização negativa Professor: Aquiles Burlamaqui

Operadores de incremento e decremento ++ Decremento -- Ex: int num1, num2; num1=5; num2 = num1++; //num1=6; num2=5; num2 = ++num1; //num1=6; num2=6; num2 = num1--; //num1=4; num2=5; num2 = -- num1; //num1=4; num2=4; Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Operadores Binários Operam sobre os bits de um dado Operador Operação & & E || Ou ^ Ou-exclusivo >> Deslocamento para a direita << Deslocamento para a esquerda ~ Não Professor: Aquiles Burlamaqui

Operadores Relacionais Retornam 1 se a expressão for verdadeira, e 0 se for falsa. Operador Operação == Igual != Diferente < Menor > Maior <= Menor ou igual >= Maior ou igual Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Operadores Lógicos E && ex: (5 >= 7) && ( (4/2) == 2) Ou || ex: (5 >= 7) || ( (4/2) == 2) Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Atribuição Atribuição simples <variável> = valor; ex: int num1=2; Atribuição composta <variável> <op>= <valor>; para <op> = {+, -, *, /, %, <<, >>, &, |, ^} num1 += 1; Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Entrada e Saída Entrada scanf(“ <%tipo>”, &<variável>); Saída printf(“texto”); printf(“texto %<tipo1> texto %<tipoN> texto”, <variável 1>,...,<variável N>); Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui %tipos Símbolo Significado. %d Inteiro. %u Inteiro sem sinal. %f Real. %e Real no formato exponencial. %g Escolher %e ou %f de acordo com o tamanho do dado. %c Caractere. %s Cadeia de caracteres. %o Número em octal (sem sinal). %x Número em hexadecimal (sem sinal). Professor: Aquiles Burlamaqui

Professor: Aquiles Burlamaqui Exercício Escreva um programa em C que leia um dado do tipo inteiro e em seguida escreva o dobro do seu valor. Escreva um algoritmo que leia três números e imprima o maior deles. Escreva um algoritmo que leia três números e os imprima em ordem crescente. Escreva um algoritmo que leia 10 números e imprima o maior deles. Escreva um algoritmo que leia uma certa quantidade de números e imprima o maior deles e quantas vezes o maior número foi lido. A quantidade de números a serem lidos deve ser fornecida pelo usuário. Assuma que o usuário sempre fornecerá um número positivo. Modifique o problema anterior de modo que caso o usuário digite um número negativo o programa peça novamente a quantidade de números e repita este procedimento até que o usuário forneça um número positivo. Modifique o problema anterior para permitir que o usuário possa em caso de erro ter três tentivas. Na terceira tentativa o programa deve terminar avisando ao usuário a razão da interrupção. Escreva um algoritmo que leia um número inteiro entre 100 e 999 e imprima na saída cada um dos algarismos que compõem o número. Uma empresa paga R10.00 por hora normal trabalhada e R$ 15.00 por hora extra. Escreva um programa que leia o total de horas normais e o total de horas extras trabalhadas por um empregado em um ano e calcule o salário anual deste trabalhador. Assuma que o trabalhador do exercício anterior deve pagar 10% de imposto se o seu salário anual for menor ou igual a R$ 12000.00. Caso o salário seja maior que este valor o imposto devido é igual a 10% sobre R$ 12000.00 mais 25% sobre o que passar de R$ 12000.00. Escreva um programa que calcule o imposto devido pelo trabalhador. Professor: Aquiles Burlamaqui