Engenharia Elétrica - Computação



Documentos relacionados
7. Estrutura de Decisão

Conceitos básicos da linguagem C

INTRODUÇÃO À LINGUAGEM C++

Convertendo Algoritmos para a Linguagem C

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Linguagem de Programação I

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Linguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo

ALGORITMOS E FLUXOGRAMAS

Algoritmos e Programação

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Estrutura Condicional em Java

Estrutura de Dados Básica

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

LTP-IV. Prof. Dr. Silvio do Lago Pereira. Departamento de Tecnologia da Informação Faculdade de Tecnologia de São Paulo

9 Comandos condicionais

Programação: Estruturas de seleção

Linguagem C. TGSI Lógica de Programação / Linguagem C Prof. Marcos Roberto

CURSO DE INFORMÁTICA. Algoritmos. Parte 3. Ricardo José Cabeça de Souza

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Lógica de programação Instrução Algoritmo Diferença entre algoritmo e programa

Variáveis e Comandos de Atribuição

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

5 Apresentando a linguagem C

Algoritmos e Programação Parte Teórica

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

Módulo 1 -Algoritmos e Programação

LINGUAGEM C. Estrutura básica de um programa

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Java Como Programar, 8/E

1 Funções básicas de implementação de arquivos

O COMPUTADOR. Introdução à Computação

CURSO DE INFORMÁTICA. Algoritmos. Parte 4. Ricardo José Cabeça de Souza

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Algoritmos e Programação Estruturada

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Resumo da Matéria de Linguagem de Programação. Linguagem C

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

Programação: Tipos, Variáveis e Expressões

10/02/2015. Introdução. Podemos classificar os tipos de dados a serem processados em dados e instruções Dados: Algoritmos e Lógica de Programação

Falso: F = Low voltage: L = 0

Introdução a Programação

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Algoritmos DCC 119. Introdução e Conceitos Básicos

Introdução à Programação

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

Descrição do Produto. Altus S. A. 1

AULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Exemplos: Pág 5 FUNÇÕES. UC Extensão - Excel Docente: André Luiz Silva de Moraes OPERADORES BOOLEANOS

Introdução a Computação

INF 1007 Programação II

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Linguagem de Programação

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

MANUAL DA SECRETARIA

Implementando uma Classe e Criando Objetos a partir dela

Linguagens de Programação

9.1.2 Laços Controlados por Entrada: Contador

Algoritmos e Técnicas de

LINGUAGEM C UMA INTRODUÇÃO

Acessando o SVN. Soluções em Vendas Ninfa 2

Representação de Algoritmos - Linguagens de Programação

Programação para Computação

Diagrama de fluxo de dados na Plataforma Vicon SAGA. Terminologias de bancos de dados: Banco de Dados, Tabela, Campos, Registros

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Programando em C++ Histórico da Linguagem C

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Painel de Mensagens TXT TXT TXT Manual do Usuário

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

JavaScript (ou JScript)

Sessão 2 UFCD 0804 Algoritmos

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI

Programação Orientada a Objeto

O conteúdo deste documento é de propriedade intelectual exclusiva da GVDASA Sistemas e está sujeito a alterações sem aviso prévio.

Portal do Projeto Tempo de Ser

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Usando o do-file editor Automatizando o Stata

Aula 2 Sistemas de Numeração (Revisão)

Computação II Orientação a Objetos

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

O Sistema foi inteiramente desenvolvido em PHP+Javascript com banco de dados em MySQL.

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

Transcrição:

Universidade de Mogi das Cruzes Engenharia Elétrica - Computação Profa. MSc. Viviane Guimarães Ribeiro Mogi das Cruzes, SP 2012

Sumário APRESENTAÇÃO DA DISCIPLINA... 4 OBJETIVO DA DISCIPLINA... 4 TÓPICOS DO SEMESTRE... 4 METODOLOGIA... 4 AVALIAÇÃO... 4 DATAS IMPORTANTES... 5 BIBLIOGRAFIA BÁSICA... 5 BIBLIOGRAFIA COMPLEMENTAR... 5 1. INTRODUÇÃO À LÓGICA... 6 2. ALGORITMOS... 8 2.1. Formas de representação de um algoritmo... 9 3. FLUXOGRAMA... 10 4. PSEUDOCÓDIGO... 15 5. LINGUAGEM C... 19 5.1. BREVE HISTÓRICO... 19 5.2. AMBIENTE DE DESENVOLVIMENTO... 19 5.3. TIPOS DE DADOS... 20 5.4. DECLARAÇÃO DE VARIÁVEIS... 21 5.5. OPERADORES... 21 5.5.1. Atribuição... 21 5.5.2. Aritméticos... 21 5.5.3. Incremento e Decremento... 22 5.5.4. Aritmético de Atribuição... 22 5.5.5. Relacionais... 22 5.5.6. Lógicos - && - E... 22 5.5.7. Lógicos - - OU... 23 5.5.8. Lógicos -! NÃO... 23 5.5.9. Condicional Ternário... 23 5.5.10. Tabela de Precedência... 23 6. ESTRUTURA SEQUENCIAL... 24 6.1. SAÍDA DE DADOS... 24 7.1.1. printf()... 24 6.1.2. puts()... 26 6.1.3. putchar()... 27 6.2. ENTRADA DE DADOS... 29 6.2.1. scanf()... 29 6.2.2. gets()... 31 6.2.3. getchar()... 32 6.2.4. getche()... 33 6.2.5. getch()... 34 7. ESTRUTURA DE DECISÃO... 37 7.1. IF()... 37 7.2. IF() ELSE... 38 7.3. ENCADEAMENTO DE IF()... 41 7.4. SWITCH()... 42 8. ESTRUTURA DE REPETIÇÃO... 52 8.1. FOR()... 52 8.2. WHILE()... 55 8.3. DO... WHILE()... 57 8.4. COMANDO BREAK... 58 2

8.5. COMANDO CONTINUE... 59 APÊNDICE A BIBLIOTECAS... 63 APÊNDICE B - FUNÇÕES MATEMÁTICAS... 64 3

Apresentação da Disciplina Nome da Disciplina: Computação Professora MSc. Viviane Guimarães Ribeiro E-mail: viviane_umc@yahoo.com.br Objetivo da Disciplina Capacitar os alunos fornecendo as habilidades, os conhecimentos e as competências em informática necessárias para que possa utilizar o computador como ferramenta na vida acadêmica e profissional. O aluno deverá adquirir conhecimento em conceitos básicos de programação estruturada utilizando a linguagem C. Tópicos do Semestre 1) Introdução à Lógica 2) Algoritmo e Programação Estruturada: Conceitos 3) Representação de Algoritmos a. Descrição Narrativa b. Fluxograma c. Pseudocódigo / Português Estruturado / Portugol 4) Estrutura Seqüencial 5) Estruturas de Decisão a. Simples b. Composta c. Decisão Encadeada d. Múltipla Escolha 6) Estrutura de Repetição a. Com Variável de Controle b. Com Teste no Início e no Fim 7) Linguagem C a. Conceitos b. Tipos de Dados, Variáveis, Operadores c. Comandos de Entrada e Saída d. Comando de Decisão if e. Comando de Decisão switch f. Comando de Repetição for g. Comando de Repetição while h. Comando de Repetição - do.. while Metodologia Aulas expositivas e práticas em laboratório. Avaliação M1 = P1 (70%) + AP (20%) + Listas (10%) ND = P2 (70%) + AP (20%) + Listas (10%) M2 = ND (70%) + PI (30%) Média Semestral = (M1 + M2 * 2) / 3 Onde: P1 e P2 são provas individuais agendadas. Profa. MSc. Viviane Guimarães Ribeiro 4

AP são as atividades práticas realizadas em sala (sem a necessidade de agendamento prévio) ou em casa. PI prova interdisciplinar agendada pela gestão do curso. Listas exercícios individuais realizados em casa entregues em datas préestabelecidas. Datas Importantes P1 10/04 P2 12/06 Recuperação 26/06 OBS1: Não será aplicada prova substitutiva. OBS2: A disciplina tem caráter acumulativo, portanto em todas as provas será cobrado todo o conteúdo estudado até o momento no semestre. Bibliografia Básica SALIBA, Walter Luiz Caram, Técnicas de Programação: Uma abordagem estruturada, Makron Books, São Paulo, 1993-2005. GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho, Algoritmos e Estruturas de Dados, Livros Técnicos e Científicos, Rio de Janeiro, 1994. PEREIRA, Silvio do Lago, Algoritmos e Lógica de Programação em C: uma abordagem didática, Editora Érica, São Paulo, 2010. BOENTE, Alfredo, Aprendendo a programar em linguagem C do básico ao avançado, Brasport, Rio de Janeiro, 2003. SCHILDT, Herbert, C completo e total, Pearson Makron Books, São Paulo, 2004 Bibliografia Complementar FARRER, H. et all, Algoritmos Estruturados, Livros Técnicos e Científicos, Rio de Janeiro, 1999. MANZANO, José Augusto Navarro Garcia; OLIVEIRA, Jayr Figueiredo de, Algoritmos: Lógica para desenvolvimento de programação de computadores, Editora Érica, São Paulo, 2004. HICKSON, Rosângela, Aprenda a programar em C, C++ e C#, Editora Campus, Rio de Janeiro, 2002. SCHILDT, Herbert, Linguagem C: Guia do usuário, McGraw-Hill, São Paulo, 1986. PUGA, Sandra; RISSETTI, Gerson, Lógica de Programação e Estrutura de Dados, Pearson Prentice Hall, São Paulo, 2003. Profa. MSc. Viviane Guimarães Ribeiro 5

1. Introdução à Lógica A palavra lógica é originária do grego logos, que significa linguagem racional. De acordo com o dicionário Michaelis, lógica é a análise das formas e leis do pensamento, mas não se preocupa com a produção do pensamento, quer dizer, não se preocupa com o conteúdo do pensamento, mas sim com a forma deste, isto é, com a maneira pela qual um pensamento ou uma ideia são organizados e apresentados, possibilitando que cheguemos a uma conclusão por meio do encadeamento dos argumentos. Os argumentos podem ser dedutivos ou indutivos. Os argumentos indutivos são aqueles com que, a partir dos dados, se chega a uma resposta por meio da analogia, ou seja, pela comparação com algo conhecido, porém esse tipo de raciocínio não oferece certeza de que a resposta será de fato verdadeira. É necessário conhecer os fatos ou as situações para que se possa fazer a comparação. Por exemplo: ontem não havia nuvens no céu e não choveu. Hoje não há nuvens no céu, portanto não vai chover. Já os argumentos dedutivos são aqueles cuja conclusão é obtida como conseqüência das premissas, isto é, por meio da análise das situações ou fatos, pode-se obter a resposta. Trabalha-se com a forma das sentenças, sem que haja a necessidade do conhecimento prévio das situações ou fatos. Por exemplo: Joana é uma mulher. As mulheres são seres humanos. Logo, Joana é um ser humano. Desde os tempos primitivos o homem utiliza-se do raciocínio lógico para a realização de suas atividades. Isso é comprovado pelo fato de ele ter estabelecido sequências adequadas para a realização de suas tarefas com sucesso. Podemos citar alguns exemplos relacionados às suas atividades do dia a dia: Uma pessoa adulta, para tomar banho, primeiro tira a roupa para não molhá-la e também para estabelecer contato direto entre sua pele e a água. Uma criança, desde pequena, aprende que, para chupar uma bala, é preciso tirá-la da embalagem. A lógica é aplicada a diversas ciências. Na informática e na computação, aplica-se a todas as suas áreas, para a construção e funcionamento do hardware e do software. Por exemplo, na construção de um circuito integrado para o teclado, trabalha-se com o conceito de portas lógicas para a verificação da passagem ou não de pulsos elétricos, a fim de que seja estabelecida uma comunicação entre os componentes. Já na construção de software, é por meio do raciocínio lógico que o homem constrói algoritmos que podem ser transformados em programas de computador capazes de solucionar problemas cada vez mais complexos. Como foi visto anteriormente, a lógica preocupa-se com a forma da construção de pensamento. Isto permite que se trabalhe com variáveis para que se possa aplicar o mesmo raciocínio a diferentes problemas. Por exemplo: João é cientista. Todo cientista é estudioso. Logo, João é estudioso. Substituindo as palavras João e estudioso por A e B: A é cientista. Todo cientista é B. Logo, A é B. O raciocínio lógico nos conduz a uma resposta que pode ser verdadeiro ou falso. Na construção de algoritmos para a solução de problemas computacionais, trabalha-se com esse tipo de raciocínio. As informações a serem analisadas são representadas por variáveis que posteriormente receberão valores. As variáveis, por sua vez, representarão as premissas. Por exemplo: Dados dois valores quaisquer, deseja-se saber qual é o maior. Os dois valores são representados pelas variáveis A e B. Analisa-se o problema a fim de averiguar qual é a melhor maneira de descobrir a solução, então se monta a sequência para Profa. MSc. Viviane Guimarães Ribeiro 6

que seja verificada a questão. Para descobrir a solução, pode-se partir de problemas similares já resolvidos e, por analogia, aplicar o mesmo método ao problema atual, ou podem-se estudar formas de resolvê-lo buscando dados com especialistas no assunto em questão. Neste caso, vamos substituir as variáveis por valores conhecidos, apenas como modelo para facilitar o entendimento do raciocínio aplicado: A será substituída por 7 e B, por 19. Para que seja verificado o maior valor, deve-se fazer uma comparação, por exemplo: 7 é maior que 19? Logo tem-se a resposta falso. Então, pode-se concluir que 19 é o maior número entre os dois. Quando os valores são desconhecidos, na representação para a solução do problema, trabalha-se apenas com as variáveis: A é maior que B? Se a resposta é verdadeiro, A é o maior valor. Se a resposta é falso, B é o maior valor. Exercícios 1. Dadas as premissas a seguir, verifique quais são as sentenças que representam a conclusão correta: I- Cavalos são animais. Animais possuem patas, Logo: a. Cavalos possuem patas. b. Todos os animais são cavalos. c. Os cavalos possuem quatro patas. II- Retângulos são figuras que têm ângulos. Temos uma figura sem nenhum ângulo. Logo: a. Essa figura pode ser um circulo. b. Não é possível tirar conclusões. c. Essa figura não é um retângulo. III- Se o verde é forte, o vermelho é suave. Se o amarelo é suave, o azul é médio. Mas ou o verde é forte ou o amarelo é suave. Forte, suave e médio são as únicas tonalidades possíveis. Logo: a. O azul é médio. b. Ou o vermelho é suave ou o azul é médio. c. O amarelo e o vermelho são suaves. 2. Analise e descreva uma maneira de mover os discos do pino A para o pino C, usando o pino B como espaço auxiliar, de modo que: a. apenas um disco seja movido de cada vez; b. nenhum disco seja posicionado sobre outro disco de diâmetro menor; c. os discos sejam imediatamente transferidos de um pino para o outro. Profa. MSc. Viviane Guimarães Ribeiro 7

2. Algoritmos Um algoritmo é uma sequência lógica de instruções que devem ser seguidas para a resolução de um problema ou para a execução de uma tarefa. Os algoritmos são amplamente utilizados nas disciplinas ligadas à área de ciências exatas. No dia a dia, as pessoas utilizam-se de algoritmos de maneira intuitiva, sem que haja a necessidade de planejar previamente a sequência de passos para a resolução das tarefas quotidianas. Dentre os inúmeros exemplos existentes, podemos citar: 1. Quando uma pessoa prepara um bolo, segue uma receita, que nada mais é do que um algoritmo em que casa instrução é um passo a ser seguido para que o prato fique pronto com sucesso: Bata 4 claras em neve; Adicione 2 xícaras de açúcar; Adicione 2 xícaras de farinha de trigo, 4 gemas, 1 colher de fermento e 2 colheres de chocolate; Bata por 3 minutos; Unte uma assadeira com margarina e farinha de trigo; Coloque o bolo para assar durante 20 minutos em temperatura média. 2. Um motorista que necessita efetuar a troca de um pneu furado segue uma rotina para realizar esta tarefa: Verifica qual pneu está furado; Posiciona o macaco para levantar o carro; Pega o estepe; Solta os parafusos; Substitui o pneu furado; Recoloca os parafusos; Desce o carro; Guarda o pneu furado e as ferramentas utilizadas. Porém, no contexto da ciência da computação, estamos interessados em definir algoritmos que serão executados por computadores e não por pessoas. Assim, ao definir um algoritmo computacional, precisamos nos restringir a um conjunto bastante limitado de passos (ou operações) que um computador é capaz de executar. Além disso, precisamos de uma notação que permita descrever precisamente estes passos, sem nenhuma ambiguidade. Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: entrada de dados, processamento e saída de dados. Entrada Processamento Saída Imagine o seguinte problema: Calcular a média final de um aluno. Pelas provas os alunos receberão 2 notas: N1, N2. Onde: Média Final = (nota1 + nota2 * 2 )/3 a) Quais são os dados de entrada? R: Os dados de entrada são nota1 e nota2. b) Qual será o processamento a ser utilizado? R: O procedimento será multiplicar a nota2 por dois, somar o resultado com o valor da nota1 e dividir o resultado da soma por 3. Profa. MSc. Viviane Guimarães Ribeiro 8

c) Quais serão os dados de saída? R: O dado de saída será a média final 2.1. Formas de representação de um algoritmo Um algoritmo pode ser representado das seguintes maneiras: Descrição Narrativa: utiliza linguagem natural para especificar os passos para a realização das tarefas. Isso dá margens a más interpretações e ambigüidades. Não é muito utilizada. Fluxograma: é uma forma universal de representação, pois utiliza de formas geométricas para ilustrar os passos a serem seguidos para a resolução dos problemas. Bastante utilizado, é também chamados por alguns autores de diagrama de blocos. Diagrama de Chapin (Diagrama Nassi-Shneiderman/Diagrama N-S): apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada. Esse tipo de diagrama não é muito utilizado, pois é muito difícil representar recursividade, entre outros procedimentos. Pseudocódigo (Portugol/Português Estruturado): utiliza linguagem estruturada. É bastante utilizado para representação da resolução de problemas computacionais. Profa. MSc. Viviane Guimarães Ribeiro 9

3. Fluxograma É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintas. Tal propriedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. A seguir são apresentados os principais símbolos e suas descrições. É importante lembrar que existem pequenas diferenças entre as simbologias utilizadas pelos diferentes autores. Início/Fim Entrada de dados ou Saída de dados ou Atribuição Profa. MSc. Viviane Guimarães Ribeiro 10

Se Escolha Decisão Profa. MSc. Viviane Guimarães Ribeiro 11

Para Enquanto Repetição Repita Em um fluxograma, os passos de um algoritmo são representados por símbolos e a ordem de execução desses passos é representada por setas conectando os símbolos. Cada símbolo pode conter uma anotação indicando sua finalidade específica. Profa. MSc. Viviane Guimarães Ribeiro 12

Exemplo 1: Note que todo dado manipulado pelo computador deve estar armazenado em alguma posição de sua memória. Uma posição de memória contendo um dado que pode ser alterado pelo algoritmo é denominada variável. Basicamente uma variável possui três atributos: um nome, um tipo de dado associado à mesma e a informação por ela guardada. Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. Adotaremos as seguintes regras: Um nome de variável deve necessariamente começar com uma letra; Um nome de variável não deve conter nenhum símbolo especial, exceto a sublinha ( _ ). Obviamente é interessante adotar nomes de variáveis relacionados às funções que serão exercidas pelas mesmas dentro de um programa. Outro atributo característico de uma variável é o tipo de dado que ela pode armazenar. Este atributo define a natureza das informações contidas na variável. Por último, há o atributo informação, que nada mais é do que a informação útil contida na variável. Uma vez definidos, os atributos nome e tipo de dados de uma variável não podem ser alterados e assim permanecem durante toda a sua existência, desde que o programa que a utiliza não seja modificado. Por outro lado, o atributo informação está constantemente sujeito a mudanças, de acordo com o fluxo de execução do programa. Por exemplo, se definirmos que uma determinada variável é chamada salário e é destinada a guardar números reais, é possível que seu conteúdo seja, num dado instante, igual a 1.500,00 e posteriormente modificado para 3.485,21, de acordo com o programa executado. Profa. MSc. Viviane Guimarães Ribeiro 13

Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória. Exercícios 1. Explique o que é uma variável e escreva a regra para criação de nome de variáveis em algoritmos. 2. Dados os identificadores (nomes das variáveis) abaixo, sublinhe apenas aqueles nomes que são aceitos em Algoritmos. VALOR SALARIO-LIQUIDO X X2 A1B2C3 1ºnome 1 3 x 4 Maria Km/h preço Nota Média XYZ SalarioLiquido preco Nota-do-aluno NoTa Algoritmo profissao 3. Escreva um algoritmo em Fluxograma para cada situação abaixo: a) Carlos precisa calcular a área de uma sala. Sabe-se que a sala é retangular. b) O professor de matemática precisa calcular a média de um aluno. Para tanto ele precisa levar em consideração 4 notas do aluno. c) Ler um número inteiro e imprimir seu sucessor e seu antecessor. d) Ler o saldo de uma aplicação e imprimir o novo saldo, considerando um reajuste de 1%. e) Ler duas variáveis inteiras e trocar o conteúdo entre elas apresentando o nome de cada variável com seu respectivo valor ao usuário. f) O preço de um produto ao consumidor é a soma do preço de custo e da porcentagem do imposto. Faça um algoritmo que leia o nome do produto, o custo de fábrica e a porcentagem do imposto. Exiba o nome do produto e o preço final ao consumidor. Profa. MSc. Viviane Guimarães Ribeiro 14

4. Pseudocódigo O pseudocódigo é um tipo de algoritmo que utiliza uma linguagem flexível, intermediária entre a linguagem natural e a linguagem de programação. Aqui, cada símbolo utilizado no fluxograma possui uma palavra chave equivalente, o que torna o fluxograma livre de ambiguidades. Esta forma de representação de algoritmos é mais rica em detalhes, como a definição dos tipos das variáveis usadas. Na verdade, esta representação é suficiente para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. Forma geral: Algoritmo <nome do algoritmo>; <declaração de variáveis>; <subalgoritmos> Início <corpo do algoritmo>; Fim Exemplo 1: Algoritmo Media; Var nota1, nota2, mf: real; Inicio Escreva ( Entre com a primeira nota: ); Leia (nota1); Escreva ( Entre com a segunda nota: ); Leia (nota2); mf (nota1 + nota2 * 2) / 3; Escreva ( Média final:, mf); Fim Identificação do algoritmo Declaração de variáveis Corpo do algoritmo Para definir o nome de um algoritmo, deve-se seguir a mesma regra para criação de nomes de variáveis, ou seja, o nome do algoritmo deve iniciar com uma letra e não conter caracteres especiais. Todas as variáveis utilizadas no algoritmo devem ser declaradas. É neste momento que definimos o nome da variável e o tipo de dado que será armazenado na mesma. Na confecção de algoritmos, utilizamos os tipos de dados primitivos (literal, lógico, inteiro e real), uma vez que os algoritmos apenas representam a solução dos problemas. Já na confecção de programas existem desdobramentos para esses tipos de dados a fim de adequá-los melhor ao propósito de cada linguagem e à resolução prática dos problemas. Veja na tabela a seguir os tipos de dados primitivos utilizados em algoritmos. Tipo de Dados Definição Capacidade de armazenamento inteiro Representa números inteiros 2 bytes = 2 8 x 2 8 = 65.536 (sem casas decimais) positivos possibilidades (-32.768 à 32.767). ou negativos. real literal Representa números reais (com casas decimais) positivos ou negativos. Poderá receber letras, números e símbolos. OBS: Os números armazenados 4 bytes = 2 8 x 2 8 x 2 8 x 2 8 = 4.294.967.296 possibilidades (-3,4E-38 à +3,4E+38). 1 byte para cada caracter necessário. Profa. MSc. Viviane Guimarães Ribeiro 15

lógico em uma variável cujo tipo de dado é literal não podem ser utilizados para cálculo. Poderá ser verdadeiro (1) ou falso (0) 1 byte O corpo do algoritmo é a área reservada para a resolução do problema. Nesta parte, devem-se escrever todos os passos lógicos necessários para solucionar o problema, tais como: representar a entrada de valores para as variáveis; representar as operações de atribuição, lógicas e aritméticas; representar a abertura e fechamento de arquivos; representar os laços de repetição; representar a exibição dos resultados; representar as estruturas de decisão; entre outros. Início/Fim Início Fim Entrada de dados Leia (<variável>); Saída de dados Escreva (<valor a ser impresso>); Atribuição <variável> <valor>; Se Se (<condição>) Então <Comando 1>; Senão <Comando 2>; Fim_Se Escolha Decisão Escolha (<variável>) Caso <valor_1>: <Comando 1>; Caso <valor_2>: <Comando 2>;... Caso <valor_n>: <Comando n>; Senão <Comando n + 1>; Fim_Escolha Profa. MSc. Viviane Guimarães Ribeiro 16

Para Para <var> de <início> até <fim> incr de <inc> faça <comando>; Fim_Para Enquanto Repetição Enquanto (<condição>) faça <comando>; Fim_Enquanto Repita Repita <comando>; até que (<condição>); Exercícios 1. Classifique os dados especificados abaixo de acordo com seu tipo (inteiro, real, literal ou lógico). 0.7845-0.0 +35987 abc.v..f..f. -0.0 32 +36 32.0-1 2. Preencha a Declaração de variáveis com o tipo de dados, levando em consideração os dados armazenados em cada uma das variáveis da tabela abaixo: Identificadores num1 num2 sexo letra Profissao nome media peso Conteúdo 100 4 F.V. Médico Fernanda 5.7 67.8 (Dados) Var num1, num2: ; sexo: ; letra: ; Profissao,nome: ; media, peso: ; 3. Escreva um algoritmo em Pseudocódigo para cada situação abaixo: a. O professor de matemática precisa calcular a média de um aluno. Para tanto ele precisa levar em consideração 4 notas do aluno. b. Ler um número inteiro e imprimir seu sucessor e seu antecessor. c. Ler duas variáveis inteiras e trocar o conteúdo entre elas apresentando o nome de cada variável com seu respectivo valor ao usuário. Profa. MSc. Viviane Guimarães Ribeiro 17

d. O preço de um produto ao consumidor é a soma do preço de custo e da porcentagem do imposto. Faça um algoritmo que leia o nome do produto, o custo de fábrica e a porcentagem do imposto. Exiba o nome do produto e o preço final ao consumidor. e. Dados o tamanho de um arquivo (em bits), bem como a velocidade da conexão (em bits por segundo), informe o tempo necessário para o download do arquivo. f. Dados um capital C, uma taxa de juros mensal fixa J e um período de aplicação em meses M, informe o montante F no final do período (F = C * (1 + J/100) M ). Profa. MSc. Viviane Guimarães Ribeiro 18

5. Linguagem C Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalha passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa nada mais é que um algoritmo escrito numa forma compreensível pelo computador. Um programa pode ser escrito em diversas linguagens de programação, como por exemplo: Pascal, Fortran, COBOL, Clipper, Basic, C, etc. Durante este semestre iremos estudar a linguagem C. 5.1. Breve Histórico C é uma linguagem de programação cujas instruções consistem de termos semelhantes a expressões algébricas, acrescidas de certas palavras chave em inglês. C foi desenvolvida a partir de duas linguagens anteriores, a BCPL e B, criadas no final da década de 60. Ambas as linguagens eram definidas sem tipo, ou seja, qualquer dado ocupava um mesmo espaço na memória. A linguagem C foi criada por Dennis Ritchie e Ken Thompson, em 1972, no centro de pesquisa da Bell Laboratories. Sua primeira utilização importante foi a reescrita do sistema Unix. Em meados da década de 70, o Unix foi liberado para utilização nas universidades, dando o impulso para o sucesso da linguagem. ANSI C (American National Standards Institute) é a versão da linguagem C padronizada em 1989 nos EUA como também no mundo através da International Standards Organization ISO. C++ é uma linguagem derivada da linguagem C. O conjunto de instruções que fazem parte da linguagem C também é parte de C++. Os elementos principais que foram adicionados à linguagem C para dar origem a C++ consistem na ideia de programação orientada ao objetos. Qualquer programa em C compilado no padrão ANSI também pode ser compilado em C++, ou seja, C e C++ são compatíveis. 5.2. Ambiente de Desenvolvimento Um compilador, também chamado de ambiente de desenvolvimento, é um programa que interpreta os comandos escritos em uma linguagem de programação e os converte em uma forma que o computador seja capas de executar. Em geral, há vários compiladores diferentes para uma mesma linguagem de programação. Como exemplo de compiladores para a linguagem C, podemos citar o Turbo C (proprietário), o DEV C (gratuito) e o Pelles C (gratuito). No decorrer deste semestre, utilizaremos o ambiente de desenvolvimento Pelles C 1. 5.2.1 Criação de programas utilizando o Pelles C Para utilizar um programa usando o compilador Pelles C for Windows, você deve proceder da seguinte forma: 1º passo: inicie a execução do programa Pelles C; 2º passo: no menu desse programa, selecione a opção File New Project. 3º passo: na janela New Projects, selecione Win32 Console program (EXE), digite o nome de projeto e clique no botão OK. 4º passo: no menu, selecione a opção File New Source code. 5º passo: digite o programa em linguagem C. 6º passo: no menu, selecione a opção File Save as, digite o nome do programa (que pode ser o mesmo dado ao projeto) e clique no botão Salvar. 1 O compilador Pelles C for Windows pode ser obtido gratuitamente em www.smorgasbordet.com/pellesc Profa. MSc. Viviane Guimarães Ribeiro 19

7º passo: clique no botão Sim, da caixa que apresenta a pergunta Do you want to add the file... to the current Project?. 8º passo: no menu, clique no botão Execute ( ). 5.3. Tipos de dados Tipo de Dado Quantidade de Byte Descrição char 1 Armazena caracteres alfanuméricos int 2 É utilizado para armazenar números inteiros negativos e positivos float 4 Armazena números com casas decimais (números reais) double 8 Armazena números com casas decimais (números reais) void 1 É utilizado como retorno de funções e tipo de ponteiros bool 1 Valor booleano. Pode assumir um dos dois valores: true ou false NOTA: esse é um tipo que foi adicionado recentemente pelo padrão ANSI-C++. Nem todos os compiladores suportam-no. Faixa de Equivalente em Abrangência Algoritmo -127 a 127 literal -32.767 a 32.767 inteiro Seis dígitos de real precisão Dez dígitos de real precisão - - true ou false lógico Profa. MSc. Viviane Guimarães Ribeiro 20

5.4. Declaração de Variáveis Um programa em linguagem C não funciona se você não declarar suas variáveis. As variáveis são declaradas em qualquer lugar do programa, desde que antes de serem utilizadas. Uma declaração de variável consiste no nome de um tipo seguido do nome da variável (identificador), seguido de ponto-e-vírgula. Por exemplo: int contador; float acumulador; Inicializar uma variável significa atribuir um valor a ela na mesma instrução de sua declaração. Utiliza-se o operador de atribuição (=) para a definição do valor inicial. Exemplo: int contador = 0; float tempo = 30.00; Você pode usar quantos caracteres quiser para um nome de variável, sendo o primeiro caractere obrigatoriamente uma letra ou o sublinhado. Somente os 32 primeiros caracteres de um nome de variável são significativos e não é permitido o uso de uma palavra-chave da linguagem. Em C, letras maiúsculas e minúsculas são diferentes. Exemplo de um programa com definição de variáveis: #include <stdio.h> main() float j = 650.55; printf ("Variavel float = %f \n",j); int i = j; printf ("Variavel int = %d \n",i); 5.5. Operadores Um operador é um símbolo usado para criar expressões, a partir de constantes e variáveis. 5.5.1. Atribuição É o sinal de igual (=). Atribui a expressão da direita à variável à sua esquerda. Em C podem ocorrer atribuições múltiplas. Operação Algoritmo Linguagem C Atribuição = Ex.: y = 3; y = x = 3; y = ( x = 3 ); 5.5.2. Aritméticos Existem operadores denominados binários (trabalham com dois operandos) e unários (funcionam com um operando). Profa. MSc. Viviane Guimarães Ribeiro 21

Operadores aritméticos binários Operação Algoritmo Linguagem C Soma + + Subtração - - Multiplicação * * Divisão inteira div / Divisão real / / Resto da divisão inteira mod % Operadores aritméticos unários Operação Algoritmo Linguagem C Menos unitário (mult. o valor - - ou variável por -1) 5.5.3. Incremento e Decremento Incrementam (++) ou decrementam ( ) a variável operando de 1. Podem ser prefixado ou pós- fixado. Ex.: x = x + 1; ++ x; ou x++; adiciona 1 a x 5.5.4. Aritmético de Atribuição regra: Combinam operações aritméticas com atribuições. Compactam as operações. Segue a Ex.: 5.5.5. Relacionais variável operação= expressão i += 2; equivale a i = i + 2 x *= y + 1; equivale a x = x * (y + 1) t /= 2.5; equivale a t = t/2.5 p %= 5; equivale a p = p % 5 Operação Algoritmo Linguagem C Maior > > Maior ou igual >= >= Menor < < Menor ou igual <= <= Igual = == Diferente <>!= Os operadores relacionais têm precedência menor que os aritméticos. 5.5.6. Lógicos - && - E Resulta 1 (V) somente se as duas expressões forem verdadeiras. A B Algoritmo Linguagem C A e B A&&B 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 Profa. MSc. Viviane Guimarães Ribeiro 22

5.5.7. Lógicos - - OU Resulta 0 (F) somente se as duas expressões forem falsas. A B Algoritmo Linguagem C A ou B A B 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 5.5.8. Lógicos -! NÃO Resulta 1 (V) somente se a expressão for falsa. A B Algoritmo Linguagem C não A não B!A!B 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 5.5.9. Condicional Ternário É o único que opera sobre três expressões. exp1? exp2 : exp3; A exp1 é avaliada primeiro. Se for verdadeira, exp2 é avaliada e seu resultado é o valor da expressão como um todo. Se exp1 for zero (falso), exp3 é avaliada e será o valor da expressão condicional. Ex: max = (a > b)?a : b; a max. Neste exemplo a variável que contém o maior valor numérico entre a e b será atribuída 5.5.10. Tabela de Precedência O nível de precedência dos operadores é avaliado da esquerda para a direita. Os parênteses podem ser utilizados para alterar essa ordem, sendo indicado seu uso a fim de tornar o programa (a expressão) mais legível. A tabela abaixo mostra a precedência dos operadores vistos até agora. Maior ()!, ++, --, -(unário) *, /, % +, - ==,!= &&?: Menor +=, -=, *=, /= Profa. MSc. Viviane Guimarães Ribeiro 23

6. Estrutura Sequencial As operações de entrada e saída de dados permitem a interação de um programa e/ou algoritmo com o usuário, seja permitindo que o mesmo digite valores (entrada de dados) ou exibindo informações (saída de dados). Estas operações são representadas tanto em algoritmos (fluxograma e pseudocódigo) quanto em linguagem C. 6.1. Saída de Dados Esta operação permite que o programa exiba mensagens ou valores de variáveis, através do monitor. Fluxograma Pseudocódigo Escreva ( Boa noite ); Escreva (x); Escreva ( Soma:, s); Em linguagem C, existem 3 funções (comandos) diferentes que permitem a saída de dados: printf(), puts() e putchar(). 7.1.1. printf() O printf() é uma função utilizada para saída de informações. É a função mais genérica de saída de dados, pois pode ser usado em qualquer situação. A função printf() requer a utilização dos códigos de formatação de tipos de variáveis. Código printf() Formato %c Apenas um caracter. %d Decimal inteiro. %e Notação científica. %f Ponto flutuante float ou double. %g %e ou %f (o mais curto). %o Octal. %s Cadeia de caracteres String. %u Decimal sem sinal. %x Hexadecimal. Além dos códigos de formatação a função printf() permite a utilização de códigos especiais para a exibição de caracteres específicos. Profa. MSc. Viviane Guimarães Ribeiro 24

Códigos especiais Significado \n Nova linha. \t Tab. \b Retrocesso. \ Aspas. \\ Barra invertida. \f Salta página de formulário. \0 Nulo. \x Mostra caracter hexadecimal. \a Produz o som de um beep. Exemplo 1: Fluxograma Algoritmo Algoritmo Exemplo1; Var x: inteiro; Inicio x 2; Escreva ( Tenho,x, irmãos. ); Fim Linguagem C #include <stdio.h> main() int x = 2; printf("tenho %d irmaos\n", x); Profa. MSc. Viviane Guimarães Ribeiro 25

Exemplo 2: Fluxograma Algoritmo Algoritmo Exemplo2; Inicio Escreva ( Juan tem 25 anos de idade. ); Fim Linguagem C #include <stdio.h> main() printf("%s tem %d anos de idade\n", "Juan",25); Exemplo 3: Fluxograma Algoritmo Algoritmo Exemplo3; Inicio Escreva ( A letra j ); Escreva ( pronuncia-se jota ); Fim Linguagem C #include <stdio.h> main() printf("a letra %c", 'j'); printf(" pronuncia-se %s\n", "jota"); 6.1.2. puts() Representa a saída de uma única literal por vez, seguida do caracter de nova linha, ou seja, a função muda de linha automaticamente sem que haja a necessidade do pressionamento da tecla de entrada de dados, ENTER. Profa. MSc. Viviane Guimarães Ribeiro 26

Exemplo 4: Fluxograma Algoritmo Algoritmo Exemplo4; Inicio Escreva ( Gabriel ); Fim Linguagem C #include <stdio.h> main() puts("gabriel"); Exemplo 5: Fluxograma Algoritmo Algoritmo Exemplo5; Inicio Escreva ( Digite seu nome ); Fim Linguagem C #include <stdio.h> main() puts("digite seu nome"); 6.1.3. putchar() Representa a saída de apenas um caracter na tela do computador e não acrescenta uma nova linha automaticamente. As duas instruções seguintes são equivalentes. putchar( w ); printf( %c, w ); Profa. MSc. Viviane Guimarães Ribeiro 27

Exemplo6: Fluxograma Algoritmo Algoritmo Exemplo6; Inicio Escreva ( A primeira letra ); Escreva ( do alfabeto é... ); Escreva ( a ); Fim Linguagem C #include <stdio.h> #include <conio.h> main() _clrscr(); printf("a primeira letra \n"); puts("do alfabeto eh..."); _gotoxy(5,4); putchar('a'); Neste exemplo foi utilizada a biblioteca <conio.h> que permite ao programador usar a função clrscr() para limpar a tela do computador e a função gotoxy(col,lin) para posicionar o cursor em um ponto de coluna e linha na tela do computador. Note que, segundo a convenção adotada pelo compilador Pelles C, todas as funções que não são padrão em C têm seus nomes iniciados com um caracter de sublinha ( _ ). Profa. MSc. Viviane Guimarães Ribeiro 28

6.2. Entrada de Dados Esta operação permite que o usuário forneça dados ao programa, através de sua interação com o teclado. Fluxograma Pseudocódigo Leia (x); Leia (n1, n2); Leia (nome); Em linguagem C, existem 5 funções (comandos) diferentes que permitem a entrada de dados: scanf(), gets(), getchar(), getche() e getch(). 6.2.1. scanf() É utilizada para permitir ao usuário realizar uma entrada de dados, geralmente através do teclado. Assim como a função printf() requer a utilização dos códigos de formatação de tipos de variáveis. Código printf() Formato %c Apenas um caracter. %d Decimal inteiro. %e Notação científica. %f Ponto flutuante float ou double. %g %e ou %f (o mais curto). %o Octal. %s Cadeia de caracteres. %u Decimal sem sinal. %x Hexadecimal. Profa. MSc. Viviane Guimarães Ribeiro 29

Exemplo: Fluxograma Algoritmo Algoritmo Soma; Var a, b, soma: inteiro; Inicio Escreva ( Entre com dois números: ); Leia (a,b); soma a + b; Escreva ( Soma=, soma); Fim Linguagem C #include <stdio.h> main() int a, b, soma; puts ("Entre com dois números:"); scanf("%d %d", &a, &b); soma = a+b; printf("soma= %d \n", soma); Na função scanf() utiliza-se o & antes de cada variável para indicar o endereço de memória no qual o conteúdo da variável estará armazenado. Este é de uso obrigatório quando tratamos variáveis do tipo numérico (inteira ou real). Profa. MSc. Viviane Guimarães Ribeiro 30

6.2.2. gets() Essa função processa tudo que foi digitado até que a tecla ENTER seja pressionada. O caracter ENTER não é acrescentado à literal, mas sim identificada como término da mesa. Exemplo: Fluxograma Algoritmo Algoritmo Nome; Var nome: literal[35]; Inicio Escreva ( Digite seu nome: ); Leia (nome); Escreva ( Como vai, nome); Fim Linguagem C #include <stdio.h> #include <conio.h> main() char nome[35]; printf("digite seu nome:"); gets(nome); _clrscr(); printf("como vai %s\n",nome); Profa. MSc. Viviane Guimarães Ribeiro 31

6.2.3. getchar() Essa função é utilizada quando queremos efetuar a entrada de apenas um caracter, não dispensando a necessidade de se pressionar a tecla ENTER para finalizar. Exemplo: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva ( Digite uma tecla: ); Leia (ch); Escreva ( A tecla que você pressionou foi, ch); Fim Linguagem C #include <stdio.h> main() char ch; printf("digite uma tecla:"); ch = getchar(); printf("\n A tecla que voce pressionou foi %c \n",ch); Profa. MSc. Viviane Guimarães Ribeiro 32

6.2.4. getche() Essa função edita um caracter do teclado e permite que ele seja mostrado na tela do computador. É dispensável o pressionamento da tecla ENTER por parte do usuário. Isso já ocorre de forma automática. Exemplo: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva ( Digite uma tecla: ); Leia (ch); Escreva ( A tecla que você pressionou foi, ch); Fim Linguagem C #include <stdio.h> #include <conio.h> main() char ch; printf("digite uma tecla:"); ch = _getche(); _clrscr(); printf("\n A tecla que voce pressionou foi %c \n",ch); Profa. MSc. Viviane Guimarães Ribeiro 33

6.2.5. getch() Essa função permite que o usuário forneça um caracter através do teclado. Este caracter não será mostrado na tela do computador. Também é dispensável o pressionamento da tecla ENTER. Esta função também atende à necessidade como recurso de parada temporária da execução do programa. Exemplo: Fluxograma Algoritmo Algoritmo Tecla1; Var ch: literal[1]; Inicio Escreva ( Digite uma tecla: ); Leia (ch); Escreva ( A tecla que você pressionou foi, ch); Escreva ( A função getch() causou uma pausa no programa. ); Fim Linguagem C #include <stdio.h> #include <conio.h> main() char ch; printf("digite uma tecla:"); ch = _getch(); printf("\n A tecla que voce pressionou foi %c ",ch); _getch(); printf("\n A funcao getch() causou um pausa no programa.\n"); Profa. MSc. Viviane Guimarães Ribeiro 34

Exercícios 1. Observe o fluxograma abaixo e escreve o pseudocódigo equivalente. 2. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C para calcular o valor de y como função de x, segundo a função y(x)=3x+2, em um domínio real. 3. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que calcule e exiba o consumo médio de um automóvel (medido em km/l), dado que são conhecidos a distância total percorrida e o volume de combustível consumido para percorrê-la (medido em litros). 4. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C para calcular e exibir o quadrado de um número inteiro. 5. Considerando o programa abaixo execute a simulação (teste de mesa), preenchendo a tabela conforme os valores de entrada lançados em cada linha. #include <stdio.h> main() float X, Y, F; printf ("Entre com o valor de x: "); scanf ("%f", &X); printf ("Entre com o valor de y: "); scanf ("%f", &Y); F = (2 * X) + 3 * (Y * Y); printf ("Funcao = %.2f\n", F); X Y F 2 5 5 8 1 12 10 4 6. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que leia o saldo de uma aplicação e imprimir o novo saldo, considerando um reajuste de 15%. 7. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que receba o salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário. Profa. MSc. Viviane Guimarães Ribeiro 35

8. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que calcule e mostre a área de um circulo. Sabe-se que: A = π * R 2. 9. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que receba o ano de nascimento de uma pessoa e o ano atual, calcule e mostre: - A idade desta pessoa hoje; - A idade desta pessoa em 2015. 10. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que converta segundos em minutos e segundos. Por exemplo, 252 segundos equivalem a 4 minutos e 12 segundos. 11. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C para que, dados dois lados de um triângulo retângulo calcule e exiba a respectiva hipotenusa 12. Faça um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que receba o número de horas trabalhadas e o valor do salário mínimo. Calcule e mostre o salário a receber seguindo as regras abaixo: d. o valor da hora trabalhada vale a metade do salário mínimo; e. o salário bruto equivale ao número de horas trabalhadas multiplicado pelo valor da hora trabalhada; f. o imposto equivale a 3% do salário bruto; g. o salário a receber equivale ao salário bruto menos o imposto. 13. Dado o Fluxograma abaixo, indique o programa em linguagem C correto. A) ( ) #include<stdio.h> main() float a,b; printf( Digite um número: ); scanf( %f, &a); a = a % 100; printf( %f,b); B) ( ) #include<stdio.h> main() int a,b; printf( Digite um número: ); scanf( %d, a); a = a % 100; printf( %d,b); C) ( ) #include<stdio.h> main() int a,b; printf( Digite um número: ); scanf( %d, &a); b = a % 100; printf( %d,b); Profa. MSc. Viviane Guimarães Ribeiro 36

7. Estrutura de Decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Têm-se 2 tipos de estrutura de decisão: Se; Escolha. Em linguagem C, o equivalente ao Se é a função if() e o equivalente ao Escolha é a função switch(). 7.1. if() Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for verdadeiro (.V.), então um determinado conjunto de instruções (comandos compostos) é executado. Caso contrário, ou seja, quando o resultado da avaliação for falso (.F.), nada é executado e o fluxo de execução segue para o primeiro comando após o fim da estrutura. Fluxograma Pseudocódigo Linguagem C Se (condição) Então Comando 1; Fim_Se if (condição) Comando 1; Profa. MSc. Viviane Guimarães Ribeiro 37

Exemplo 1: Fluxograma Algoritmo Algoritmo Exemplo1; Var a: inteiro; Inicio Escreva ( Entre com o valor de A: ); Leia (a); Se (a<0) então Escreva ( O valor de A é menor que zero ); Fim_Se Fim Linguagem C #include <stdio.h> main() int a; printf("entre com o valor de A: "); scanf("%d",&a); if (a<0) printf("o valor de A eh menor que zero. \n"); 7.2. if() else Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for verdadeiro (.V.), então um determinado conjunto de instruções (comandos compostos) é executado. Caso contrário, ou seja, quando o resultado da avaliação for falso (.F.), um comando diferente é executado. Após a execução de uma das partes (verdadeira ou falsa) o fluxo de execução segue para o primeiro comando após o fim da estrutura. Profa. MSc. Viviane Guimarães Ribeiro 38

Fluxograma Pseudocódigo Linguagem C Se (condição) Então Comando 1; Senão Comando 2; Fim_Se if (condição) Comando 1; else Comando 2; Profa. MSc. Viviane Guimarães Ribeiro 39

Exemplo 2: Fluxograma Algoritmo Algoritmo Exemplo2; Var salario: real; Inicio Escreva ( Entre com o salario: ); Leia (salario); Se (salário>50000) então Escreva ( Você ganha bem ); senão Escreva ( Você precisa ganhar mais ); Fim_Se Fim Linguagem C #include <stdio.h> main() float salario; printf("entre com seu salario: "); scanf("%f",&salario); if(salario>50000) printf("voce ganha bem.\n"); else printf("voce precisa ganhar mais.\n"); Profa. MSc. Viviane Guimarães Ribeiro 40

7.3. Encadeamento de if() Trata-se de um recurso que permite ao usuário utilizar uma estrutura if dentro de outra obtendo, assim, diversas respostas possíveis. Exemplo 3: Fluxograma Pseudocódigo Algoritmo Encadeamento; Var num: inteiro; Inicio Escreva ( Entre com um número: ); Leia (num); Se (num = 0) Então Escreva ( Número zero. ); Senão Se ( num < 0) Então Escreva ( Número negativo. ); Senão Escreva ( Número positivo. ); Fim_Se Fim_Se Fim Profa. MSc. Viviane Guimarães Ribeiro 41

Linguagem C #include <stdio.h> main() int num; printf("entre com um numero: "); scanf("%d",&num); if(num == 0) printf("numero zero.\n"); else if(num<0) printf("numero negativo.\n"); else printf("numero positivo.\n"); 7.4. switch() A utilização do switch oferece inúmeras vantagens em relação a utilização da estrutura ninho de if s. Um exemplo prático é a facilidade de escrita de uma estrutura composta por múltiplas escolhas, que requer diversas alternativas, a partir de um certo programa de computador. Porém, a estrutura switch só pode ser utilizada quando estamos testando uma situação de igualdade para uma mesma variável. Fluxograma Profa. MSc. Viviane Guimarães Ribeiro 42

Pseudocódigo Linguagem C Escolha (variável) Caso <valor_1> Comando 1; Caso <valor_2> Comando 2;... Caso <valor_n> Comando n; Senão Comando n + 1; Fim_escolha switch (variável) case valor_1 : Comando 1; case valor_2 : Comando 2;... case valor_n : Comando n; default: Comando n + 1; Exemplo 4: Fluxograma Profa. MSc. Viviane Guimarães Ribeiro 43

Pseudocódigo Algoritmo Exemplo4; Var opcao: literal[1]; Inicio Escreva ( Entre com uma letra: ); Leia (opcao); Escolha (opcao) caso A : Escreva ( Letra A ); caso B : Escreva ( Letra B ); caso C : Escreva ( Letra C ); caso D : Escreva ( Letra D ); senão: Escreva ( Não é A, B, C nem D. ); Fim_Escolha Fim Linguagem C #include <stdio.h> #include <conio.h> main() char opcao; puts("entre com uma letra: "); opcao = _getch(); switch (opcao) case 'A': printf("letra A.\n"); case 'B': printf("letra B.\n"); case 'C': printf("letra C.\n"); case 'D': printf("letra D.\n"); default: printf("nao eh A, B, C nem D.\n"); Nesta estrutura é opcional a utilização da cláusula default para representar uma alternativa que significa Em nenhum dos casos anteriores. Também é importante saber que a execução do comando switch segue os seguintes passos: 1. A expressão é avaliada. 2. Se o resultado da expressão for igual a uma constante, então a execução começará a partir do comando associado a essa constante e prossegue com a execução de todos os comandos até o fim do switch, ou até que se encontre uma instrução de parada denominada break. 3. Se o resultado da expressão não for igual a nenhuma das constantes e já estiver sido incluída no comando switch a opção default, o comando associado ao default será executado. Caso contrário, isto é, se a opção default não estiver presente, o processamento continuará a partir do comando seguinte ao switch. Profa. MSc. Viviane Guimarães Ribeiro 44

Linguagem C #include <stdio.h> #include <conio.h> main() char opcao; puts("entre com uma letra: "); opcao = _getch(); switch (opcao) case 'A': printf("letra A.\n"); break; case 'B': printf("letra B.\n"); break; case 'C': printf("letra C.\n"); break; case 'D': printf("letra D.\n"); break; default: printf("nao eh A, B, C nem D.\n"); Os operadores lógicos apresentados no item 6.6.6, 6.6.7 e 6.6.8 são normalmente utilizados em conjuntos com a estrutura de decisão if(). A seguir são apresentados exemplos de programas que fazem uso destes operadores. Exemplo 5: Fluxograma Profa. MSc. Viviane Guimarães Ribeiro 45

Algoritmo Algoritmo Exemplo5; Var n1,n2: inteiro; Inicio Escreva ( Digite dois números: ); Leia (n1,n2); Se ((n1=0)e(n2=0)) então Escreva ( Você forneceu apenas o número zeros ); senão Escreva ( Soma=, n1+n2); Fim_Se Fim Linguagem C #include <stdio.h> main() int n1, n2; printf("digite dois numeros: "); scanf("%d %d",&n1,&n2); if((n1==0)&&(n2==0)) printf("voce forneceu apenas o numero zero.\n"); else printf("soma = %d \n", n1+n2); Exemplo 6: Fluxograma Profa. MSc. Viviane Guimarães Ribeiro 46

Algoritmo Algoritmo Exemplo6; Var n1,n2: inteiro; Inicio Escreva ( Digite dois números: ); Leia (n1,n2); Se ((n1<0ou(n2<0)) então Escreva ( Pelo menos um dos números é negativo ); senão Escreva ( Você informou apenas números positivos ); Fim_Se Fim Linguagem C #include <stdio.h> main() int n1, n2; printf("digite dois numeros: "); scanf("%d %d",&n1,&n2); if((n1<0) (n2<0)) printf("pelo menos um dos numeros eh negativo.\n"); else printf("voce informou apenas numeros positivos.\n"); Exemplo 7: Fluxograma Profa. MSc. Viviane Guimarães Ribeiro 47

Algoritmo Algoritmo Exemplo7; Var n: inteiro; Inicio Escreva ( Digite um número: ); Leia (n); Se (nao(n<>0)) então Escreva (n, é igual de zero ); senão Escreva (n, é diferente a zero ); Fim_Se Fim Linguagem C #include <stdio.h> main() int n; printf("digite um numero: "); scanf("%d",&n); if(!(n!=0)) printf("%d eh igual a zero.\n", n); else printf("%d eh diferente de zero.\n",n); Exercícios 1. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que peça para o usuário informar dois números inteiros. Ao final do processamento, imprimir qual é o maior e o menor desses números. 2. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que peça para o usuário informar três números inteiros. Ordenar estes números de forma crescente e apresentar o resultado na tela. 3. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que peça para o usuário informar uma letra qualquer. No final do processamento, o programa deverá informar se a letra é vogal ou consoante. 4. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C para ler um número real, se este número for negativo, transforme-o em positivo e exiba o resultado ao operador. 5. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C para ler um número real equivalente ao comprimento de uma peça. Verificar se o valor lido encontra-se dentro da faixa de tolerância especificada, informando o resultado ao operador (limite especificado: 20 ± 0,000002 cm). 6. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que efetue o cálculo do reajuste de salário de um funcionário. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que 500, se o salário for maior ou igual a 500 e menor ou igual a 1000, seu reajuste será de 10%, caso seja ainda maior que 1000, o reajuste deverá ser de 5%. 7. Criar um algoritmo (Fluxograma e Pseudocódigo) e o programa em linguagem C que leia dois números fornecidos pelo usuário e uma operação matemática (soma, subtração, multiplicação e divisão). Efetuar a operação matemática escolhida utilizando os números fornecidos e exibir o resultado. Profa. MSc. Viviane Guimarães Ribeiro 48